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

Форум PHP

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

 

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

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

тема: массив
 
 автор: averkov   (10.11.2010 в 15:59)   письмо автору
 
 

Вывожу массив из таблицы БД с помощью цикла "do - while":

    <form style="margin-left:7px;" action="obr_poisk1.php" method="post">
    <select name="fam">
<?php 
$result13 
mysql_query ("SELECT * FROM perv ORDER BY fam",$db);
$myrow13 mysql_fetch_array($result13);

  do
  {
  
printf 
  
(
  
'<option>%s</option>'
  
,$myrow13['fam']);
  
  }
  while (
$myrow13 mysql_fetch_array($result13));
?>
</select><br><br>
<input name="submit" type="submit" value="Вывести!">
    </form> 

В поле "fam" помещены фамилии, которые часто повторяются. Как сделать, чтобы в цикле все фамилии выводились только один раз, без повторов, как это записано в БД?

  Ответить  
 
 автор: Trianon   (10.11.2010 в 16:03)   письмо автору
 
   для: averkov   (10.11.2010 в 15:59)
 

>Вывожу массив из таблицы БД с помощью цикла "do - while":
дальше можно не продолжать?

  Ответить  
 
 автор: averkov   (10.11.2010 в 17:19)   письмо автору
 
   для: Trianon   (10.11.2010 в 16:03)
 

Вам что-то не по нраву?

  Ответить  
 
 автор: Trianon   (10.11.2010 в 17:21)   письмо автору
 
   для: averkov   (10.11.2010 в 17:19)
 

конечно.
do-while не по делу.
Здесь это давно уже маячок - значит человек
а)начитался какой-то дряни, вместо учебника,
б) напрочь не понимает, как работают конструкции, им в скрипте применяемые.

  Ответить  
 
 автор: psychomc   (10.11.2010 в 18:41)   письмо автору
 
   для: Trianon   (10.11.2010 в 17:21)
 

говорят так у топикстартера Попов учит :)

  Ответить  
 
 автор: Trianon   (10.11.2010 в 19:11)   письмо автору
 
   для: psychomc   (10.11.2010 в 18:41)
 

Ну вот, отвечая словами Стефана Крейна, The fact has not created in me a sense of obligation
Равно как и БХВ, на который тут недавно ссылались.

  Ответить  
 
 автор: averkov   (10.11.2010 в 23:27)   письмо автору
 
   для: Trianon   (10.11.2010 в 17:21)
 

Уважаемый г-н!
Я обратился на форум за помощью. Как я понял, моё обращение вызвало у Вас игривые эмоции. Но, если Вы можете, и Ваша подготовка это позволяет, отбросьте в сторону эмоции и ответьте на мой вопрос, если же нет, то продолжайте в том же духе. (PS Скрипт работает нормально, проблема одна - в моём вопросе)

  Ответить  
 
 автор: Trianon   (10.11.2010 в 23:36)   письмо автору
 
   для: averkov   (10.11.2010 в 23:27)
 

Что ж ... Попытаюсь ответить сухо и без эмоций.
Если Вы хотите, чтобы в SQL-отклике отсутствовали повторы фамилий, то, очевидно, запрашивать нужно не все поля, а только поля фамилий, и не все строки, а только отличающиеся друг от друга.
Это в общем-то не тема языка php.
Это тема языка SQL, то есть соседний раздел.
SQL-запрос будет выглядеть как-то так
SELECT DISTINCT fam FROM perv ORDER BY fam


Хотя более правильно было бы сделать так, чтоб повторяющиеся фамилии в строках таблицы не лежали вовсе.


PS.
Я могу рассчитывать на встречную сухую откровенность?
Зачем Вы пишете этот скрипт?

  Ответить  
 
 автор: averkov   (10.11.2010 в 23:57)   письмо автору
 
   для: Trianon   (10.11.2010 в 23:36)
 

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

Повтор фамилий связан с тем, что юзер с fam совершает абсолютно различные действия (заявки) и они вносятся в БД.

2. А чем плох "do - while"?

3.Громадное спасибо за помощь, храни Вас бог!

  Ответить  
 
 автор: Trianon   (11.11.2010 в 00:13)   письмо автору
 
   для: averkov   (10.11.2010 в 23:57)
 

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

2. он хорош, но на своем месте. Там, где условие завершения цикла анализируется не раньше первого его повтора.
У Вас же случай совершенно другой.

А еще этот самый do-while хорош тем, что лакмусовой бумажкой вскрывает посетителей, которые вместо того, чтобы учить язык, посмотрели некий видеокурс в стиле "не парься, делай как я".

PS.ясно. Ответа не будет.
Можно было не отвечать.

  Ответить  
 
 автор: Slo_Nik   (10.11.2010 в 23:40)   письмо автору
 
   для: averkov   (10.11.2010 в 15:59)
 

Вот возьмите для начала и ознакомтесь с циклами
Особенно обратите внимание на маленькое замечание по поводу использования цикла do while.

1) Откажитесь от использования вышеупомянутого цикла в пользу просто while

2) Что бы не выводились повторяющиеся фамилии используйте в запросе DISTINCT
подробно

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

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