Здравствуйте, не могу разобраться, много перерыл. Пишу сейчас свой модуль платных тестов для одного движка, написал добавление тестов и вопросов отдельно. Интересует, вот создал я тест с ID 20, а вопросам дал в нужной колонке ID_TEST 20, как мне достать все вопросы именно с ID 20, при это еще и вывести их в инпуты вподрят.
И в чем затык? Ты говоришь, мне нужны которые номер двадцать, выбираешь из бд все, которые номер двадцать. Победа же.
Но их потом нужно вывести именно с вопросом 20,толи туплю уже вторые сутки, толи не знаю. Вот есть страница теста(еще пишу), нужно чтобы вывелись ответы и сам вопрос 20 ID. Какой запрос есть, чтобы именно вытащить все ID_TEST 20?
выбери интересующие тебя вопросы. По их айдишнику выбери все из второй таблицы через WHERE `test` IN (20, 21, 45, 100...). Потом сгруппируй в новый массив $arr[$row['test']] = $row; и выводи. Канэц.
Понял, сейчас попробую, просто PHP помню отлично, больше двух лет не работал с сайтами, а вот с запросами по базе и связкой их с PHP, проблемы))
Код (PHP): function testlist () { $mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DBNAME); $mysqli->query("SET NAMES utf8"); if ($result = $mysqli->query("SELECT * FROM dle_tq_test ORDER BY id DESC LIMIT 5")) { while( $row = mysqli_fetch_array($result) ) { printf("%s (%s)\n", $row['id'], $row['name']); } } else { return 0; } } Накатал такую кракозябру, но работает странно, подскажите, как правильно в шаблоне в движок вывести ответ. Вывожу так - $testlist = testlist();, но получается вверху страницы.
Ну я сначала её глобально вызываю в скрипте как переменную, а потом уже в нужном месте вставляю. Это по своим старым работам делаю, там всё работало, только в более больших масштабах, а вот в уменьшенном варианте, как-то не хочет... Думаю все функции в одном файле сделать, через вызов.
А вот тут уже вопрос хороший задам, как там array массив вывести через return к примеру, я пробовал, он мне возвращает "array"
Код (PHP): function testlist () { $mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DBNAME); $mysqli->query("SET NAMES utf8"); $result = $mysqli->query("SELECT * FROM dle_tq_test"); while( $row = mysqli_fetch_array($result) ) { $html = "<b>Номер Теста:</b> ".$row['id']." | <b>Название Теста:</b> ".$row['name']." | <b>Цена Теста:</b> ".$row['cost']; return $html; } } Намудрил что-то такое, теперь опять же, выводится только одна запись, как я понимаю, while не правильно у меня работает... Если я прав, то это из за retutn, но через echo, выводит строго вверху сайта и не помню как это устранить...
гугль, дай этому парню что он хочет. трах-тибидох-тибидох! Добавлено спустя 4 минуты: а еще есть волшебная конкатенация строк: Код (PHP): $s = 'трах-'; $s = $s . 'тибидох-'; $s .= 'тибидох'; echo $s; "." и в цикле будет работать Код (PHP): $array = ['трах-', 'тибидох-', 'тибидох']; $s = ''; foreach ($array as $x) { $s .= $x; } echo $s;
Код (PHP): function testlist () { $mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DBNAME); $mysqli->query("SET NAMES utf8"); $result = $mysqli->query("SELECT * FROM dle_tq_test"); while($row = mysqli_fetch_array($result)) { $html .= "<b>Номер Теста:</b> ".$row['id']." | <b>Название Теста:</b> ".$row['name']." | <b>Цена Теста:</b> ".$row['cost']."<br>"; } return $html; } Сделал так, работает отлично, но это как я думаю со стороны адекватного кода, не очень))
p@R@dox 55RU, мой пример реально выглядел бы лучше с implode, но у ТСа while(fetch()) , а не перебор массива.
в другой запрос. мысли правильными категориями ))) зависит от задачи. если ты можешь сделать без этого — сделай.
иногда я юзаю конкатенацию, иногда коплю в массив и имплодю. и тпкк и эдак хорошо. какой способ быстрее я не знаю, но подозреваю, что конкатенация. Добавлено спустя 1 минуту 24 секунды: я два дня вёл парня к умению формулировать, осозновать и находить... Добавлено спустя 2 минуты 43 секунды: в другой файл того же запроса передавать ничего не нужно - ему и так всё глобальное доступно. Но дело не в этом. В принципе не стоит мыслить такими категориями. Нужно понимать плюсы и минусы и принимать решение. Сессии обычно живут двадцать минут, кстати.