2017-06-03 16 views
0

Ich versuche, Informationen aus der Datenbank abrufen, aber die Abfrage wird nur für die erste Zeile ausgeführt! Ich habe viele Dinge ausprobiert, aber es hat nicht funktioniert; Ich weiß nicht warum. Die get-Methode auf dem Tisch ist, die von der Datenbank gefüllt istPDO-Abfrage nur zum ersten Mal ausgeführt

Das Problem in der ersten Abfrage ist 'SELECT CouID FROM CoursesC WHERE StuID = :ID ' wenn ich die Abfrage 'SELECT CouID FROM CoursesC' ändern funktioniert es gut!

ich die Daten in ein <select> innerhalb eines modalen

FORM CODE präsentiert

<form action="<?php $_SERVER['PHP_SELF']?>" method="GET" id="contact"> 

<table id="studenttable"> 

    <tr> 
    <th></th> 
    <th>Student ID</th> 
    <th>Student Name</th> 
    <th>Student Passed Credits</th> 
    <th>Action</th> 
    </tr> 
    <?php 

    require('check.php'); 
$query = $conn->prepare('SELECT * FROM student WHERE AdvID=:id'); 
$query->bindParam(":id",$_SESSION['userid']); 
$query->execute(); 
$row = $query->fetch(); 

while($row = $query->fetch(PDO::FETCH_ASSOC)){ 
?> 
    <tr> 
    <td> <input type ="checkbox" name="checked[]" value="<?php echo $row['StuId'];?>"> </td> 
    <td><?php echo $row['StuId']; ?></td> 
    <td><?php echo $row['Name']; ?></td> 
    <td> </td> 
    <td> 

    <button type="submit" name="submit" value="<?php echo $row['StuId'];?>" class="btn icon-btn btn-info" ><span class="glyphicon glyphicon-info-sign"></span>More Information</button> 
    </td> 
    </tr>  
<?php 
} 
     do { 
    while ($query->fetch()) 
     ; 
    if (!$query->nextRowset()) 
     break; 
} while (true); 
    $conn=null; 
    $query->closeCursor(); 
?> 

</table> 

</form> 




<?php 
if (isset($_GET['submit'])){ 
    global $CC; 
    $count=1; 
    global $data; 
    $T=$_GET['submit']; 
?> 
<script> 
    $('#CC').html(""); 
    $('#CC1').html(""); 
</script> 
<?php 
    require('check.php'); 
    $q= $conn->prepare('SELECT CouID FROM CoursesC WHERE StuID = :ID '); 
    $q->bindValue(':ID', $_GET['submit']); 
    $q->execute(); 
    $data = $q->fetch(); 
    while($data = $q->fetch(PDO::FETCH_ASSOC)){ 
     $CC=$data['CouID']; 
?> 
<script> 
    $('#CC').append("<option><? echo $count++; echo "- "; echo $CC;?></option>"); 
</script> 
<?php 
    } 
    $q->closeCursor(); 
    $A=$CC; 
    /*echo "<script> alert('<?php $T ?>')";*/ 

    $q1= $conn->prepare('SELECT CouID FROM Courses'); 
    $q1->execute(); 
    $data1 = $q1->fetch(); 
    while($data1 = $q1->fetch(PDO::FETCH_ASSOC)){ 
     if($CC!=$data1['CouID']){ 
?> 
<script> 
    $('#CC1').append("<option><? echo $count++; echo "- "; echo $data1['CouID'];?></option>"); 
</script> 
<?php 
     } 
    } 
    $q1->closeCursor(); 
?> 
<script> 
    $(window).load(function(){ 
     $('#myModal').modal('show'); 
    }); 
</script> 
<? 
} 
?> 
<?php 
    if (isset($_GET['submit'])){ 
     global $CC; 
     $count=1; 
     global $data; 
     $T=$_GET['submit']; 
?> 
<script> 
    $('#CC').html(""); 
    $('#CC1').html(""); 
</script> 
<?php 
     require('check.php'); 
     $q= $conn->prepare('SELECT CouID FROM CoursesC WHERE StuID = :ID '); 
     $q->bindValue(':ID', $_GET['submit']); 
     $q->execute(); 
     $data = $q->fetch(); 
     while($data = $q->fetch(PDO::FETCH_ASSOC)){ 
      $CC=$data['CouID']; 
?> 
<script> 
    $('#CC').append("<option><? echo $count++; echo "- "; echo $CC;?></option>"); 
</script> 
<?php 
     } 
     $q->closeCursor(); 
     $A=$CC; 
     /*echo "<script> alert('<?php $T ?>')";*/ 

     $q1= $conn->prepare('SELECT CouID FROM Courses'); 
     $q1->bindParam(":id", $_GET['submit']); 
     $q1->execute(); 
     $data1 = $q1->fetch(); 
     while($data1 = $q1->fetch(PDO::FETCH_ASSOC)){ 
      if($CC!=$data1['CouID']){ 
?> 
<script> 
    $('#CC1').append("<option><? echo $count++; echo "- "; echo $data1['CouID'];?></option>"); 
</script> 
<?php 
      } 
     } 
     $q1->closeCursor(); 
?> 
<script> 
    $(window).load(function(){ 
     $('#myModal').modal('show'); 
    }); 
</script> 
<? 
    } 
?> 
<?php 
    if (isset($_GET['submit'])){ 
     global $CC; 
     $count=1; 
     global $data; 
     $T=$_GET['submit']; 
    ?> 
    <script> 
    $('#CC').html(""); 
    $('#CC1').html(""); 
    </script> 
    <?php 
    require('check.php'); 
    $q= $conn->prepare('SELECT CouID FROM CoursesC WHERE StuID = :ID '); 
    $q->bindValue(':ID', $_GET['submit']); 
    $q->execute(); 
    $data = $q->fetch(); 
    while($data = $q->fetch(PDO::FETCH_ASSOC)){ 
     $CC=$data['CouID']; 
?> 
<script> 
    $('#CC').append("<option><? echo $count++; echo "- "; echo $CC;?></option>"); 
</script> 
<?php 
    } 
    $q->closeCursor(); 
    $A=$CC; 
    /*echo "<script> alert('<?php $T ?>')";*/ 

    $q1= $conn->prepare('SELECT CouID FROM Courses'); 
    $q1->bindParam(":id", $_GET['submit']); 
    $q1->execute(); 
    $data1 = $q1->fetch(); 
    while($data1 = $q1->fetch(PDO::FETCH_ASSOC)){ 
     if($CC!=$data1['CouID']){ 
?> 
<script> 
    $('#CC1').append("<option><? echo $count++; echo "- "; echo $data1['CouID'];?></option>"); 
</script> 
<?php 
     } 
    } 
    $q1->closeCursor(); 
?> 
<script> 
    $(window).load(function(){ 
     $('#myModal').modal('show'); 
    }); 
</script> 
<? 
} 
?> 
+0

Hallo Ihre Frage ist sehr breit, wenn Sie die "Abfrage" sagen, müssen Sie bestimmte Abfrage, in Ihrem Code gibt es eine Menge von Abfragen. Wenn Sie sehr spezifisch sind, wird Ihnen leichter helfen. –

+0

@PabloCesarCordovaMorales Entschuldigung ich hatte Update mein Kommentar ist die erste Abfrage und ich denke, das Problem in $ q-> BindValue, weil, wenn ich es entfernen seine Arbeit, aber ich brauche es, um den Wert von Benutzer –

+0

': ID' und': ID sind zwei verschiedene Tiere, aber du machst nichts mit '$ q1 = $ conn-> prepare ('SELECT CouID FROM Kurse'); $ q1-> bindParam (": id", $ _GET ['submit']); 'wie in keiner Bindung und weiß nicht, warum Sie eine Submit als Referenz verwenden. –

Antwort

0

Versuchen Sie, diese Zeile zu ändern:

$q= $conn->prepare('SELECT CouID FROM CoursesC WHERE StuID = :ID '); 
$q->bindValue(':ID', $_GET['submit']); 

zu

$q= $conn->prepare('SELECT CouID FROM CoursesC WHERE StuID IN(:ID) '); 
$q->bindValue(':ID', implode(",",$_GET['checked'])); 

Ihr Formular gibt ein Array von IDs zurück, nicht nur eins, daher müssen Sie "IN" anstelle von "=" verwenden.

Verwenden Sie auch nicht <?php $_SERVER['PHP_SELF']?>. Verwenden Sie den Namen der Seite, falls Sie diese außerhalb Ihres Projekts bereitstellen möchten!

+0

ich denke, Sie haben nicht verwendet "checked" ist es für das Kontrollkästchen Ich benutze die Schaltfläche Senden, um seinen Wert senden THNX –

+0

Ja und es ist falsch. Die Variable $ _GET gibt bereits ein Array von Elementen Ihres Formulars zurück. Ich gehe davon aus, dass Sie vorgeben, die überprüfte ID abzurufen, also gibt es ein anderes Array namens "checked", das den Namen für diese Elemente darstellt. Jedes Element im überprüften Array ist ein ID-Wert. Implode-Funktion konvertiert sie in eine Zeichenfolge, die in Ihrer SQL-Anweisung lesbar ist. –

+0

Entschuldigung, ich glaube, ich habe die Logik hier verstanden ... Wenn der Benutzer auf die Schaltfläche klickt, dann wird EINE Benutzer-ID gesendet, richtig? Ich verstehe also nicht, warum Ihre Abfrage eine Liste zurückliefert, wenn Sie eine Benutzer-ID filtern ... –

Verwandte Themen