login  Naam:   Wachtwoord: 
Registreer je!
 Forum

array to string (Opgelost)

Offline vinTage - 26/01/2009 22:27 (laatste wijziging 26/01/2009 22:27)
Avatar van vinTageNieuw lid mjah, de titel spreekt al boekdelen denk ik, maar ik wil dus mn onderstaande code zonder errors 

  1. <?php
  2. //editten
  3. if(isset($_GET['edit_poll']))
  4. {
  5. $edit_poll = mysql_query("SELECT * FROM poll LEFT JOIN poll_opties ON (poll.id = poll_opties.poll_id) WHERE poll_id ='".mysql_real_escape_string($_GET['edit_poll'])."' ")or die(mysql_error());
  6. $optie_array = array();
  7. while($edit = mysql_fetch_array($edit_poll))
  8. {
  9. $bericht = stripslashes($edit['bericht']);
  10. $vraag = stripslashes($edit['poll_vraag']);
  11. $einddatum = $edit['eind_datum'];
  12. array_push($optie_array, $edit['optie']);
  13. }
  14. ?>
  15. <form action="<?php echo $_SERVER['REQUEST_URI'];?>" method="post">
  16. <textarea name="bericht" cols="10" rows="4"><?php echo stripslashes($bericht);?></textarea>
  17. <br /><br />
  18. vraag: <input name="vraag" type="text" value="<?php echo stripslashes($vraag);?>" />
  19. <br />
  20. eind datum: <input name="einddatum" type="text" value="<?php echo $einddatum;?>" />
  21. <br />
  22. <?php
  23. for($i=0; $i<count($optie_array); $i++)
  24. {
  25. ?>
  26. optie: <input name="optie_[<?php echo $i;?>]" type="text" value="<?php echo stripslashes($optie_array[$i]);?>" /><br />
  27. <?php
  28. }
  29. ?>
  30. <input name="update" type="submit" value="verander" />
  31. </form>
  32. <?php
  33. if(isset($_POST['update']))
  34. {
  35. foreach ($_POST['optie_'] as $value)
  36. {
  37. echo $value."<br />";
  38. }
  39. }
  40. }


Notice: Array to string conversion in C : \ w....
De foutmelding wordt afaik gemaakt door de aray_push

Iemand dus een idee hoe ik dit fiks ?

10 antwoorden

Gesponsorde links
Offline Wim - 26/01/2009 22:49
Avatar van Wim Crew algemeen hmm geen idee, maar moet je je array niet "by reference" meegeven ipv by value? een &-teken er voor plaatsen dus:
  1. array_push(&$optie_array, $edit['optie']);

Een alternatief (welk ik persoonlijk altijd gebruik):
  1. $optie_array[] = $edit['optie'];


Btw; je lijn 35-38, dat kan je ook met een PHP.net: implode doen:
  1. echo implode('<br />', $_POST['optie_']);
Offline vinTage - 26/01/2009 23:02 (laatste wijziging 26/01/2009 23:03)
Avatar van vinTage Nieuw lid
script schreef:
Warning: Call-time pass-by-reference has been deprecated in C : poll_admin.php on line ...

Notice: Array to string conversion in C : ..poll_admin.php on line ...


lijnnummers corresponderen niet, maar dat is het resultaat met een & ervoor iig.

Die optie[] variant komt erin, schijnt sneller te zijn
Offline Rik - 27/01/2009 09:49
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je moet inderdaad overal optie[] gebruiken bij het aanmaken van het formulier. Dan zal $_POST['optie'] na het verzenden van het formulier een array met de gekozen values bevatten.
Offline Wim - 27/01/2009 09:56
Avatar van Wim Crew algemeen
Boukefalos schreef:
Je moet inderdaad overal optie[] gebruiken bij het aanmaken van het formulier. Dan zal $_POST['optie'] na het verzenden van het formulier een array met de gekozen values bevatten.

kijk eens in zijn code, dat doet hij al.....

Verder eeft hij het over de PHP notatie $array[], dit met volgende reden:
php.net schreef:
Note: If you use array_push() to add one element to the array it's better to use $array[] = because in that way there is no overhead of calling a function.
Offline Rik - 27/01/2009 10:53
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Uh, ik bedoel hierbij:
  1. optie: <input name="optie_[<?php echo $i;?>]" type="text" value="<?php echo stripslashes($optie_array[$i]);?>" /><br />
Dus in plaats van optie_$i.
Offline Stijn - 27/01/2009 10:57
Avatar van Stijn PHP expert @Boukefalos: kijk eens naar zijn foreach onderaan.

  1. foreach ($_POST['optie_'] as $value)
Offline Rik - 27/01/2009 11:05 (laatste wijziging 27/01/2009 11:23)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Die heb ik echt wel gezien hoor. 

Ik probeer alleen duidelijk te maken dat het hier veel makkelijker is om de formulier gegevens als array te laten versturen.

Deze code bijvoorbeeld:
  1. <?php
  2. print_r($_POST);
  3. ?>
  4. <form method="post">
  5. <input name="optie[1]" value="a" />
  6. <input name="optie[2]" value="b" />
  7. <input name="optie[3]" value="c" />
  8. <input name="optie[4]" value="d" />
  9. <input name="optie[5]" value="e" />
  10. <input type="submit" />
  11. </form>
Geeft na verzenden:
Citaat:
Array(
[optie] => Array
(
[1] => a
[2] => b
[3] => c
[4] => d
[5] => e
)
)


Die lijn die jij citeert zou zou in de originele code volgens mij sowieso niet werken omdat er nergens een veld staat dat expliciet 'optie_' heet.
Offline Wim - 27/01/2009 11:28
Avatar van Wim Crew algemeen dude... er STAAN [], het veld vormt een groep van array's, het is EXACT hetzelfde als wat jij als voorbeeld geeft, buiten dat er een _ tussen staat en dat die $i overbodig is...
Offline Rik - 27/01/2009 11:32
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Aargh, verkeerd gekeken.  Ik zie het nu.

Ik ben duidelijk nog niet helemaal wakker...
Offline vinTage - 27/01/2009 20:39 (laatste wijziging 27/01/2009 21:11)
Avatar van vinTage Nieuw lid Nuja, ik heb gisteren natuurlijk al veel gegoogled en zowat elke functie op php.net afgewerkt, maar geen conrete oplossing gevonden, ik heb het hele zooitje maar gewoon omgegooid naar een 2e query die gewoon de optie tabel uitleest.
In de while loop van de 2e qry kan ik zonder problemen doen en laten wat ik wil met desbetreffende waardes.

Hoewel best veel mensen deze notice krijgen, vind ik nergens een oplossing....dus laat deze topic wel open voor evt reacties.


EDIT: Wel "potverdriedubbeltjes" !!!

De fout gevonden, de eerste code werkt gewoon perfect, de foutmelding kwam van een stom regeltje om al je inputs te beveiligen ( $_POST = array_map('addslashes', $_POST); )

Als ik de regel met array_push weghaalde was de error ook weg, toen ik mn code eens ging opschonen en dus die array_map ook wegrotte werkte ineens alles perfect...

Niemand kon dus een oplossing geven omdat ik niet alle code gaf (>200 regels) 

Nuja het is dus opgelost.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.246s