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]   

> Описание: Или подскажите, как лучше реализовать
koka
Отправлено: 28 Июня, 2010 - 19:41:34
Post Id



Гость


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


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




Здравствуйте!!! У меня получилась такая ситуация - есть таблица, где хранятся данные об автомобилях пользователей. Идентификатором является ID пользователя, и он может повторяться (вдруг пользователь захочет добавить больше одного автомобиля). Надеюсь, что объяснил понятно и приводить всю таблицу не надо. А функции PHP? например, самая понятная мне mysql_fetch_assoc выводит только одну строку. На сайте в описаниях функций для mysql что-то видел про алиасы, но не понял, как их использовать. Растерялся
Пробовал конструкцию типа
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT marka as marka2
  2.            FROM `automobiles`
  3.            WHERE `client_id`='{$_COOKIE['id']}'
  4.            LIMIT 1";
  5.     $sql = mysql_query($query) or die(mysql_error());
  6.          $query2 = "SELECT marka
  7.            FROM `automobiles`
  8.            WHERE `client_id`='{$_COOKIE['id']}'
  9.            LIMIT 1";
  10.     $sql2 = mysql_query($query) or die(mysql_error());
  11.    
  12.     if (mysql_num_rows($sql) >= 1) {
  13.     $auto=mysql_fetch_assoc($sql);
  14.      $auto2=mysql_fetch_assoc($sql2);
  15.     echo $auto['marka2'];
  16.     echo $auto2 ['marka'];


Но, как я понял, mysql_query срабатывает только один раз....

Пожалуйста, подскажите Закатив глазки

Может как-то по-другому можно реализовать то, что я хочу.
Я хочу, чтобы пользователь заходил на страницу и ему (то есть его client_id) выдавалась вся информация об автомобилях, которые он добавил (добавить автомобилей он может сколько угодно).
Неужели надо получать содержимое всей таблицы и выводить для отдельного клиента информация с помощью цикла, обрабатывая все значения таблицы. Тогда может как-то отсортировать по client_id строки таблицы??? К сожалению, не знаю, как называется такая функция (вроде есть)??? Вообщем, объясните новичку... Радость


-----
http://rulevoi[dot]net - запчасти для иномарок в Ижевске
 
 Top
Champion Супермодератор
Отправлено: 28 Июня, 2010 - 19:44:44
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




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

Алиас - псевдоним. Можно назначать столбцам, таблицам, процедурам, подзапросам, представлениям. Как правило, он короткий и используется, чтоб не писать длинное настоящее имя объекта. Либо если в запросе используется один объект БД два раза - чтоб их стало как будто два.
 
 Top
awiz
Отправлено: 28 Июня, 2010 - 19:46:34
Post Id



Гость


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


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




не совсем понял саму проблему, но помойму надо просто убрать LIMIT 1 и все
 
 Top
koka
Отправлено: 28 Июня, 2010 - 19:53:08
Post Id



Гость


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


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




Champion пишет:
Везде по всему интренету, в том числе и здесь, если ты щелкнешь по названию функции, ты увидишь, что ее вызывать надо в цикле и она будет возвращать по одной строке.


Можешь дать пример цикла, пожалуйста.


-----
http://rulevoi[dot]net - запчасти для иномарок в Ижевске
 
 Top
Champion Супермодератор
Отправлено: 28 Июня, 2010 - 19:55:54
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Ссылку нажал в своем коде?
 
 Top
koka
Отправлено: 28 Июня, 2010 - 19:57:33
Post Id



Гость


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


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




Champion пишет:
Ссылку нажал в своем коде?

Этот цикл я пробывал, но он у меня выводил только один ряд данных.

(Отредактировано автором: 28 Июня, 2010 - 19:58:56)



-----
http://rulevoi[dot]net - запчасти для иномарок в Ижевске
 
 Top
Champion Супермодератор
Отправлено: 28 Июня, 2010 - 20:00:42
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




koka пишет:
он у меня выводил только один ряд данных.
А сколько он должен вывести:
koka пишет:
LIMIT 1";
awiz кому об этом писал?
 
 Top
koka
Отправлено: 28 Июня, 2010 - 20:03:20
Post Id



Гость


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


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




Champion пишет:
koka пишет:
он у меня выводил только один ряд данных.
А сколько он должен вывести:
koka пишет:
LIMIT 1";
awiz кому об этом писал?


Спасибо. Что-то я перегрелся сегодня А?!
Сейчас всё выводит Улыбка


-----
http://rulevoi[dot]net - запчасти для иномарок в Ижевске
 
 Top
JustUserR
Отправлено: 29 Июня, 2010 - 17:17:43
Post Id



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


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


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




koka пишет:
Идентификатором является ID пользователя, и он может повторяться (вдруг пользователь захочет добавить больше одного автомобиля).
В данном случае это не ключевой идентификатор а поле для ограничения условия в выборке - по нему к примеру можно составить JOIN-запрос для получения информации о пользователя по текущей информации об автомобиле А сами записи строк автомобилей должны содержать уникальный ключевой индекс - чтобы каждую записть можно было однозначно выбрать и связать с ней данные


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
koka
Отправлено: 29 Июня, 2010 - 22:12:13
Post Id



Гость


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


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




JustUserR пишет:
koka пишет:
Идентификатором является ID пользователя, и он может повторяться (вдруг пользователь захочет добавить больше одного автомобиля).
В данном случае это не ключевой идентификатор а поле для ограничения условия в выборке - по нему к примеру можно составить JOIN-запрос для получения информации о пользователя по текущей информации об автомобиле А сами записи строк автомобилей должны содержать уникальный ключевой индекс - чтобы каждую записть можно было однозначно выбрать и связать с ней данные


Спасибо всем за советы!!! Но вот совершенно неожиданно возникла другая проблема. Я решил добавить в таблицу поле auto_id (c auto_increment); Но появляется ошибка
CODE (htmlphp):
скопировать код в буфер обмена
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition,privod,country,comment) VALUES('Mazda', 'MPV', ' at line 1


Запрос для бд следующий, в скрипте регистрации работает нормально
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("INSERT INTO automobiles(marka,model,dvig_nomer,dvig_cod,dvig_value,kyzov,kpp,kpp_number,vin,year,month,abs,gyr,condition,privod,country,comment) VALUES('{$_POST['marka']}',
  2.              '{$_POST['model']}',
  3.              '{$_POST['dvig_nomer']}',
  4.              '{$_POST['dvig_cod']}',
  5.              '{$_POST['dvig_value']}',
  6.              '{$_POST['kyzov']}',
  7.              '{$_POST['kpp']}',
  8.              '{$_POST['kpp_number']}',
  9.              '{$_POST['vin']}',
  10.              '{$_POST['year']}',
  11.              '{$_POST['month']}',
  12.              '{$_POST['abs']}',
  13.              '{$_POST['gyr']}',
  14.              '{$_POST['condition']}',
  15.              '{$_POST['privod']}',
  16.              '{$_POST['country']}',
  17.              '{$_POST['comment']}')");


Причём этот запрос даже не работает без auto_id в таблице, то есть вообще без идентификаторов. Если я не перечисляю поля таблицы (не знаю как это называется)
CODE (htmlphp):
скопировать код в буфер обмена
  1. automobiles(marka,model,dvig_nomer,dvig_cod,dvig_value,kyzov,kpp,kpp_number,vin,year,month,abs,gyr,condition,privod,country,comment)
, то есть INSER INTO table VALUES, то запрос работаёт безошибочно (если нет идентификатора в таблице, разумеется).

Подскажите, в чём ошибся. Может, руки и кривые, но в скрипте регистрации никаких ошибок нет, всё работает.


-----
http://rulevoi[dot]net - запчасти для иномарок в Ижевске
 
 Top
SAD Модератор
Отправлено: 29 Июня, 2010 - 22:26:24
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




Ну нужно же и auto_id заполнять. вставлять 'NULL'
 
 Top
koka
Отправлено: 29 Июня, 2010 - 22:31:43
Post Id



Гость


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


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




SAD пишет:
Ну нужно же и auto_id заполнять. вставлять 'NULL'


auto_id нужно сделать null по умолчанию в таком случае????

Но запрос и не работает без auto_id и таблице. Обязательно ли нужно заполнять auto_id и тому подобные??? У меня есть таблица, где client_id (c autoincrement) стоит в начале, перечисляю поля таблицы и нормально вставляется.
PHP:
скопировать код в буфер обмена
  1.   $result2 = mysql_query ("INSERT INTO users (login,email,password,name,surname,phone1,phone1_comment)
  2.     VALUES('$login','$email','$password','$name','$surname','$phone1','$phone1_comment')");

(Добавление)
SAD пишет:
Ну нужно же и auto_id заполнять. вставлять 'NULL'


Понял!

Сделал запрос
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("INSERT INTO automobiles VALUES('NULL','{$_POST['marka']}',
  2.              '{$_POST['model']}',
  3.              '{$_POST['dvig_nomer']}',
  4.              '{$_POST['dvig_cod']}',
  5.              '{$_POST['dvig_value']}',
  6.              '{$_POST['kyzov']}',
  7.              '{$_POST['kpp']}',
  8.              '{$_POST['kpp_number']}',
  9.              '{$_POST['vin']}',
  10.              '{$_POST['year']}',
  11.              '{$_POST['month']}',
  12.              '{$_POST['abs']}',
  13.              '{$_POST['gyr']}',
  14.              '{$_POST['condition']}',
  15.              '{$_POST['privod']}',
  16.              '{$_POST['country']}',
  17.              '{$_POST['comment']}')");



Теперь всё работает. Но почему я не могу перечислить поля таблицы, в чём проблема????


-----
http://rulevoi[dot]net - запчасти для иномарок в Ижевске
 
 Top
JustUserR
Отправлено: 30 Июня, 2010 - 14:38:22
Post Id



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


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


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




koka пишет:
Теперь всё работает. Но почему я не могу перечислить поля таблицы, в чём проблема????
По умолчанию SQL-синтаксис позволяет использовать имена SQL-полей без обрамления их обратные кавычки если они соответствуют неким синтаксическим правилам - но в общем случае если они содержат пробелы или начинаются с цифры или содержат символы не-ASCII-кодировки то их нужно обрамлять соответствующим образом В вашем случае видно что проблема в поле abs - которое совпадает с именем встроенной функции и которое требует явного обрамления в обратные кавычки


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB