2016-12-29 1 views
0

Ich habe ein Problem bei der Übergabe des Eingabewerts von Checkbox-Array an POST, aber es funktioniert überhaupt nicht. Die folgenden Codes befassen sich damit, wie ich den Eingabewert des Checkbox-Arrays an POST übergebe. Die Datenbank und der Server funktionieren gut, da ich nur den Wert ausprobiert habe, anstatt Variablen zu übergeben, und es funktioniert in diesem Fall, und es muss das Problem des Codierteils sein. Ich habe mehrere Ansätze von anderen ausprobiert, aber es hat überhaupt nicht funktioniert. Hat jemand eine Idee? Vielen Dank!Der Eingabewert des Checkbox-Arrays kann nicht auf meiner PHP-Seite an POST übergeben werden

Die Checkbox an Eingabeformular:

  <form action='' method='post'> 

    <input type='hidden' name='postID' value='<?php echo $row['postID'];?>'> 

    <p><label>Title</label><br /> 
    <input type='text' name='postTitle' value='<?php echo $row['postTitle'];?>'></p> 

    <p><label>Description</label><br /> 
    <textarea name='postDesc' cols='60' rows='10'><?php echo $row['postDesc'];?></textarea></p> 

    <p><label>Content</label><br /> 
    <textarea name='postCont' cols='60' rows='10'><?php echo $row['postCont'];?></textarea></p> 

    <fieldset> 
    <legend>Categories</legend> 
    <?php 
    $stmt2 = $db->query('SELECT catID, catTitle FROM blog_cats ORDER BY catTitle'); 
    while($row2 = $stmt2->fetch()){ 

     $stmt3 = $db->prepare('SELECT catID FROM blog_cat_cats WHERE catID=:catID AND postID=:postID'); 
     $stmt3->execute(array(':catID'=> $row2['catID'],':postID'=> $row['postID'])); 
     $row3 = $stmt3->fetch(); 

     if($row3['catID'] == $row2['catID']){ 
      $checked = 'checked="checked"'; 
     } else { 
      $checked = ''; 

     }?> 
    <input type='checkbox' name='catIDlist[]' value='<?php echo $row2['catID']; ?>' <?php echo $checked;?>> <?php echo $row2['catTitle']; ?><br/> 
    <?php } 
    ?> 
    </fieldset> 

    <p><input type='submit' name='submit' value='Update'></p> 
</form> 

Der POST Teil den Wert aus dem Kontrollkästchen abrufen

<?php if(isset($_POST['submit'])){ 
    $_POST = array_map('stripslashes', $_POST); 

    //collect form data 
    extract($_POST); 
//Check the valid input from the form 
    if($postID ==''){ 
     $error[] = 'This post is missing a valid id.'; 
    } 
    if($postTitle ==''){ 
     $error[] = 'Please enter the title.'; 
    } 
    if($postDesc ==''){ 
     $error[] = 'Please enter the description.'; 
    } 
    if($postCont ==''){ 
     $error[] = 'Please enter the content.'; 
    } 

    if(!isset($error)){ 

     try { 
      $stmt = $db->prepare('UPDATE blog_posts SET postTitle = :postTitle, postDesc = :postDesc, postCont = :postCont WHERE postID =:postID'); 
      $stmt->execute(array(
       ':postTitle' => $postTitle, 
       ':postDesc' => $postDesc, 
       ':postCont' => $postCont, 
       ':postID' => $postID 
       )); 

      $stmt = $db->prepare('DELETE FROM blog_cat_cats WHERE postID = :postID'); 
      $stmt->execute(array(':postID' => $postID)); 

      $catlist = array(); 

      $stmt = $db->prepare('DELETE FROM blog_cat_cats WHERE postID = :postID'); 
      $stmt->execute(array(':postID' => $postID)); 

      if(is_array($catIDlist)){ 
       foreach($_POST['catIDlist'] as $catvalue){ 
        $stmt = $db->prepare('INSERT INTO blog_cat_cats (postID, catID) VALUES (:postID, :catID)'); 
        $stmt->execute(array(
         ':postID' => $postID, 
         ':catID' => $catvalue 
        )); 
       } 
      } 
} catch (PDOException $e){ 
      echo $e->getMessage(); 
     } 
    } 

} 
} ?> 

Antwort

0
<?php 
$catIDlist = $_POST['catIDlist']; 
if(is_array($catIDlist)){ 
    foreach($_POST['catIDlist'] as $catvalue){ 
     $stmt = $db->prepare('INSERT INTO blog_cat_cats (postID, catID) VALUES (:postID, :catID)'); 
     $stmt->execute(array(
      ':postID' => $postID, 
      ':catID' => $catvalue 
     )); 
    } 
} 
?> 
+0

Ich habe das Ding schon gestellt. Vielleicht sollte ich bei meiner Frage viel Klarheit schaffen. –

0

Haben var_dumped Sie $ _POST Variablen nach der Einreichung? Enthält es Werte in "catIDlist"?

Es scheint, dass Ihr Codierungsteil in Ordnung ist und es sollte funktionieren.

Wahrscheinlich haben Sie einige Eingabe in unten von diesem Code mit dem gleichen Namen "catIDlist", die Werte überschreiben wird.

Sie haben hier Druck AKTUALISIERT Problem. Sie drucken den Namen Checkbox als:

<input type='checkbox' name='catlist-<?= $row2['catID']; ?>' value='catlist-<?php echo $row2['catID']; ?>' <?php echo $checked;?>> <?php echo $row2['catTitle']; ?><br/> 

So das Ergebnis wird so etwas wie dieses:

<input type="checkbox" name="catlist-1" value="catlist-1">Cat Title<br /> 

Aber in der Handler-Skript Sie $ catIDlist Variable zu überprüfen.

Versuchen Sie, den Druck, dies zu ändern:

<input type='checkbox' name='catIDlist[]' value='<?php echo $row2['catID']; ?>' <?php echo $checked;?>> <?php echo $row2['catTitle']; ?><br/> 

Es sollte funktionieren.

+0

Ich habe versucht, Echo var_dump ($ _ POST ['catIDlist']); und es gibt NULL zurück ... Ich habe keine Variablen mit der Bezeichnung catIDlist erstellt, die nicht Teil der Checkbox sind. Warum würde das passieren? –

+0

Nicht sicher, warum es passiert. Können Sie einen vollständigen Code beider Skripts (Formular- und Handlerscript) posten? –

+0

Okay, ich füge sie alle jetzt –

Verwandte Themen