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

Форум MySQL

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

 

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

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

тема: цикл for - извлекаем строки из базы данных
 
 автор: kvins   (21.03.2011 в 02:28)   письмо автору
 
 

нужно показать все данные где в базе имя совпадает с именем пользователя
делаю так в таблице 3 записи и 2 из них должны совпадать
for ( $i=$_SESSION['access']; $i == $showf['name2']; $i++) { echo $i;}


у меня после такого запроса подвисает страница ((

  Ответить  
 
 автор: Shorr Kan   (21.03.2011 в 03:56)   письмо автору
 
   для: kvins   (21.03.2011 в 02:28)
 

исправьте на for ( $i=$_SESSION['access']; $i <= $showf['name2']; $i++) { echo $i;}

  Ответить  
 
 автор: kvins   (21.03.2011 в 09:30)   письмо автору
 
   для: Shorr Kan   (21.03.2011 в 03:56)
 

тоже самое просто зависает и все
мб с базой не так делается? а то я раньше не использовал for
кстати какая разница еслиб я делал == а не как вы <= серавно бы он должен был найти всех совпадающих

проверил вообще работает ли
с таким кодом работает но мне нужно всех пользователей показать
if ($_SESSION['access'] == $showf['name2'])
{
echo "<br>".$showf['name'];
}

  Ответить  
 
 автор: cheops   (21.03.2011 в 11:02)   письмо автору
 
   для: kvins   (21.03.2011 в 09:30)
 

Вообще достаточно опасный критерий для выхода из цикла - очень велика вероятность уйти в бесконечный цикл (зависание). Что находится в $showf и откуда это значение берется? Почему было принято решение работать с ним через цикл?

  Ответить  
 
 автор: deimand   (21.03.2011 в 12:33)   письмо автору
 
   для: kvins   (21.03.2011 в 09:30)
 

Может что-то вроде этого нужно?

<?php 
 
for ( $i 0$j count($showf); $i $j$i++)
 {
   if (
$_SESSION['access'] == $showf[$i]['name2'])
   {
     echo 
"<br>".$showf[$i]['name'];
   }
 }


Что показывает print_r($showf); ?

  Ответить  
 
 автор: kvins   (21.03.2011 в 12:58)   письмо автору
 
   для: deimand   (21.03.2011 в 12:33)
 

cheops вот наверно он и ушел в бесконечный цикл , а то зависает

print_r($showf);

$show = mysql_query ("SELECT * FROM addfriend WHERE first ='$fri' AND vote='1' OR second='$second' AND vote='1'");
    if (mysql_num_rows($show) > 0)  {   
$showf = mysql_fetch_array ($show);


deimand на ваш код вообще реакция нулевая , зато не виснет =)

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

мне надо из базы вытащить все имена из столбца где второе имя совпадает имени из ссесии
мб можно и по другому но не знаю как

  Ответить  
 
 автор: cheops   (21.03.2011 в 13:33)   письмо автору
 
   для: kvins   (21.03.2011 в 12:58)
 

Записи в результирующей таблице лучше обрабатывать циклом while
<?php
  
...
  if (
mysql_num_rows($show) > 0)  {    
    while(
$showf mysql_fetch_array ($show))
    {
       ...
    }
  }
  ...
?>
Дело в том, что mysql_fetch_array() возвращает лишь одну строку результирующей таблицы, да в виде массива. Но этот массив содержит данные лишь одной строки, чтобы получить еще одну строку, нужно еще раз вызывать функцию mysql_fetch_array(). И так до тех пор, пока строки в результирующем массиве не закончатся и функция не вернет FALSE. Именно поэтому массив while() тут наиболее предпочтителен - пока функция mysql_fetch_array() возвращает данные - он работает, как только она вернет FALSE (данные закончились), массив while() прекратит работу.

  Ответить  
 
 автор: kvins   (21.03.2011 в 13:56)   письмо автору
 
   для: cheops   (21.03.2011 в 13:33)
 

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

у меня и было с wile тока не понял как проверку делать поэтому пробовал с for

кстати от вашего кода нечего не выводится и пишет ошибку,
Warning: mysql_num_rows() expects parameter 1 to be resource, array given in C:\denwer\www\denwer\Tools\new\friends.php on line 6

  Ответить  
 
 автор: cheops   (21.03.2011 в 13:58)   письмо автору
 
   для: kvins   (21.03.2011 в 13:56)
 

Все проверки делайте внутри цикла while, вы же сами её и приводите
<?php
if ($_SESSION['access'] == $showf['name']) 

echo 
"<br>".$showf['name']; 
}
?>
Она у вас работает?

  Ответить  
 
 автор: kvins   (21.03.2011 в 14:01)   письмо автору
 
   для: cheops   (21.03.2011 в 13:58)
 

ой ошибку я сам сделал все нормально =)))

  Ответить  
 
 автор: cheops   (21.03.2011 в 13:59)   письмо автору
 
   для: kvins   (21.03.2011 в 09:30)
 

>
if ($_SESSION['access'] == $showf['name2'])
>{
>echo "<br>".$showf['name'];
>}

Хм... а почему вы сравниваете с $showf['name2'], а выводите $showf['name'] - так надо или это опечатка?

  Ответить  
 
 автор: kvins   (21.03.2011 в 14:01)   письмо автору
 
   для: cheops   (21.03.2011 в 13:59)
 

так и надо 1 сравнивается а второе это уникальное имя второго пользователя , из него будет выводится вся информация

  Ответить  
 
 автор: kvins   (21.03.2011 в 14:05)   письмо автору
 
   для: kvins   (21.03.2011 в 14:01)
 

хотя странно без проверок вставил ваш код а он только одно имя дал , хотя в базе их 3

удалил $showf = mysql_fetch_array ($show); которая идет после
$show = mysql_query ("SELECT * FROM addfriend WHERE first ='$fri' AND vote='1' OR second='$second' AND vote='1'");

потому что этот код повторяется вывело 2 заметки из- 3

  Ответить  
 
 автор: cheops   (21.03.2011 в 14:11)   письмо автору
 
   для: kvins   (21.03.2011 в 14:05)
 

У вас достаточно сложное WHERE-условие, все записи ему удовлетворяют?

PS Функция mysql_num_rows($show) сколько возвращает?

  Ответить  
 
 автор: kvins   (21.03.2011 в 14:18)   письмо автору
 
   для: cheops   (21.03.2011 в 14:11)
 

извеняюсь туплю я =) он же из базы берет записи где WHERE first ='$fri' AND vote='1' OR second='$second' AND vote='1'
поэтому их и 2 , а я не заметил .
там кстати 2 значения потому что в первом случае когда ты добавляешь в друзья , имя оказывается в поле name а когда тебя добавляют то ты оказываешься в поле name2 поэтому мне надо будет выводить если имя в поле 1 то выводим поле 2 и также наоборот
теперь буду проверку делать

  Ответить  
 
 автор: kvins   (21.03.2011 в 14:27)   письмо автору
 
   для: kvins   (21.03.2011 в 14:18)
 

все спс сделал

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

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