login  Naam:   Wachtwoord: 
Registreer je!
 Forum

checkbox(database values) selecties terug toevoegen in tabel.

Offline b_devroey - 04/12/2011 18:27
Avatar van b_devroeyLid Beste,

Met de onderstaande code haal ik categorieën en onderliggende producten (branches) op en geef ze weer in mijn form... elk product heeft een vooraan de naam een checkbox.

Elke branche heeft ook een Uniek nummer (bID), omdat het mogelijk is om meerdere opties aan te vinken, tracht ik alle bID van alle geselecteerde optie's comma gescheiden op te slaan via een query...

Klein voorbeeldje van mijn form:
> een aantal text velden > naam, adres...
> en de dynamische checkboxes...

Mijn doel
hoe kan ik elk id (bID) van elk value comma gescheiden maken, als deze aangevinkt zijn bv.(2,3, 4,8,34). en deze dan me in de Insert Query te steken.


  1. <?php
  2. $objCon1 = new cDatabase;
  3. $objFun1 = new cFunction;
  4. if(($link=$objCon1->connectMYSQL())!=FALSE){ // connect mysql
  5. if($objCon1->connectDB($link)!=FALSE){ // select databasen;
  6. $sQry = "select * from categories";
  7. if($result=@mysql_query($sQry)) {
  8.  
  9. ?>
  10. <tr><?php while($rec=mysql_fetch_array($result)) { ?>
  11. <th width="344" align="left" valign="top" scope="col"><p><?php echo $rec['Catname']; ?><br>
  12. <?php $sQry1 = "select * from subcategories where subcategories.catid=".$rec['Catid']."";
  13. if($result1=@mysql_query($sQry1)) {
  14. while($rec1=mysql_fetch_array($result1)) { ?>
  15. <input type="checkbox" name="checkbox2" id="checkbox2">
  16. <?php echo $rec1['Subcatname']; ?> <br>
  17.  
  18. <?php } } ?>


Ik heb wat druk op mijn rug..
Hopelijk kan iemand me helpen,
Bart Devroey  

2 antwoorden

Gesponsorde links
Offline vinTage - 04/12/2011 21:28
Avatar van vinTage Nieuw lid Ik snap niet helemaal wat je wilt, maar van wat ik ervan denk te begrijpen..

Je maakt een string met ID's gescheiden door een komma, en wilt met de id's in die string 'iets' doen?

  1. $idstring = "1,2,6,11,45,95,109";
  2.  
  3. $ids = explode(",", $idstring);
  4. foreach($ids as $id)
  5. {
  6. echo 'doe iets met: '.$id.'<br />';
  7. }
Offline WouterJ - 04/12/2011 21:46 (laatste wijziging 04/12/2011 21:57)
Avatar van WouterJ HTML gevorderde @vintage, nee hij wil alle input checkboxes ophalen en de ids in een string laten zien. (als ik het goed begrijp)

@b_devroey:
Ik heb dit niet getest, maar volgens mij moet het wel werken. Het is in elk geval een stap in de goede richting:
  1. <?php
  2. if( $_SERVER['REQUEST_METHOD'] == 'POST' )
  3. { # Form is verzonden
  4. $errors = array();
  5. if( !isset($_POST['bIDs']) || count($_POST['bIDs']) == 0 )
  6. { # Er zijn geen checkboxen geselecteerd
  7. $errors[] = 'U moet wel iets selecteren'; // Dit kan eventueel weggelaten worden
  8. }
  9.  
  10. if( count($errors) == 0 )
  11. { # Er zijn geen errors
  12. $bID = mysql_real_escape_string(implode(',', $_POST['bIDs']));
  13. $sQuery = "SELECT iets FROM plaats WHERE bId = '".$bID."'";
  14. // Voer de query uit en handel het af
  15. }
  16. }
  17. <!-- HTML troep -->
  18. <form action method="post">
  19. <label><input type="checkbox" value="1" name="bIDs[]">Branch 1</label>
  20. <label><input type="checkbox" value="2" name="bIDs[]">Branch 2</label>
  21. <label><input type="checkbox" value="3" name="bIDs[]">Branch 3</label>
  22. <label><input type="checkbox" value="4" name="bIDs[]">Branch 4</label>
  23. <input type="submit" value="Verzend">
  24. </form>

Wat is de truc? Door in de name attribute [] te zetten maak je een array aan. We hebben nu dus een array in $_POST['bIDs']. Als deze is ingevuld en er dus geen errors zijn gebruiken we PHP.net: implode om de komma tussen de ids te zetten. Verder zie je nog PHP.net: mysql_real_escape_string voor het beveiligen van je query tegen SQL injection.

@vintage hieronder, bedankt voor het corrigeren heb het aangepast.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.405s