Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод полей циклом 
:(
    Опции темы
Папараццы
  Дата 21.2.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Вот начел переписовать некий код..Потомучто решил что использовать классы эт легче и понятние в некотором случае....
Вот такой код у меня новый (Ну в рамках того что не получается...)
Код

<?
/*                EXPERIMENT                */
class mysql 
 {
  var $sql_login="somepass";
  var $sql_passwd="somepass";
  var $sql_database="base";
  var $sql_host="localhost";

  var $conn_id;
  var $sql_query;
  var $sql_err;
  var $sql_res;

  function sql_connect()
  {
  $this->conn_id=mysql_connect($this->sql_host,$this->sql_login,$this->sql_passwd);
  $this->conn_log_id=mysql_connect($this->sql_host,$this->sql_login,$this->sql_passwd);
   mysql_select_db($this->sql_database);
  }
  function sql_close()
  {
   mysql_close($this->conn_id);
  }
  function sql_execute()
  {
   $this->sql_res=mysql_query($this->sql_query,$this->conn_id);
   $this->sql_err=mysql_error();
  }
} 
    ?>
<html>
<head><title>EXPERIMENT</title></head>
<body>
<?
$ct=new mysql;
$ct->sql_connect();
$ct->sql_query="SET NAMES cp1251";
$ct->sql_execute();
$ct->sql_query="SELECT DISTINCT `1`, uf, name_az, name_en, name_ru, link FROM tam    ORDER BY `1` ASC ";
$ct->sql_execute();
$ct->sql_close();

$zapros=mysql_fetch_array($ct->sql_res); //При assoc  тоже самое
 do {  
 echo " ".$zapros['name_ru'];
} 
while (mysql_fetch_assoc($ct->sql_res));
echo'<br>';
?>
</body>
</html>


Проблема в том что выводит по количеству то что  нужно именно столько записей в базе данных...Зато все записи одинаковые..
Хотя в коде каторый был раньше всё выводилось нормально как надо..
а именно
Код

include("Connections/dbmanagement.php")
     mysql_select_db($database_dbmanagement, $dbmanagement);
     $query_ritn1 = "SELECT DISTINCT `1`, uf, name_az, name_en, name_ru, link FROM tam   ORDER BY `1` ASC";
     $ritn1 = mysql_query($query_ritn1, $dbmanagement) or die(mysql_error());
     $row_ritn1 = mysql_fetch_assoc($ritn1);
      do { 
        echo"<a href='index.php?lang=$lang;&where1=theme&first=";
        echo $row_ritn1['1']; echo"'>";
        echo $row_ritn1['name_кг']; 
        echo'</a>';
        } while ($row_ritn1 = mysql_fetch_assoc($ritn1));

извините что так много кода....но прошу помочь кому не трудно...Зарание благодарен!


M
PARROT
Папараццы, перед постингом своих сообщений, большая просьба пропускать их через сервис правописания! Нам легче читать, и Вы узнаете много нового!


Это сообщение отредактировал(а) PARROT - 21.2.2007, 16:43


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
mishaSL
Дата 21.2.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Код

$ct->sql_close();


Закрывай соединение с базой в конце скрипта.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Папараццы
Дата 21.2.2007, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Не помогает...Может другой цикл посоветуете???

Добавлено @ 19:50 
При выводе количества записей показывает что одна запись......


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
mishaSL
Дата 21.2.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Папараццы @  21.2.2007,  16:37 Найти цитируемый пост)

$zapros=mysql_fetch_array($ct->sql_res); //При assoc  тоже самое
 do {  
 echo " ".$zapros['name_ru'];
} 
while (mysql_fetch_assoc($ct->sql_res));


Сначало не заметил. Что это?


Сделай так:
Код

while ($zapros = mysql_fetch_assoc($ct->sql_res)) {
 echo $zapros['name_ru'];
}


А на самом деле кривоватый скрипт получается у Вас. Надеюсь Вы его пишете для тренировки smile 


Это сообщение отредактировал(а) mishaSL - 21.2.2007, 20:15


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Папараццы
Дата 21.2.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Ну да так называемый эксперемент...Предворительноя подготовка к переделке оригинала...Спасибо сейчас папробую...

Добавлено @ 20:57 
всё заработало....Вот причину не понимаю...реально зациклился вместо этого цикла...
mishaSL - уже каторый раз помогаешь РеСпЕкТ!!!


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
mishaSL
Дата 21.2.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Папараццы @  21.2.2007,  20:54 Найти цитируемый пост)
Вот причину не понимаю...


Причина в недопонимании функции mysql_fetch_assoc.
Попробуй прочитать построчно кусок который я выделил (объясню как можно проще):

Код

$zapros=mysql_fetch_array($ct->sql_res); //В переменную $zapros возвращаешь первый ряд выборки и переводишь указатель на следующий
 do {  
 echo " ".$zapros['name_ru'];//Выводишь одно и тоже значение полученное в 1 строке
} 
while (mysql_fetch_assoc($ct->sql_res)); //Переводишь указатель начиная со второй позиции(т.к. в первой строке ты уже на одну сдвинул) до окончания резульната выборки




Цитата(Папараццы @  21.2.2007,  20:54 Найти цитируемый пост)
mishaSL - уже каторый раз помогаешь РеСпЕкТ!!! 

Всегда рад и буду рад помочьsmile


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Папараццы
Дата 21.2.2007, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Есчё раз спасибо за отзывчевость! 
Принципе с этим разобрался... Вот такой вопросик появился 
Код

$ct->sql_query="SELECT  name_en,name_ru,name_az FROM tam ";
$ct->sql_execute();

   while( $massiv=mysql_fetch_array($ct->sql_res,MYSQL_ASSOC)) 
           { 
             foreach($massiv as  $key=>$value3)
                { 
                  echo" $value3.<br>";
                 }
             }


Вот этим циклом выводит все записи то что я в запросе запросил... А как зделать чтобы брал именно name_ru или name_az ???? 
Код

 foreach ($massiv['name_en'] as $key => $value) 
  { echo $value."<br>"; }

Выдаёт ошибку... Warning: Invalid argument supplied for foreach() in z:\home\experiment\www\index.php
Как задать ему правельный аргумент ???

Добавлено @ 22:41 
Но спрашивается зачем нужно foreach впихивать если он и так каждый элемент массива выводит....Выходит так что переменноя $massiv сама не является массивом а просто принимает его значение...Как зделать чтобы   весь запрос у меня был в массиве каторый я могу в любое время циклить???


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
DIAgen.G
Дата 21.2.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.2.2007

Репутация: нет
Всего: нет



У тебя тут идет ошибка, возращается после запроса mysql_fetch_array не масив а одно значение, а ты это значение пытаешься прогнать через foreach. Просто построй нормальый алогоритм и все!
Код

$ct->sql_query="SELECT  name_en,name_ru,name_az FROM tam ";
$ct->sql_execute();
   while( $massiv=mysql_fetch_object(($ct->sql_res,MYSQL_ASSOC)) 
           { 
                echo $massiv -> name_ru . '<br />';
                echo $massiv -> name_az . '<br />';
            }

Или я не правильно понел что ты хочешь сделать!

PM MAIL   Вверх
mishaSL
Дата 21.2.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Папараццы @  21.2.2007,  22:34 Найти цитируемый пост)
Вот этим циклом выводит все записи то что я в запросе запросил... А как зделать чтобы брал именно name_ru или name_az ???? 


Не доконца понял.
Если ты хочешь все ряды занести в массив, а потом с ним работать, то можно так:
Код

$ct->sql_query="SELECT  name_en,name_ru,name_az FROM tam ";
$ct->sql_execute();
$allArr = array();
while( $massiv=mysql_fetch_array($ct->sql_res,MYSQL_ASSOC)) { 
        $allArr[] = $massiv;
}


Дальше работаешь с $allArr;

Если просто для удобства обращения внутри цикла, то можно так:
Код

$ct->sql_query="SELECT  name_en,name_ru,name_az FROM tam ";
$ct->sql_execute();
$allArr = array();
while( list($name_en,$name_ru,$name_az)=mysql_fetch_array($ct->sql_res,MYSQL_ASSOC)) { 
        print $name_en;
        print $name_ru;
        print $name_az;
}




--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
DIAgen.G
Дата 21.2.2007, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.2.2007

Репутация: нет
Всего: нет



Цитата(Папараццы @ 21.2.2007,  20:34)
Добавлено @ 22:41 
Но спрашивается зачем нужно foreach впихивать если он и так каждый элемент массива выводит....Выходит так что переменноя $massiv сама не является массивом а просто принимает его значение...Как зделать чтобы   весь запрос у меня был в массиве каторый я могу в любое время циклить???

Можно сделать просто
Код

$ct->sql_query="SELECT  name_en,name_ru,name_az FROM tam ";
$ct->sql_execute();
   while( $massiv=mysql_fetch_object(($ct->sql_res,MYSQL_ASSOC)) 
           { 
                $massiv1[] = $massiv -> name_ru . '<br />';
                $massiv2[] = $massiv -> name_az . '<br />';
            }

А потом уже обращайся к массивам. Вот только гемороя больше получается!
PM MAIL   Вверх
Папараццы
Дата 21.2.2007, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Ну я эт понел что значение я впихиваю..Вот просто хочу получить массив элементов name_ru  !!!


Notice: Trying to get property of non-object in z:\home\experiment\www\index.php on line 63
Notice: Trying to get property of non-object in z:\home\experiment\www\index.php on line 64

В примере  DIAgen.G 


Notice: Undefined offset: 2 in z:\home\experiment\www\index.php on line 71
 
В примере mishaSL

Добавлено @ 23:07 
mysql_fetch_object() Вот про него сейчас прочитал ...Весма хорошоя весчь только жаль у меня не сработало  выводит ошибку 

Fatal error: Class '1' not found in z:\home\experiment\www\index.php on line 61  

Убрал MYSQL_ASSOC И всё оки....Записал в массив !!!!  DIAgen.G  - thanks за хароший пример...
Вариант с лист тоже очень хорошим кажется...
Ребят есчё раз извините что я просто внедрился так, потомучто стало интересно очень...



И вот наконец то чего я хотел 


Код

$ct->sql_query="SELECT  name_en,name_ru,name_az FROM tam ";
$ct->sql_execute();
   while( $massiv=mysql_fetch_object($ct->sql_res)) 
           { 
                $massiv1[] = $massiv->name_ru .'<br />';
                $massiv2[] = $massiv->name_az.'<br />';
            }
            print_r($massiv1);

echo"<br><br/>";

$allArr = array();
while( $massiv=mysql_fetch_array($ct->sql_res,MYSQL_ASSOC)) { 
        $allArr[] = $massiv;
}

for($i=0;$i<count($allArr);$i++){
print_r($allArr[$i]['name_en']);
echo "<br>";}


Получился двойной массив во втором варианте но сойдёт...Итог темы лично для меня в том что узнал про mysql_fetch_object ....Очень полезная функция памойму....Проблема решена, всем спасибо...



Это сообщение отредактировал(а) Папараццы - 21.2.2007, 23:32


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0681 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.