Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не выводит таблицу
Форумы портала PHP.SU » PHP » Программирование на PHP » Не выводит таблицу

Страниц (1): [1]
 

1. login - 21 Октября, 2009 - 18:42:48 - перейти к сообщению
есть код
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $host = "XXXXXXX";
  3. $user = "111111";
  4. $password = "11111";
  5. $db="a23919_1";
  6.  
  7. // Производим попытку подключения к серверу MySQL:
  8. if (!mysql_connect($host, $user, $password))
  9. {
  10. echo "<h2>MySQL Error!</h2>";
  11. }
  12.  
  13. // Выбираем базу данных:
  14.  
  15. // SQL-запрос:
  16. $q = mysql_query ("SELECT * FROM Articles");
  17.  
  18. // Выводим таблицу:
  19. for ($c=0; $c<mysql_num_rows($q); $c++)
  20. {
  21. echo "<b>$f[id][$c]</b>";
  22. ?>

я так понимаю должны вывести все ид в столбце. но не чего просто не происходит, база просто подключается, выбирается таблица и всё. вообще кто может объяснить, как выводятся записи из базы чтоб потом это были ссылки. читал в уроках mysql не понял((
стучите в аську 413410131 нужна помощь, об оплате договоримся, очень, очень срочно!
2. RomAndry - 21 Октября, 2009 - 18:49:41 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "<b>".$f['id'][$c]."</b>";
  3.  
3. Мелкий - 21 Октября, 2009 - 20:22:19 - перейти к сообщению
$f[id][$c] у вас не существует. mysql_fetch_array при каждой итерации перезаписывает массив, поэтому индекса цикла нет. Обращение будет по $f['id'].

Так же можно (по крайней мере привычнее) переписать на while:
PHP:
скопировать код в буфер обмена
  1.  
  2. while ($f = mysql_fetch_array($q)) {
  3. echo "<b>".$f['id']."</b>";
  4. }
4. RomAndry - 21 Октября, 2009 - 21:23:03 - перейти к сообщению
Лучше как предложил Мелкий
Иначе
PHP:
скопировать код в буфер обмена
  1.  
  2. for ($c=0; $c<mysql_num_rows($q); $c++){
  3.  
5. Мелкий - 21 Октября, 2009 - 21:45:48 - перейти к сообщению
RomAndry пишет:
Иначе
PHP:
скопировать код в буфер обмена
  1.  
  2. for ($c=0; $c<mysql_num_rows($q); $c++){
  3.  

Почему так? Наоборот, mysql_fetch_array надо вызывать на каждой итерации, как и сделал login, иначе получится mysql_num_rows копий одной и той же строки.
6. login - 21 Октября, 2009 - 22:17:43 - перейти к сообщению
возникла другая проблема. как сделать так, что бы id= возрастал? пробывал так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $host = 'ххх';
  3. $user = 'ххх';
  4. $password = 'хх';
  5. $db = 'хх';
  6.  
  7. // Производим попытку подключения к серверу MySQL:
  8. if (!mysql_connect($host, $user, $password) || !mysql_select_db($db))
  9. exit('<h2>MySQL Error!</h2>');
  10.  
  11. // SQL-запрос:
  12. $q = mysql_query('SELECT * FROM `Categories`');
  13.  
  14. // Выводим таблицу:
  15. for ($i = 0; $i < 10; $i++) {
  16. echo "<hr>";
  17. while ($f = mysql_fetch_array($q)) {
  18. echo "<a href=\"http://ххх.ru/articles.php?id="."$i"."\">".$f['name']."</a><br>";
  19. }
  20. }
  21. echo "<hr>";
  22. ?>
  23.  
7. DeepVarvar - 22 Октября, 2009 - 01:27:40 - перейти к сообщению
после <a href=\" вы поставили неверные слеш-экранирования....
8. Мелкий - 22 Октября, 2009 - 10:34:13 - перейти к сообщению
login, так не верно. Вы пытаетесь вложить while в for. И можете тогда получить 10 копий того, что выдаёт while, но получите только 1 с $i=0 - на второй итерации у while условие сразу false будет. Верно так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $host = 'ххх';
  3. $user = 'ххх';
  4. $password = 'хх';
  5. $db = 'хх';
  6.  
  7. // Производим попытку подключения к серверу MySQL:
  8. if (!mysql_connect($host, $user, $password) || !mysql_select_db($db))
  9. exit('<h2>MySQL Error!</h2>');
  10.  
  11. // SQL-запрос:
  12. $q = mysql_query('SELECT * FROM `Categories`');
  13.  
  14. // Выводим таблицу:
  15. $i=0;
  16. echo "<hr>";
  17. while ($f = mysql_fetch_array($q)) {
  18. echo "<a href=\"http://ххх.ru/articles.php?id=".$i."\">".$f['name']."</a><br>";
  19. $i++;
  20. }
  21. echo "<hr>";
  22. ?>


Если нужно, что $i менялся именно в диапазоне 0..9, то при приращении $i надо проверять $i = $i<10 ? $i++ : 0;
А если нужен id записи (зачем просто какой-то номер передавать другому скрипту - понять не могу Улыбка) - то лучше его брать из auto_increment поля БД.

 

Powered by ExBB FM 1.0 RC1