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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Обработка результирующей таблицы

Сообщения:  [1-10]   [11-18] 

 
 автор: Alexhoppus   (07.08.2009 в 13:11)   письмо автору
 
   для: Trianon   (07.08.2009 в 02:50)
 

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

  Ответить  
 
 автор: Trianon   (07.08.2009 в 02:50)   письмо автору
 
   для: Alexhoppus   (07.08.2009 в 02:32)
 

>Противоречия нет, просто много вещей в синтаксисе языка непривычных совершенно.

вот уж синтаксис здесь совсем в стороне.
а к какому языку Вы привыкли?

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

вся таблица может не поместиться в память. Да и не нужны уже обрботанные строки...

  Ответить  
 
 автор: Trianon   (07.08.2009 в 02:48)   письмо автору
 
   для: Alexhoppus   (07.08.2009 в 02:32)
 

показывайте фрагмент вывода.
По идее у Вас должны выводиться все строки.
Просто перед первой будет вылезать вот это echo "$num_rows Rows\n"; как и написали.

  Ответить  
 
 автор: Alexhoppus   (07.08.2009 в 02:32)   письмо автору
 
   для: Trianon   (07.08.2009 в 02:11)
 

Противоречия нет, просто много вещей в синтаксисе языка непривычных совершенно. В моем понимании тогда $f должен быть 2 мерным массивом, где будет присутствовать вся таблица, а не строкой таблицы которая перезаписывается постоянно на себя.
Я перакрасно понимаю как работает цикл, просто я не понимал почему одна и та же по виду строчка, стоящая в теле цикла, выводит разные элементы с каждым новым повторениям тела.

  Ответить  
 
 автор: Alexhoppus   (07.08.2009 в 02:25)   письмо автору
 
   для: Trianon   (07.08.2009 в 02:11)
 

Пожалуйста
<?php
$lnk = mysql_connect('localhost', 'log', 'pass') or die ( 'Not connected : ' . mysql_error() );
mysql_select_db('BD', $lnk) or die ('Can\'t use foo : ' . mysql_error());
echo "$lnk";
echo"<br>";
mysql_query( 'SET NAMES cp1251' );
$result = mysql_query("SELECT * FROM ID", $lnk) or die(mysql_error());
$num_rows = mysql_num_rows($result);
echo "$num_rows Rows\n";
while ($f = mysql_fetch_array($result, MYSQL_ASSOC))
{
printf ("FIO: %s DATE: %s" , $f["SURNAME"], $f["DATE"]);
echo"<br>";
}

Если закомментировать вот эти две строки
$num_rows = mysql_num_rows($result);
echo "$num_rows Rows\n";
то выводит все как надо, не пойму почему только
?>

  Ответить  
 
 автор: Trianon   (07.08.2009 в 02:11)   письмо автору
 
   для: Alexhoppus   (07.08.2009 в 01:45)
 

>Путем проб и ошибок выяснил, что запись

Вы пытались разобраться как цикл работает?
Так это имело смысл делать до знакомства с MySQL.

>Получается переменная $f не массив, а его элемент.

$f - массив, представляющий очередную строку рез.таблицы.
$f["SURNAME"] - элемент массива, представляющий поле SURNAME этой строки.
В чем противоречие?

>Возникла следующая проблема: вывод осуществляется со второй строки в базе данных, первая куда-то пропадает!

дамп таблицы и код в студию.
Явно в коде ошибка.

  Ответить  
 
 автор: Alexhoppus   (07.08.2009 в 01:45)   письмо автору
 
   для: Trianon   (06.08.2009 в 00:46)
 

Путем проб и ошибок выяснил, что запись
$f = mysql_fetch_array($result, MYSQL_ASSOC);
print_r($f["SURNAME"]);
$f = mysql_fetch_array($result, MYSQL_ASSOC);
print_r($f["SURNAME"]);
....
$f = mysql_fetch_array($result, MYSQL_ASSOC);
print_r($f["SURNAME"]);

Фактически будет эквивалентна данному циклу
while ($f = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf ("FIO: %s " , $f["SURNAME"]);

Получается переменная $f не массив, а его элемент. Возникла следующая проблема: вывод осуществляется со второй строки в базе данных, первая куда-то пропадает!

  Ответить  
 
 автор: Trianon   (06.08.2009 в 00:46)   письмо автору
 
   для: Alexhoppus   (06.08.2009 в 00:17)
 

for($res = mysql_query("SELECT * from table");
       ($row = mysql_fetch_assoc($res)  != 0 ; 
    )
{
    print_r($row);
}


Я действительно не понял, что с %s не так.

  Ответить  
 
 автор: Alexhoppus   (06.08.2009 в 00:17)   письмо автору
 
   для: Trianon   (06.08.2009 в 00:06)
 

Ладно буду сам разбираться, уже итак много вопросов задал, спасибо большое. Если тока может кого не затруднит просьба эту конструкцию написать через for если это возможно.

  Ответить  
 
 автор: Trianon   (06.08.2009 в 00:06)   письмо автору
 
   для: Alexhoppus   (05.08.2009 в 23:52)
 

Вообще говоря, если почитать в мануале описание функции (hint: php.net/mysql_fetch_array ), то станет ясно, что возвращать она может не только массив.

А что по поводу %s?

  Ответить  

Сообщения:  [1-10]   [11-18] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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