2016-05-11 10 views
1

Ich lade einige Daten aus einer db-Tabelle zu Kontrollkästchen. Wenn ein Benutzer Boxen prüft und Daten übermittelt, müssen die Werte aus diesen Kontrollkästchen zu einer anderen Tabelle hinzugefügt werden. Mit dem Code, den ich jetzt habe, kann ich Werte von einer aktivierten Box senden. Was fehlt mir beim Senden der Werte aller aktivierten Kontrollkästchen?Senden von Werten an db, wenn mehrere Kontrollkästchen aktiviert sind

<table> 
    <?php  
    $q5=mysqli_query($link,"SELECT * FROM brands_offer WHERE Brand_Id='$bid' AND Published='1' "); 
    while($row5 = mysqli_fetch_array($q5)){ 
     $catid= $row5['Catg_Id']; 
     $subcatid= $row5['Subcatg_Id']; 
     $pid= $row5['Product_Id'];  
    ?><tr><td> 
    <form action="store-admin.php?search=<?php echo $stname;?>#stock" method="post"> 
    <input type="checkbox" name="checkbox" value="<?php echo "$bname,$catid,$subcatid,$pid";?>" > 
    <?php 
     echo $bname; 
     echo " -> "; 
     echo $catid; 
     echo ", "; 
     echo $subcatid; 
     echo ", "; 
     echo $pid; 
     echo " "; 
    } 
    ?></td></tr> 
    <input type="submit" value="Save Changes" name="add" > 
    </form> 
    </table> 
    <?php 
    if(isset($_POST['add'])) 
    { 
    $chk = $_POST['checkbox']; 

    $val = explode(",",$chk); 
    $bn = $val[0]; 
    $cid= $val[1]; 
    $scid= $val[2]; 
    $prid= $val[3]; 

    echo "<script type='text/javascript'>alert('brand: ". $bn."')</script>"; 
    echo "<script type='text/javascript'>alert('cat: ". $cid."')</script>"; 
    echo "<script type='text/javascript'>alert('sub: ". $scid."')</script>"; 
    echo "<script type='text/javascript'>alert('pr: ". $prid."')</script>"; 

    }?> 

Antwort

1

Verwenden Klammern in Ihrem Checkbox attribute name name="checkbox[]" und Ihre Post Variable wird ein Array von ausgewählten Werten sein.

Edit: Ich bemerkte, dass Sie Formular öffnen Tag innerhalb der While-Schleife haben. Sie müssen es vor while-Schleife setzen, sonst erzeugt es Tonnen von öffnenden Form-Tags.

+0

nur 'name =" checkbox [] "' würde ausreichen? keine Notwendigkeit, in der 'if (isset' zu ändern, wo ich die Werte bekomme? –

+0

@YohanBlake Ja keine Notwendigkeit zu ändern, nur was Sie brauchen, ist offensichtlich Schleife die Post-Variable, um alle Werte zu bekommen. – TheDrot

+0

ja, versuchte ich einschließlich der POST-Code in der while-Schleife, aber es hat nicht funktioniert.Wie schleife ich die POST-Variable? –

0

So sieht es aus, als ob Sie nur ein Kontrollkästchen haben. Wenn Sie die Werte aller Kontrollkästchen als Array POST senden möchten, müssen Sie [] zu dem name Ihres input Felds hinzufügen. Also:

<input type="checkbox" name="checkbox[]" value="<?php echo "$bname";?>"/> 
<input type="checkbox" name="checkbox[]" value="<?php echo "$catid";?>"/> 
<input type="checkbox" name="checkbox[]" value="<?php echo "$subcatid";?>"/> 
<input type="checkbox" name="checkbox[]" value="<?php echo "$pid";?>"/> 

Hoffentlich habe ich Ihre Frage verstanden.

+0

nur name = "checkbox []" würde ausreichen? keine Notwendigkeit, in der if zu ändern (isset wo ich die Werte bekomme? –

+0

@YohanBlake Nicht von dem, was ich sehen kann. Sie überschreiben den Post-Parameter, wenn Sie den gleichen Namen für mehrere Eingabefelder verwenden, es sei denn, Sie ** anhängen **) * zum Namen Dies lädt die POST-Parameter als "Array" anstelle von "normalen" Schlüssel: Wert-Paare. –

+1

Er hat mehrere Kontrollkästchen durch While-Schleife zu generieren. – TheDrot

Verwandte Themen