2013-07-12 3 views
0

Echo 'Hello programmers';В раскрывающемся меню DB не отображаются данные из базы данных

Я почесываю голову о паре выпадающих меню. Они должны отображать все строки из ename и mid rows. Однако этого не происходит, и в раскрывающемся списке отображается только один результат из каждой строки. В фактических строках есть несколько строк тестовых данных.

У меня есть код здесь, и, возможно, вы можете протянуть руку. Позволь мне объяснить.

Прежде всего это методы класса dbme. Чтобы сохранить загромождали вниз второй функции точно так же, за исключением запроса SQL для GetResult(), очевидно, отличается (SELECT * от члена, в отличие от memberevent)

function openDB() {//creating database connection 
     $conn = mysqli_connect("localhost", "root", "", "mydb"); 
     if (!$conn) { 
      $this->error_msg = "connection error could not connect to the database:! "; 
    return false; 

     } 

      $this->conn = $conn; 
      return true; 
     } 



     function getResult($sql){ 

      $result = mysqli_query($this->conn , "SELECT * from memberevent"); 
      if ($result) { 
       return $result; 
      } else { 
       die("SQL Retrieve Error: " . mysqli_error($this->conn)); 
      } 
     } 

Во-вторых, это веб-сторона данных ,

$db1 = new dbme(); 
$db1->openDB(); 
$sql="select mid from member"; 
$result=$db1->getResult($sql);// get the ids from the tables for the select 

$sql1="select ename from event"; 
$result1=$db1->getResult($sql1);// get the ids from the tables for the select 

if (!$_POST) //page loads for the first time 
{ 
?> 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" onsubmit="return validateForm();"> 
Select Member ID: <select name="mid"> 
<?php 
while($row = mysqli_fetch_assoc($result)) 
echo "<option value='{$row['mid']}'>{$row['mid']} </option>"; 
?> 
</select> 
<br /> 
Select Event name : <select name="ename"> 
<?php 
while($row = mysqli_fetch_assoc($result1)) 
echo "<option value='{$row['ename']}'>{$row['ename']} </option>"; 

?> 
</select> 
<br /> 

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

Спасибо.

ответ

0

Вы передаете в SQL, но никогда не использовать его:

Изменить

function getResult($sql){ 

    $result = mysqli_query($this->conn , "SELECT * from memberevent"); 

Для

function getResult($sql){ 

      $result = mysqli_query($this->conn , $sql); 
+0

Это, как представляется, работает. Спасибо. – Lemonsface

1

Вы должны перебирать свои результаты внутри вашей getResults() функции, в противном случае вы будете всегда получается только один ряд.

+0

Какой цикл вы бы использовали. Я использовал цикл while. В псевдокоде i меньше 20 приращений i. Таким образом, это должно вернуть результат 20 раз. Это, по-видимому, вызывает максимальную ошибку времени выполнения. – Lemonsface

+0

Я обычно использую 'foreach ($ row = mysqli_fetch_array ($ result))', однако вы можете использовать либо. Не могли бы вы показать мне код, который вы добавили? –

+0

Конечно, это то, что я сделал просто как быструю пробную версию, не исследуя все варианты цикла (в том числе тот, который вам было предложено) ** function getResult ($ sql) { $ i = 0; while ($ i <= 20) $ result = mysqli_query ($ this-> conn, "SELECT * from memberevent"); if ($ result) { return $ result; $ i ++; } else { die ("SQL Retrieve Error:". Mysqli_error ($ this-> conn)); } } ** – Lemonsface

Смежные вопросы