Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод данных из таблицы.
 
 автор: IAndi   (22.08.2010 в 18:24)   письмо автору
 
 

Подскажите пожалуйста где допустил ошибку в данном коде?
$data = mysql_query("SELECT name, i1, i2, i3 FROM book", $link);
while ($arr=mysql_fetch_array($data))
{
    echo "$arr[name]<br>";
    if($arr[i1]!=0)
    {    
        $name[i1] = mysql_query("SELECT name FROM info WHERE id='$arr[i1]'", $link);
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$name[i1]<br>";
    }
    if($arr[i2]!=0)
    {
        $name[i2] = mysql_query("SELECT name FROM info WHERE id='$arr[i2]'", $link);
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$name[i2]<br>";
    }
    if($arr[i3]!=0)
    {
        $name[i3] = mysql_query("SELECT name FROM info WHERE id'='$arr[i3]'", $link);
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$name[i3]<br>";
    }
}

На месте вывода $name[i1]/$name[i2]/$name[i3] везде стоит Resource id #...

  Ответить  
 
 автор: sim5   (22.08.2010 в 18:30)   письмо автору
 
   для: IAndi   (22.08.2010 в 18:24)
 

А зачем вы вот это делаете mysql_fetch_array() ? Хотя вообще-то, лучше mysql_fetch_assoc.

  Ответить  
 
 автор: IAndi   (22.08.2010 в 18:43)   письмо автору
 
   для: sim5   (22.08.2010 в 18:30)
 

mysql_fetch_array() для построения списка. А name[i1]/name[i2]/name[i3] - доп данные из др. таблицы. Или каким способом можно еще их получить?

  Ответить  
 
 автор: sim5   (22.08.2010 в 18:46)   письмо автору
 
   для: IAndi   (22.08.2010 в 18:43)
 

Это от куда такие сведения, что mysql_fetch_array() служит для построения списка? А нука заремируйте весь цикл и вместо него выполните:
echo $data;
Что наблюдаем?

  Ответить  
 
 автор: IAndi   (22.08.2010 в 18:49)   письмо автору
 
   для: sim5   (22.08.2010 в 18:46)
 

Ммм... а наблюдаем Resource id #3.

  Ответить  
 
 автор: sim5   (22.08.2010 в 18:54)   письмо автору
 
   для: IAndi   (22.08.2010 в 18:49)
 

mysql_fetch_array - извлекает результирующий ряд как ассоциативный массив, числовой массив или и тот, и другой. И извлекает она его как раз из полученного запросом к базе ресурса. Вот только ни к чему она вам эта функция. Вы работаете далее с ассоциативным массивом, следобвательно два набора вам не нужны, и использовать нужно функцию mysql_fetch_assoc(), либо уж, если использовать то указывать функции mysql_fetch_array() соответсвубщий флаг, определяющий нужный вам набор, в данном случае MYSQL_ASSOC.

Вот из первого ресурса вы получаете данные ряда как массив, а далее пытаетесь получить нечто непосредственно из русурса (echo), вот потому у вас так и....
А вообще же, заглубляйтесь в мануал и читать, и изучать, прежде чем что-то писать.

Так $arr[i1] нельзя писать (вернее привыкать так писать), а следует имя ключа брать в кавычки - $arr['i1'], и далее в остальных случаях...

  Ответить  
 
 автор: IAndi   (22.08.2010 в 19:16)   письмо автору
 
   для: sim5   (22.08.2010 в 18:54)
 

При имени ключа в кавычках выскакивает ошибка
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

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

  Ответить  
 
 автор: sim5   (22.08.2010 в 19:30)   письмо автору
 
   для: IAndi   (22.08.2010 в 19:16)
 

В этом случае echo "$arr[name]<br>"; или где?
К тому же, в запросах своих вы обращаетесь к полю с именем id, и надо полагать, что это номер, зачем этот номер в кавычки вы обращаете (не имя ключа, а саму переменную)?
Если все правильно писать, то никаких Parse error: syntax error, unexpected... не будет. А вот если привыкнуть так писать (не заключая строковые имена ключей в кавычки), то рано или поздно вполне можете нарваться на проблему. Пока ваши ошибки исправляет РНР, до поры до времни, пока разработчикам не придет в голову зарезервировать за некой константой тоже имя, какое вы дали одному из своих ключей, вот тогда.....
Нельзя! Это не правильно! Читайте мануал. Изучайте.

  Ответить  
 
 автор: nikita2206   (22.08.2010 в 18:59)   письмо автору
 
   для: IAndi   (22.08.2010 в 18:24)
 

Запросы в цикле - это жостко. Попробуй так например:
<?php
$data 
mysql_query('SELECT `book`.`name` AS `bookName`, `book`.`i1`, `book`.`i2`, `book`.`i3`, `info`.`name` FROM `book`, `info` WHERE `info`.`id` IN(`book`.`i1`, `book`.`i2`, `book`.`i3`)');

  Ответить  
 
 автор: sim5   (22.08.2010 в 19:05)   письмо автору
 
   для: nikita2206   (22.08.2010 в 18:59)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования