2016-04-23 7 views
0

HTMLAktualisierungsabfrage basiert auf HTML Wählen Sie eine Option Array PHP

  <input type="hidden" name="coreid[]" value="<?php echo $coreid; ?>"> 
      <input type="hidden" name="student_no" value="<?php echo $student_no; ?>"> 

      <div class="col col-lg-2 col-md-2 col-xs-2"> 
       <div class="form-group"> 
        <select name="corevalues[]" class="form-control"> 
         <option value="">Select</option> 
         <?php 

       $result11 = mysqli_query($con, "SELECT * FROM core_values"); 

       while ($row11 = mysqli_fetch_array($result11)){ 
        $idcore = $row11['id']; 
        $levelid = $row11['marking']; 
        $level_name = $row11['non_marking']; 
        if ($first == $level_name){ 
         echo '<option value="'.$level_name.'" selected="selected">'.$level_name.'</option>'; 
        } else{ 
         echo '<option value="'.$level_name.'">'.$level_name.'</option>'; 
        } 
       } 
         ?> 
        </select> 
       </div> 
      </div> 

PHP

$coreid = $_POST['coreid']; 
$grade = $_POST['corevalues']; 
$student_no = $_POST['student_no']; 
$quarter = $_POST['quarter']; 
$marking = $_POST['marking']; 
$quarter2 = $_POST['quarter2']; 

$xx = 0; 



foreach ($coreid as $sid) { 
    foreach ($grade as $sid2) { 
     $checkrecords = mysqli_query($con, "SELECT * FROM teacher_cv WHERE coreid='".$sid."' AND student_no='".$student_no."'"); 

      if (mysqli_num_rows($checkrecords) > 0){ 

       $sql = "UPDATE teacher_cv 
         SET $quarter='".$sid2."' 
           WHERE coreid='".$sid."' AND 
            student_no='".$student_no."'"; 

      if (!mysqli_query($con,$sql)) 
      { 
       die('Error: 1 ' . mysqli_error($con)); 
      } 
       $xx++; 
      } else{ 

       $sql = "INSERT INTO teacher_cv 
       (  coreid, 
          $quarter, 
           student_no) 
      VALUES (  '".$sid."', 
          '".$sid2."', 
           '".$student_no."')"; 

       if (!mysqli_query($con,$sql)) 
       { 
        die('Error: 1 ' . mysqli_error($con)); 
       } 
       $xx++; 
     } 
    } 
} 

Im Aktualisierung meiner Tabelle teacher_cv mit Basis mehr Daten auf HTML Wählen Sie eine Option. Um zu zeigen, welchen Standard der Kernwert in Lehrern Student.

Aber es scheint Update und einfügen Abfrage erhält immer den letzten Teil, wenn es um first_q ist, die eine Spalte in meiner Tabelle. Hier ist das Beispiel, das ich bisher gemacht habe.

Es scheint, dass die Kern-ID funktioniert, aber der Standard, der in HTML Select ausgewählt wurde, erhält immer den letzten Teil des Arrays. Wie kann ich das gesamte Array, nicht den letzten Teil des Arrays, einfügen/aktualisieren?

UPDATE

ich es vor dem foreach versucht, Druck zu sehen, ob es ist wirklich das Array oder nicht vorbei und hier ist das Ergebnis.

Array ([0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5) 
    Array ([0] => Sometimes Observed [1] => Rarely Observed [2] => Rarely Observed [3] => Not Observed [4] => Sometimes Observed) 

Dank Kunal jetzt weiß ich, dass das Array wirklich vorbei ist. Warum wird nur das letzte Array in die Datenbank eingegeben? Was ist falsch mit mo PHP-Code?

+0

drucken $ cleid und $ grade kurz bevor die foreach beginnt ... !! Gibt es Array oder einen einzelnen Wert zurück? – Kunal

+0

@Kunal für $ Klasse gibt einen einzelnen Wert zurück, denke ich. –

+0

@Kunal Ich habe versucht, Ihren Vorschlag zu drucken, bevor die Foreach und ihre Rückkehr ArrayArray –

Antwort

1

Sie sollten keine verschachtelten Schleifen mit $coreid und $grade verwenden, da die entsprechenden Elemente jedes Arrays zusammengehören. Du hast ein Kreuzprodukt zwischen allen erschaffen. So sollte es sein:

foreach ($coreid as $i => $sid) { 
    $sid2 = $grade[$i]; 
    ... 
} 

Auch da Sie MySQLi verwenden, sollten Sie bereit, Abfragen verwenden stattdessen Variablen auf die Anfragen von verketten. Und wenn es einen eindeutigen Index für (coreid, student_no) gibt, können Sie alles in einer einzigen INSERT Abfrage mit der Option ON DUPLICATE KEY UPDATE tun.

$stmt = mysqli_prepare($con, "INSERT INTO teacher_cv (coreid, quarter, student_no) 
    VALUES(?, ?, ?) 
    ON DUPLICATE KEY UPDATE quarter = VALUES(quarter)" or die(mysqli_error($con));; 
mysqli_stmt_bind_param($stmt, "sss", $sid, $sid2, $student_no); 

foreach ($coreid as $i => $sid) { 
    $sid2 = $grade[$i]; 
    mysqli_stmt_execute($stmt); 
    $xx++; 
} 
+0

Vielen Dank, dass es endlich funktioniert: D Ich wünschte, ich könnte Ihnen einen Kaffee kaufen .... –

Verwandte Themen