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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помогите разобраться в коде

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: foreach выводит массив 2 раза
CRUSHEr2
Отправлено: 20 Июля, 2010 - 14:32:53
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




CODE (php):
скопировать код в буфер обмена
  1.  
  2.  
  3. <?php
  4.  
  5.  
  6. $db = mysql_connect ("localhost","admin","123");
  7. mysql_select_db ("firstbd",$db);
  8. $result = mysql_query("SELECT * FROM firma ",$db);
  9. $tr = "<tr>";
  10. $td = "<td>";
  11. $_tr = "</tr>";
  12. $_td = "</td>";
  13. $table = "<table>";
  14. $_table = "</table>";
  15.  
  16.  
  17.  
  18.  
  19.  
  20. echo ("<table border='1'>");
  21. while ($myrow = mysql_fetch_array ($result))
  22. {
  23.         printf ("%s",$tr);
  24.         foreach ($myrow as $value)
  25.         {                      
  26.                 printf ("%s%s%s",$td,$value,$_td);
  27.         };
  28.        
  29.         printf ("%s",$_tr);
  30. };
  31. echo ("</table>");
  32.  
  33.  
  34. ?>
  35. <html><head><body>
  36.  


Вот собственно код... Он мне выдает таблицу, но каждый столбец повторяется... помогите разобраться, где ошибка

(Отредактировано автором: 20 Июля, 2010 - 14:33:33)

 
 Top
Uchkuma
Отправлено: 20 Июля, 2010 - 14:40:23
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Что за индусский код? Почему printf ("%s",$tr) вместо echo '<tr>'? А это printf ("%s%s%s",$td,$value,$_td)??? Так не лучше printf ("<td>%s</td>", $value)?
 
 Top
CRUSHEr2
Отправлено: 20 Июля, 2010 - 15:04:16
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




CODE (php):
скопировать код в буфер обмена
  1.  
  2.  
  3. <?php
  4.  
  5. $db = mysql_connect ("localhost","admin","123");
  6. mysql_select_db ("firstbd",$db);
  7. $result = mysql_query("SELECT * FROM firma ",$db);
  8.  
  9. echo ("<table border='1'>");
  10. while ($myrow = mysql_fetch_array ($result))
  11. {
  12.         echo ("<tr>");
  13.         foreach ($myrow as $value)
  14.         {                      
  15.                 printf ("<td>%s</td>",$value);
  16.         };
  17.        
  18.         echo ("</tr>");
  19. };
  20. echo ("</table>");
  21.  
  22.  
  23. ?>
  24.  

Я тока осваиваю PHP
 
 Top
Uchkuma
Отправлено: 20 Июля, 2010 - 16:14:44
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Ошибок нет. Код выведет все столбцы и строки из таблицы. Что значит "каждый столбец повторяется"?
 
 Top
Viper
Отправлено: 20 Июля, 2010 - 16:20:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




кол-во столбцов будет равно кол-ву строк. видимо поэтому автор подразумевает повторение.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
CRUSHEr2
Отправлено: 20 Июля, 2010 - 16:36:53
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Получается вот так:
Прикреплено изображение (Нажмите для увеличения)
test1.jpg

(Отредактировано автором: 20 Июля, 2010 - 16:38:00)

 
 Top
CRUSHEr2
Отправлено: 20 Июля, 2010 - 16:38:24
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




А должно быть вот так:
Прикреплено изображение (Нажмите для увеличения)
test2.jpg
 
 Top
ArchAngel
Отправлено: 20 Июля, 2010 - 16:55:21
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Скрипт должен работать нормально....
если хочешь можешь в цикле while поставить print_r($myrow);
и посмотришь почему выводит два раза

ну а вообще вот:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $db = mysql_connect ("localhost","admin","123");
  3. mysql_select_db ("firstbd",$db);
  4. $result = mysql_query("SELECT * FROM `firma` ",$db);
  5.  
  6. echo ("<table border='1'>");
  7. while ($myrow = mysql_fetch_array ($result)) {
  8.         echo ("<tr>");
  9.         print("<td>$myrow['id']</td><td>$myrow['name']</td><td>$myrow['fam']</td><td>$myrow['prof']</td>");
  10.         echo ("</tr>");
  11. }
  12. echo ("</table>");
  13. ?>



п.с и вот такой вопрос у тебя после } стоит ; интересно зачем (видел в яве такое но хз зачем)

(Отредактировано автором: 20 Июля, 2010 - 16:58:17)

 
 Top
Саныч Модератор
Отправлено: 20 Июля, 2010 - 16:56:51
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




ArchAngel, можно еще проще сделать Улыбка
заменить

на

CRUSHEr2, mysql_fetch_array возвращает массив вида:
CODE (htmlphp):
скопировать код в буфер обмена
  1. [0] => 1
  2. ['id'] => 1
  3. [1] => Pavel
  4. ['имя'] => Pavel
  5. [2] => volkov
  6. ['фамилия'] => volkov
  7. [3] => eblan
  8. ['отчество'] => eblan
  9. )

mysql_fetch_row - возвращает неассоциативный массив:
CODE (htmlphp):
скопировать код в буфер обмена
  1. [0] => 1
  2. [1] => Pavel
  3. [2] => volkov
  4. [3] => eblan
  5. )

отсюда и повторения по два раза

(Отредактировано автором: 20 Июля, 2010 - 17:05:11)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
CRUSHEr2
Отправлено: 20 Июля, 2010 - 17:02:36
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




CODE (php):
скопировать код в буфер обмена
  1. <?PHP
  2. $db = mysql_connect ("localhost","admin","123");
  3. mysql_select_db ("firstbd",$db);
  4. $result = mysql_query("SELECT * FROM `firma` ",$db);
  5.  
  6. echo ("<table border='1'>");
  7. while ($myrow = mysql_fetch_array ($result))
  8. {
  9.         echo ("<tr>");
  10.         print("<td>".$myrow['id']."</td><td>".$myrow['name']."</td><td>".$myrow['lastname']."</td><td>".$myrow['dol']."</td>");
  11.  
  12.         echo ("</tr>");
  13. };
  14. echo ("</table>");
  15. ?>


Вот так работает, но вот где раньше была ошибка не понятно...
(Добавление)
ясно, понял, спасибо большое Улыбка
 
 Top
Uchkuma
Отправлено: 20 Июля, 2010 - 17:04:54
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Саныч пишет:
ArchAngel, можно еще проще сделать
Точно же, не обратил внимания!!! )))
mysql_fetch_array возвращает ассоциативный и численный массивы сразу, потому и дублирование столбцов!
 
 Top
ArchAngel
Отправлено: 20 Июля, 2010 - 17:04:55
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




CRUSHEr2 прочитай пост Саныч , он написал почему =)
(Добавление)
Uchkuma ага ,чуток протупил =)
 
 Top
Саныч Модератор
Отправлено: 20 Июля, 2010 - 17:08:56
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




CRUSHEr2, это что какой-то новый способ разметки, сначала вывести таблицу и только потом открыть тег <html>? Улыбка Улыбка


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
ArchAngel
Отправлено: 20 Июля, 2010 - 17:16:30
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




или даже вот так =)

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $db = mysql_connect ("localhost","admin","123");
  3. mysql_select_db ("firstbd",$db);
  4. $result = mysql_query("SELECT * FROM `firma` ",$db);
  5.  
  6. echo ("<table border='1'>");
  7. while ($myrow = mysql_fetch_assoc($result)) {
  8.         echo ("<tr>");
  9.         print("<td>$myrow['id']</td><td>$myrow['name']</td><td>$myrow['fam']</td><td>$myrow['prof']</td>");
  10.         echo ("</tr>");
  11. }
  12. echo ("</table>");
  13. ?>
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB