2016-04-19 4 views
0

Hier in diesem Code akzeptiere ich Daten als Array und Einfügen in der Datenbank. Da ich While-Schleife verwende, habe ich mehrere Eingabefelder mit demselben Namen, wie Sie im HTML-Code unten sehen können. Was ich tun möchte, ist, ich möchte eine Überprüfung hinzufügen, dass, wenn zwei Felder gleich sind, Echo-Fehler sagen zwei Felder können nicht identisch sein, sonst fügen Sie die Daten ein. Ich könnte es tun, wenn es zwei verschiedene Eingabefelder für die Daten wie if($field1 == $field2){ echo "Error!"; geben würde, sonst fügen Sie Daten ein. Aber hier ist das Feld nur eins mit mehreren Feldern in einer While-Schleife. Wie kann ich diesen Check hinzufügen?Hinzufügen von check in while-Schleife Eintrag

HTML-Formular-Code:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
     <?php while($pro = $priq->fetch()){ extract($pro); ?> 
     <div class="row tbpad"> 
      <div class="col-sm-3 col-xs-6"> 
      <p><i class="fa fa-caret-right"></i> <?php echo $bk_title; ?></p> 
      </div> 
      <div class="col-sm-1 col-xs-1"> 
      <div class="form-group"> 
       <input type="text" class="form-control" name="priority[]" value="<?php echo $pr_priority; ?>"> 
       <input type="hidden" class="form-control" value="<?php echo $bk_id; ?>" name="bkid[]"> 
      </div> 
      </div> 
     </div> 
     <?php } ?> 
     <input type="submit" class="btn btn-orange" value="Set Priority" name="priority"> 
     </form> 

PHP-Code:

if(isset($_POST['priority'])){ 
    $priority = (!empty($_POST['priority']))?$_POST['priority']:null; 
    $bkid  = (!empty($_POST['bkid']))?$_POST['bkid']:null; 

    $iNumSets = count($priority); 

    for($i = 0; $i < $iNumSets; $i++){ 
     $str = "INSERT INTO priorities(pr_book, pr_by, pr_priority) 
       VALUES('$bkid[$i]', '$sess', '$priority[$i]')"; 
     $res = $PDO->prepare($str); 
     $res->execute(); 

     if($res){ 
      echo '<script>alert("Priority added successfully!");window.location = "view-order.php";</script>'; 
     }else{ 
      echo '<script>alert("Server Error! Please try back later.");window.location = "add-order.php";</script>'; 
     } 
    } 
} 
+0

innerhalb der Schleife, die Sie window.location verwendet haben, wird es zu einer anderen Seite auf einer einzelnen Einfügeabfrage umleiten. die eine Sache ist, dass es nicht funktionieren würde für mehrere einfügen Abfrage – dev

+0

zuerst die Frage richtig verstehen ... dann antworte nur, wenn Sie die Antwort wissen ... von jedem Vorschlag plz speziell auf die Frage bezogen werden .. der Ort, an dem ich used window.location wird nur ausgeführt, wenn die Einfügung erfolgreich ist, wie es in der if-Anweisung ist. Also gibt es nichts, worüber man sich sorgen muss. –

+0

Ihr Code ist anfällig für SQL-Injections, Sie müssen vorbereitete Anweisungen verwenden, die –

Antwort

-1

Da $ priority ist ein Array, das Sie von $ erhalten _POST [ 'Priorität'], könnten Sie Folgendes tun:

Stellen Sie außerdem sicher, dass Sie mysql_real_escape_string() oder ähnliche Methoden für Ihre $ _POST-Eingabe verwenden, bevor Sie sie an S übergeben QL-Abfrage Andernfalls ist Ihr Code anfällig für SQL-Injektionen!

+0

Ich benutze PDO ... so brauchen Sie nicht mysql_real_escape_string ... aber .. ich werde versuchen Sie Ihre Antwort jetzt .. Danke –

+0

Entschuldigung für die späte Antwort .. arbeitete .. danke .. –