[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужна небольшая помощь по коду
Страницы: 1, 2
wader
Доброго времени суток.
Помогите разобраться.

Вопшем есть примерно такой код.
(сразу скажу что никаких левых $rez2 = mysql_fetch_assoc($qur2) нет)
Суть в том что для каждого меню нужно вывести список всех категорий.
Все нормально но почемуто невыводит первой категории во внутреннем цыкла...


$sql1 = "SELECT * FROM menu ";
$qur1 = mysql_query($sql1);

$sql2= "SELECT * FROM content ";


while($rez1 = mysql_fetch_assoc($qur1))
{
echo 'bla-bla-bla';

$qur2 = mysql_query($sql2);
while($rez2 = mysql_fetch_assoc($qur2))
{
echo $rez["name"].'<br>';
}

}




При этом все вывести отдельно то всепозиции выводяться нормально.




$sql2= "SELECT * FROM content ";
$qur2 = mysql_query($sql2);

while($rez2 = mysql_fetch_assoc($qur2))
{
echo $rez["name"].'<br>';
}


Игорь_Vasinsky
1. цикл в цикле - зло. а при работе с БД - двойное зло.
2. без структуры и описания БД - ничёж не понять.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
wader
1-е что зло я это знаю но так как это для админки и по сути будет юзаться раз в столетие так что на скорость сайта никак не влияет )

2. Чесно говоря непонимаю как это поможет решить вопрос ))) Поскольку структура тут непричем ну да ладно.

1-я таблица меню

CREATE TABLE IF NOT EXISTS `menu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`link` varchar(255) NOT NULL,
`pos` int(11) NOT NULL,
`type_menu` varchar(10) NOT NULL,
`parent` varchar(10) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;


2-я таблица

CREATE TABLE IF NOT EXISTS `content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`text` text NOT NULL,
`date` date NOT NULL,
`user` int(11) NOT NULL,
`pos` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

inpost
без левых запросов у тебя работать не будет, потому что переменной rez нет в скрипте... есть rez1, rez2.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
wader
Да млин... в реальном скрипте там $rez1["name"] ошибка при копипасте.
Народ но вы все ищете не там где нужно... Это все работает кроме того что не выводит первой записи второго цыкла.

Ктото может сказать почему ?
Valick
Цитата
Ктото может сказать почему ?

потому что у вас скрипт с грубейшим нарушением логики
количество записей в таблицах одинаковое?
___
таблицы связаны по полю `pos` ?

_____________
Стимулятор ~yoomoney - 41001303250491
wader
Таблици связані по полю link где link cсылка на id content.
Количество записей необезательно должно быть одинаково. Поскольку не все меню обезателбно должны ссылаться на статью. (могут быть внешние ссылки.)
и не все статьи из content должны обезательно иметь меню.

Где грубейшие нарушения логики ?
Игорь_Vasinsky
если у таблиц есть поля по которым они связаны - то нужно использовать 1 запрос с JOIN и сделать выборку сразу из 2х таблиц.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Valick
Цитата
Таблици связані по полю link где link cсылка на id content.

почему в первой таблице link varchar, а не int?


_____________
Стимулятор ~yoomoney - 41001303250491
wader
Ок. Смотрите... я уже говорил что это для админки вопшемто. Суть всего этого. Первый цыкл просто выводит список менюшек. Второй для каждой менюшки делает select из списка статтей... если использовать JOIN то так неполучиться.


echo '<select name="link" id="link" style="width:50%; >';


$qur = mysql_query($sql);
while($rez = mysql_fetch_assoc($qur))
{
if ( $rez2["id"]==$rez1["link"])
{
echo '<option selected="1" value="'.$rez2["id"].'">'.$rez2["name"].'</option>'; //Если для менюшки уже выбрана эта статья
}
else
{
echo '<option value="'.$rez2["id"].'">'.$rez2["name"].'</option>'; //Остальные статьи на которые можно изменить линк менюшки.
}
}


echo'</select>';

Хотя все эти дебаты даже на чуточку не приблизили меня к решению основной проблемы с первой записью. Но возможно вы подскажете другой (правильный B) ) подход к выводу этого селекта тогда
wader
Цитата (Valick @ 17.03.2013 - 12:46)
Цитата

почему в первой таблице link varchar, а не int?



потому что link может выглядить и так http://phpforum.ru/ когда он являеться внешней ссылкой.
Игорь_Vasinsky
Цитата
потому что link может выглядить и так http://phpforum.ru/


Цитата
$rez2["id"]==$rez1["link"]


так выходит и id может такой вид принять?

поясните. Вы говорите что связь таблиц по link, при построении цикла вы сравниваете id и link


Если id из id из первой таблицы сравниваете с link из второй - запрос вида

SELECT *, `t1`.`id` as `tid1`, `t2`.`link` as `link2` FROM `table1` `t1` JOIN `t2` ON `tid1` = `link2`


речь об этом.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
wader

SELECT *, `t1`.`id` as `tid1`, `t2`.`link` as `link2` FROM `table1` `t1` JOIN `t2` ON `tid1` = `link2`


И как из этого запроса построить такую форму как мне нужна ? В этом запросе все впринципе правильно свяжеться но тогда я несмогу вывести каждый раз список остальных статтей...


связь не строгая и проверяеться сдесь
if ( $rez2["id"]==$rez1["link"]) 
Если совпадение есть значит статья пренадлежит єтому меню. ( но при этом надо вывести и остальные статьи в списке для возможности изминения привязки меню к статье.) И вот первая статья невыводиться почемуто.

Если нет значит просто выводиться тот линк который там вписан и все.
Valick
Игорь_Vasinsky, тут БД с нарушениями принципов организации. А это еще страшнее, чем совокупление двух выборок средствами РНР.


_____________
Стимулятор ~yoomoney - 41001303250491
Игорь_Vasinsky
ну тут башку сломаешь. изначально не правильная структура БД, запросы в цикле.

это я должен своё мышление искаверкать чтоб сначала понять что нужно, а потом помочь решить это.



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.