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]   

> Описание: Как считать строку из Базы Данных по ее номеру?
SergeantPEPPER
Отправлено: 22 Сентября, 2007 - 16:09:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


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




Необходимо считывать из БД строки какого-то определенного номера. Ну, например, строку под номером четыре. Подскажите SQL запрос. Зараннее спасибо)
 
 Top
valenok
Отправлено: 22 Сентября, 2007 - 16:19:26
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




SELECT `filed` FROM `table` WHERE `line`=4

http://webmasterschool[dot]ru/sql/ch3.php

--

Добавьте пожалуйста туда пострничную навигацию чтоли
как на php.net и mysql.ru
У каждой главы есть ссылка на следующюю главу / статью / функцию в этом разделе


-----
Truly yours, Sasha.
 
My status
 Top
SergeantPEPPER
Отправлено: 24 Сентября, 2007 - 18:48:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


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




На самом деле имел ввиду не это. Я знаком с синтаксисом этого SQL запроса, однако нужно сичтывать именно какую-то определенную строку из таблицы. Вообщем-то я в таблице использую индекс-столбец id с autoincrement, который задан как первичный ключ, однако при удалении какой-либо записи индексы, естесственно не перерассчитываются. Подскажите, как можно читать строку по ее номеру, либо как можно перерассчитывать значения индекс-поля при изменении записей в таблице. (целостность данных в моем примере пока не используется)...
 
 Top
valenok
Отправлено: 24 Сентября, 2007 - 19:30:44
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




а зачем вам это надо?
Зачем вы себе проблемы изобретатете


-----
Truly yours, Sasha.
 
My status
 Top
SergeantPEPPER
Отправлено: 24 Сентября, 2007 - 19:41:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


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




Проблема в следующем: у меня есть столбец id, который задет уникальный идентификатор для каждой строки. Предположим, что у меня в таблице всего 5 строк. Тогда id для них будет таким: 1 2 3 4 5. (Т.к. not null и AutoIncrement). Однако, если я удалю, например последнюю строку из таблицы и после этого создам новую последовательность id будет иметь вид: 1 2 3 4 6. Ну, видимо делается это для поддержания целостности данных, мне однако это пока не обязательно. Если вам кажется, что это вовсе и не проблема, подскажите тогда более элегантное решение)
 
 Top
evgenijj
Отправлено: 24 Сентября, 2007 - 20:17:21
Post Id



Участник


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


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




Давай ты придумаешь пример, когда тебе абсолютно необходима сплошная нумерация ID (1, 2, 3, 4, 5, 6, 7, ... ) - а мы тебе расскажем, как это обойти?
 
 Top
valenok
Отправлено: 24 Сентября, 2007 - 20:17:30
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




да, но я спорсил зачем вам выбрать пятую строку не взирая на её id, будь оно 5 или 6


-----
Truly yours, Sasha.
 
My status
 Top
SergeantPEPPER
Отправлено: 25 Сентября, 2007 - 19:04:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


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




Хорошо, моя задача в следующем:
В базе данных есть таблица, в кторой хранятся: id, Вопрос, 4 варианта ответа к нему, и номер правильного ответа(1-4). Мне нужно считать ВСЕ записи из таблицы и затем выводить по одной (вообщем, тестирующая система).

Так, вот: я не знаю, как можно отлавливать события в PHP (и можно ли вообще...), поэтому делаю кнопку Submit с ссылкой на эту же самую страницу и передаю ей значение номера заданного вопроса и нечто еще...

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

Так получается в моем случае необходимо, чтобы номер вопроса, передающегося через форму, совпадал с id в базе данных. Либо завести еще одно поле специально для номеров вопросов, что я, собственно, пока и сделал, но такая альтернатива мне не очень то нравиться...

Помогите пожалуйста с выбором способа считывания инфы из таблицы. Заранее благодарю)
 
 Top
evgenijj
Отправлено: 25 Сентября, 2007 - 19:50:08
Post Id



Участник


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


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




Давай попробуем разобраться. Итак, во-первых, у нас не одна, а две таблицы - вопросы (questions) и ответы (answers). Каждая запись в таблице answers имеет ссылку на первичный ключ таблицы questions.

Чтобы провести тестирование, тебе нужно вывести на страницу все вопросы, и для каждого вопроса - список ответов (я здесь не рассматриваю вариант, когда возможны разные экзамены - тогда каждый вопрос должен содержать ссылку на родительский элемент - запись в таблице "экзамены")
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. < p>Первый вопрос</p>
  4. <select name="question14">
  5.   <option value="12">Первый вариант ответа на вопрос ID=14</option>
  6.   <option value="222">Второй вариант ответа на вопрос ID=14</option>
  7.   <option value="173">Третий вариант ответа на вопрос ID=14</option>
  8. </select>
  9.  
  10. < p>Второй вопрос</p>
  11. <select name="question145">
  12.   <option value="276">Первый вариант ответа на вопрос ID=145</option>
  13.   <option value="11">Второй вариант ответа на вопрос ID=145</option>
  14.   <option value="54">Третий вариант ответа на вопрос ID=145</option>
  15. </select>
  16.  
  17. < p>Третий вопрос</p>
  18. <select name="question98">
  19.   <option value="44">Первый вариант ответа на вопрос ID=98</option>
  20.   <option value="19">Второй вариант ответа на вопрос ID=98</option>
  21.   <option value="270">Третий вариант ответа на вопрос ID=98</option>
  22. </select>
  23.  
 
 Top
valenok
Отправлено: 25 Сентября, 2007 - 21:40:10
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Помоему у него выводится за раз один вопрос и ему нужно чтоб при сабмите выводился следующий вопрос.
И ещё похоже речь идёт об одной таблице.

Тогда вот вам LIMIT .
Постарайтесь сначала сами придумать куда его прибить.

http://www[dot]webmasterschool[dot]ru/php/ch12.php
начиная с Опeратор SELECT



Когда у тебя в руках молоток
всё вокруг похоже на гвоздь.


-----
Truly yours, Sasha.
 
My status
 Top
SergeantPEPPER
Отправлено: 28 Сентября, 2007 - 18:30:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


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




Спасибо за советы... На самом деле у меня действительно за один раз выводится только один вопрос и по сабмиту я выполняю проверку правильности отмеченного чекбокса и в то же время загружаю новый вопрос и варианты ответа к нему. Вообще проблему я уже обошел, введя дополнительное поле. Но решение, на мой взгляд, не очень хорошее... И вот еще вопрос: А что лучше хранить вопросы и варианты ответов к ним В РАЗНЫХ ТАБЛИЦАХ??? Если это так, объясните почему. Заранее спасибо)
 
 Top
valenok
Отправлено: 28 Сентября, 2007 - 18:35:48
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Тут скорее дело в том кому как удобней.
Я бы тоже хранил в одной.

Скорее всего Евгений считает что для каждого ответа отведена отдельная колонка в таблице, тогда одна таблица получается слишком "широкой".

А касаемо своего дополнительного номера, а при удалении вопроса вы его всё таки перенумировываете?

И прочитайте про LIMIT. Ссылка в моём предыдущем сообщении.


-----
Truly yours, Sasha.
 
My status
 Top
evgenijj
Отправлено: 28 Сентября, 2007 - 19:41:06
Post Id



Участник


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


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




Цитата:

И вот еще вопрос: А что лучше хранить вопросы и варианты ответов к ним В РАЗНЫХ ТАБЛИЦАХ??? Если это так, объясните почему.


Мне такая структура кажется вполне логичной

Таблица questions
PHP:
скопировать код в буфер обмена
  1.  
  2. id_question - уникальный ID вопроса
  3. question - сам вопрос
  4. id_answer - ID правильного ответа
  5.  
  6. id_question | question                    | id_answer
  7. ---------------------------------------------------------
  8. 1           | Зачем аборигены съели Кука? | 5
  9. 3           | Водитель "Антилопы Гну"     | 7
  10. .....................................................
  11.  


Таблица answers
PHP:
скопировать код в буфер обмена
  1.  
  2. id_answer - уникальный ID ответа
  3. answer - сам ответ
  4. id_question - ID вопроса, на который отвечает этот ответ
  5.  
  6. id_answer | answer          | id_question
  7. ---------------------------------------------------------
  8. 1         | Хотели кушать   | 1
  9. 2         | Ошибка вышла    | 1
  10. 5         | Из уваженья     | 1
  11. 7         | Адам Козлевич   | 3
  12. 22        | Остап Бендер    | 3
  13. 51        | Шура Балаганов  | 3
  14. .......................................................
  15.  


А по поводу LIMIT можно почитать здесь
http://www.php.su/articles/?cat=...les&page=062
Только у тебя переменная $num будет равна 1
PHP:
скопировать код в буфер обмена
  1.  
  2. // Переменная хранит число сообщений выводимых на станице
  3. $num = 25;
  4.  
 
 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