2016-10-20 4 views
0

Dies ist mein Code. Ich weiß, die while Schleife wird nur einmal funktionieren. Aber foreach Schleife nicht nach dem Abrufen eines Werts, d. H. Wenn ich 3 Kontrollkästchen auswähle. Nur einer wird die Werte weitergeben.While-Schleife funktioniert nur einmal für jeden PHP-Code

if(!empty($_POST["list"])) 
     { 
$connect = @mysql_connect("localhost","***","***") or die (" this error"); 
mysql_select_db("edu_info")or die ("database does not exist"); 


      foreach($_POST["list"] as $list=> $val) 
      { 


$query=mysql_query("select * from students where id='$val' limit 1"); 

while($row=mysql_fetch_assoc($query)) 
{ 
$user=$row['username']; 
$number=$row['pphone']; 
$name=$row['name']; 
$pname=$row['pname']; 
} 
echo $user; 
echo $number; 
echo $name; 
echo $pname; 
    } 
    } 

Dies ist meine Checkbox in HTML. Die Anzahl der Kontrollkästchen ist nicht festgelegt, es hängt von der query.Code unten nur mehrere Kontrollkästchen

{ 
     <input type="checkbox" name="list[]" value="<?php echo $id; ?> 
    } 

Warum ist foreach nicht Abrufen von Werten aus allen ausgewählten Kontrollkästchen zu bekommen ist. Bitte helfen Sie. Danke im Voraus. :)

+1

führen Sie keine Abfrage innerhalb einer Schleife wie dieser, Sie brauchen nur eine Abfrage, die weit effizienter ist – nogad

+0

Was ist '$ query1' und wie es mit' $ query' verknüpft ist? –

+1

Bin ich richtig zu raten, dass es nur den letzten Wert erhält, den Sie auswählen? Weil Sie die Variablen in Ihrem ersten Snipped überschreiben - und Sie tun wirklich nichts mit ihnen (zumindest nicht aus dem Code, den Sie gezeigt haben). – Qirel

Antwort

0

Es sieht für mich aus wie Ihre while-Schleife überschreibt die Werte jedes Mal. Ich sehe nicht, wo man mit den Werten etwas tun Sie abrufen, also zum Beispiel:

$user=$row['username']; 

dreimal werden die Ausführung, aber jedesmal, wenn der vorherige Wert überschrieben wird. Es gibt dir immer den letzten Wert, oder? Wenn ja, weil Sie $user dreimal setzen, und erst nach dem letzten machen Sie irgendetwas damit.

+0

bekommen Nachdem ich $ val bekommen habe, benutze ich es um Variablen wie $ user aus einer anderen Datenbank auszuwählen..aber wenn ich diese Variablen stimme bekomme ich nur einen Wert .. foreach führt nicht alle Checkboxen aus die ich ausgewählt habe .. also grundsätzlich bin ich ein $ val anstelle von vielen bekommen –