Функция PHP для возврата результатов SQL - PullRequest
1 голос
/ 05 октября 2009

Это то, что у меня есть

function GetEventsList(){
    $result = mysql_query("SELECT * FROM `events`") or trigger_error(mysql_error()); 
    while($row = mysql_fetch_array($result)){ 
    foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
    $id = $row['id'];
    $en = $row['name'];
    $endt = $row['date'];
    $push = "<option value=$id>$en - $endt</option>";
    return $push;
    }
    }

Возвращает только 1 результат, когда в таблице есть 3

Ответы [ 3 ]

4 голосов
/ 05 октября 2009

Это потому, что вы возвращаетесь из функции в конце первой итерации. Попробуйте:

function GetEventsList() {
  $result = mysql_query("SELECT * FROM `events`") or trigger_error(mysql_error()); 
  $push = '';
  while ($row = mysql_fetch_array($result)) {
    foreach($row AS $key => $value) {
      $row[$key] = stripslashes($value); 
    }
    $id = $row['id'];
    $en = $row['name'];
    $endt = $row['date'];
    $push .= "<option value=$id>$en - $endt</option>";
  }
  return $push;
}

На заметку: если бы вы использовали хорошее форматирование / отступ, вам было бы намного легче это определить.

Кроме того, вы уверены, что вам нужно использовать stripslashes()?

2 голосов
/ 05 октября 2009

Если я правильно читаю код, верните $ push; выходит из цикла while преждевременно. Вы хотите вернуться только после того, как все результаты собраны и сохранены в чем-либо.

0 голосов
/ 05 октября 2009

Либо используйте echo $ push в цикле foreach; или поместите каждую итерацию элемента option в массив, затем вставьте массив по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...