login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array opslaan in mysql (Opgelost)

Offline PNiels - 08/04/2010 19:20 (laatste wijziging 08/04/2010 19:39)
Avatar van PNielsLid Hey,

Ik heb een probleempje, het lukt me niet om de array op te slaan in mijn database.

  1. <?php
  2. if (isset ($_POST['toevoegen']) ){
  3. # Alle velden defienëren
  4. $sCategorie = mysql_real_escape_string($_POST['dhtmlgoodies_catt']);
  5. $sSubCategorie = mysql_real_escape_string($_POST['dhtmlgoodies_cat']);
  6. $sProductTitel = mysql_real_escape_string($_POST['product_titel']);
  7. $iPrijs = mysql_real_escape_string($_POST['prijs']);
  8. $sOmschrijving = mysql_real_escape_string($_POST['omschrijving']);
  9.  
  10. # Geen Categorie geselecteerd
  11. if ($sCateorie == "Selecteer categorie"){
  12. $sError[] = "U hebt geen categorie geselecteerd.";
  13. }
  14. # Geen subcategorie geselecteerd
  15. if (empty ($sSubCategorie) ){
  16. $sError[] = "U hebt geen subcategorie geselecteerd.";
  17. }
  18. # Geen product titel ingevuld
  19. if (empty ($sProductTitel) ){
  20. $sError[] = "U hebt geen product titel ingevuld.";
  21. }
  22. # Geen prijs ingevuld
  23. if (empty ($iPrijs) ){
  24. $sError[] = "U hebt geen prijs ingevuld";
  25. }
  26. # Geen omschrijving ingevuld
  27. if (empty ($sOmschrijving) ){
  28. $sError[] = "U hebt geen omschrijving ingevuld";
  29. }
  30. if (count($sError) > 0){
  31. foreach($sError as $fout){
  32. echo '<table width="40%"><tr><td><span class="RED">* '.$fout.'</span></td></tr></table>';
  33. }
  34. }
  35. else{
  36. $sImages = array();
  37. $any_image=0;
  38. foreach ($_SESSION["uploaded_images"] as $index => $uploaded){
  39. $sImages[] = "".$uploaded."|";
  40. $any_image=1;
  41. }
  42.  
  43. # Opslaan in de database
  44. $sQuery = "INSERT INTO producten (cat_id, subcat_id, titel, prijs, omschrijving, afbeeldingen, addby) VALUES ('".$sCategorie."','".$sSubCategorie."','".$sProductTitel."','".$iPrijs."','".$sOmschrijving."','".$sImages."','".$_SESSION['id']."')";
  45. mysql_query($sQuery) or die (mysql_error());
  46.  
  47. echo '<p><span class="GREEN">U hebt dit product succesvol toegevoegd.</span></p>';
  48. }
  49. }
  50. ?>


Dus ik kan $sImages niet opslaan.. Maar als ik de query in de foreach zet, dan insert ik hem een stuk of 20x ... Kan iemand me helpen aub?

Mvg,
Niels

7 antwoorden

Gesponsorde links
Offline Stijn - 08/04/2010 19:23
Avatar van Stijn PHP expert Met PHP.net: serialize kan je een array omzetten in een string zodat je die kan opslaan in een databank. Om de string terug om te vormen naar een array kan je PHP.net: unserialize gebruiken.
Bedankt door: Koen, Flex1986, PNiels
Offline PNiels - 08/04/2010 19:37 (laatste wijziging 08/04/2010 19:42)
Avatar van PNiels Lid Oké, het is deels gelukt. Maar nu krijg ik ze zo in mijn database:

a:5:{i:0;s:35:"images/uploads/38168_rihanna11.jpg|";
i:1;s:34:"images/uploads/ashlynn_brooke.jpg|";
i:2;s:39:"images/uploads/katy-perry-hot-cold.jpg|";
i:3;s:48:"images/uploads/pamala_anderson_poker-766279.jpg|"
;i:4;s:40:"images/uploads/zangeres_do_141630i1.jpg|";}

Zou eigelijk gewoon zo moeten:
images/uploads/38168_rihanna11.jpg|
images/uploads/ashlynn_brooke.jpg|
images/uploads/katy-perry-hot-cold.jpg|
images/uploads/pamala_anderson_poker-766279.jpg|
images/uploads/zangeres_do_141630i1.jpg|

dus is dit wel de juiste functie hiervoor ? Mijn bedoeling is gewoon om alles van $sImages op te slaan in de database
Offline genkstar - 08/04/2010 19:42
Avatar van genkstar Nieuw lid Ja dit is de juiste functie hiervoor ;)

Om ze terug te krijgen moet je je database record terug omzetten naar een array

unserialize($row['imgpath']); bijvoorbeeld..
Offline Flex1986 - 08/04/2010 19:47
Avatar van Flex1986 Gouden medaille

Senior Member
De methode die stijn aangeeft kan je array direct terug vertalen naar een array. om uitleg te geven over wat er gebeurt.

a:5 staat voor een array met de lengte 5
i:0;s:35 staat voor een string in index 0 van de array die een lengte heeft van 35 chars.
i:1;s:34 staat voor een string in index 1 van de array die een lengte heeft van 34 chars.

En ga zo maar door. De foreach kan je er dus weg laten en de volgende code.

  1. $serialize = serialize($_SESSION["uploaded_images"]);


$serialize kan je in de database opslaan.

  1. $unserialize = unserialize($stringUitDeDatabase);


Hier is $unserialize weer gelijk aan de array $_SESSION["uploaded_images"].
Offline Stijn - 08/04/2010 19:48
Avatar van Stijn PHP expert
  1. $images = unserialize($row['afbeeldingen']);
Wat valt er daar nu niet te snappen aan?
Offline PNiels - 08/04/2010 21:01
Avatar van PNiels Lid ok het is gelukt , ik krijg ze allemaal niet meer in een array..

  1. <?php
  2. include_once("inc/database.php");
  3. $sQuery = "SELECT * FROM producten WHERE id = '16' ";
  4. $sResult = mysql_query($sQuery);
  5. $sProduct = mysql_fetch_assoc($sResult);
  6. $a = array();
  7.  
  8. $a[] = unserialize($sProduct['afbeeldingen']);
  9.  
  10. foreach ($a as $b){
  11. echo $b;
  12. }
  13. ?>
Offline Flex1986 - 08/04/2010 21:37
Avatar van Flex1986 Gouden medaille

Senior Member
Kom op je kan ook even de docs lezen en met een beetje debuggen uitvinden wat er gebeurd. Als je bij return value kijkt in de docs dat een array gereturned kan worden. Oftewel als je een array stopt in serialize dan komt er ook een array uit unserialize.

Je stopt nu een array in een array.

  1. <?php
  2. include_once("inc/database.php");
  3. $sQuery = "SELECT * FROM producten WHERE id = '16' ";
  4. $sResult = mysql_query($sQuery);
  5. $sProduct = mysql_fetch_assoc($sResult);
  6. $a = unserialize($sProduct['afbeeldingen']);
  7.  
  8. foreach ($a as $b){
  9. echo $b;
  10. }
  11. ?>


Ik stel voor dat je iets vaker kijkt naar de docs vooral het doorlezen wat je erin moet stoppen en wat een functie terug geeft dat kan natuurlijk nooit kwaad  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.227s