login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array undefined

Offline finduilas - 07/03/2008 16:42
Avatar van finduilasPHP gevorderde Hallo,

IK wil een JS-array vullen met PHP (gegevens uit DB)

http://pastebin.be/9630

Nu krijg ik als ik dat gebruik altijd bij de eerste waarde undefid als output. Als ik het handmatig doe:
  1. singletext[0]='<?php echo 'blabla';?>';
  2. singletext[1]='<?php echo 'blabla';?>';


Werkt het wel, en als ik echo $box; doe echo'd hij eerst 0 en dan 1 (wat dus zou moeten kloppen.) Bij de 2de waarde die ik gevuld heb bij de array klopt de inhoud wel. Hoe komt dit?

Mathias

10 antwoorden

Gesponsorde links
Offline Flex1986 - 07/03/2008 17:19
Avatar van Flex1986 Gouden medaille

Senior Member
Werkt de volgende code.

http://pastebin.be/9632
Offline finduilas - 07/03/2008 17:55
Avatar van finduilas PHP gevorderde Absoluut niet. Waarom escape je al die ' & "?
Een echo enz is nu eenmaal noodzakelijk te beginnen met ' en te eindigen met een '.

Bovendien werkt het wel zo als ik het zo doe:
  1. singletext[0]='<?php echo 'blabla';?>';singletext[1]='<?php echo 'blabla';?>';
Offline Flex1986 - 07/03/2008 19:00
Avatar van Flex1986 Gouden medaille

Senior Member
Dat was pastebin die die escapes heeft geplaatst. Maar ik hoor het al je hoeft niet geholpen te worden!
Offline finduilas - 07/03/2008 19:03 (laatste wijziging 07/03/2008 19:07)
Avatar van finduilas PHP gevorderde Sorry als het zo over komt, je vroeg of het werkte en ik zei nee, en ik wist de oorzaak.

en als ik je code bekeek bedoelde je dat het allemaal tussen 1 <script></script moest:
  1. <script language="JavaScript">
  2. var singletext=new Array();
  3. <?php
  4. $box = 0;
  5. $res = mysql_query("SELECT * FROM box");
  6. while($obj_res = mysql_fetch_object($res)) {
  7. ?>
  8. singletext[<?php echo $box; ?>]='<?php echo $obj_res->tekst; ?>';
  9. <?php
  10. $box++;
  11. }
  12. ?>
  13. if(document.layers){
  14. document.write('<ilayer id="ns4div" width="'+swidth+'" height="'+sheight+'" bgcolor='+sbcolor+'><layer id="ns4div1" width="'+swidth+'" height="'+sheight+'" onmouseover="sspeed=0;" onmouseout="sspeed=rspeed"></layer></ilayer>')}
  15. if(document.getElementById||document.all){document.write('<div style="position:relative;overflow:hidden;width:'+swidth+'px;height:'+sheight+'px;clip:rect(0 '+swidth+'px '+sheight+'px 0);background-color:'+sbcolor+';"><div id="iens6div" style="position:relative;width:'+swidth+'px;"></div></div>');}</script>


Maar helaas werkt dit ook niet, ik krijg helemaal niets meer dan.
Offline Flex1986 - 07/03/2008 19:10
Avatar van Flex1986 Gouden medaille

Senior Member
geef script ook even een type mee en dan de volgende type="text/javascript"

En als dat niet werkt kun je dan even de broncode van je pagina plaatsen.
Offline finduilas - 07/03/2008 19:38
Avatar van finduilas PHP gevorderde Hmmz, Heb ik geprobeerd, niets.

Scroller.js (dit wordt geladen onload)
  1. <script language="JavaScript">
  2. var singletext=new Array();
  3. </script>
  4. <?php
  5. $box = 0;
  6. $res = mysql_query("SELECT * FROM box");
  7. while($obj_res = mysql_fetch_object($res)) {
  8. ?>
  9. <script language="JavaScript">
  10. singletext[<?php echo $box; ?>]='<?php echo $obj_res->tekst; ?>';
  11. </script>
  12. <?php
  13. $box++;
  14. }
  15. ?>
  16. <script language="JavaScript">
  17. if(document.layers){
  18. document.write('<ilayer id="ns4div" width="'+swidth+'" height="'+sheight+'" bgcolor='+sbcolor+'><layer id="ns4div1" width="'+swidth+'" height="'+sheight+'" onmouseover="sspeed=0;" onmouseout="sspeed=rspeed"></layer></ilayer>')}
  19. if(document.getElementById||document.all){document.write('<div style="position:relative;overflow:hidden;width:'+swidth+'px;height:'+sheight+'px;clip:rect(0 '+swidth+'px '+sheight+'px 0);background-color:'+sbcolor+';"><div id="iens6div" style="position:relative;width:'+swidth+'px;"></div></div>');}</script>


De code die in de index staat.
Offline Grayen - 07/03/2008 19:58
Avatar van Grayen PHP ver gevorderde Probeer dit eens:

  1. <?php
  2. // Ik neem aan dat dit javascript gedeelte in de <body> staat,
  3. // omdat je document.write gebruikt, dus kan ik gewoon output plaatsen.
  4. if (($rRows = mysql_query('SELECT * FROM box')) !== false)
  5. {
  6. ?>
  7. <script type="text/javascript">
  8. var singletext = new Array();
  9. <?php
  10. $i = 0;
  11.  
  12. while (($aRow = mysql_fetch_assoc($rRows)) !== false)
  13. {
  14. ?>
  15. singletext[<?php echo $i++ ?>] = '<?php addcslashes($aRow['tekst'], '\'') ?>';
  16. <?php
  17. }
  18. ?>
  19.  
  20. if (document.layers)
  21. {
  22. document.write('<ilayer id="ns4div" width="'+swidth+'" height="'+sheight+'" bgcolor='+sbcolor+'><layer id="ns4div1" width="'+swidth+'" height="'+sheight+'" onmouseover="sspeed=0;" onmouseout="sspeed=rspeed"></layer></ilayer>');
  23. }
  24. else if (document.getElementById || document.all)
  25. {
  26. document.write('<div style="position:relative;overflow:hidden;width:'+swidth+'px;height:'+sheight+'px;clip:rect(0 '+swidth+'px '+sheight+'px 0);background-color:'+sbcolor+';"><div id="iens6div" style="position:relative;width:'+swidth+'px;"></div></div>');
  27. }
  28. </script>
  29. <?php
  30. }
  31. else
  32. {
  33. echo '<p>'.mysql_error().'</p>';
  34. }
  35. ?>


En ga dan eens controleren wat de output is.

* Foutmelding van MySQL?
* Worden de items van de array wel correct toegevoegd? Zou je kunnen testen door elk item te alerten.
* Anders ligt het aan andere gedeelte van je javascript (weet je wel zeker dat dat allemaal klopt?)
Offline finduilas - 07/03/2008 20:31 (laatste wijziging 08/03/2008 08:56)
Avatar van finduilas PHP gevorderde Nu krijg ik helemaal niets meer,
Ik heb dus maar eens $i geecho'd in de while en ik krijg 0 1 2 (dit klopt want er zouden 3 dingen uit de DB gehaald moeten worden)

EDIT: Hmmz;
  1. <?php
  2. if(($rRows = mysql_query('SELECT * FROM box')) !== false)
  3. {
  4. ?>
  5. <script type="text/javascript">
  6. var singletext = new Array();
  7. </script>
  8. <?php
  9. $i = 0;
  10. while (($aRow = mysql_fetch_assoc($rRows)) !== false)
  11. {
  12. echo $i;
  13. ?>
  14. <script type="text/javascript">
  15. singletext[<?php echo $i++ ?>] = 'test<?php echo $i;?>';
  16. </script>
  17. <?php
  18. }
  19. ?>
  20. <script type="text/javascript">
  21. if(document.layers){document.write('<ilayer id="ns4div" width="'+swidth+'" height="'+sheight+'" bgcolor='+sbcolor+'><layer id="ns4div1" width="'+swidth+'" height="'+sheight+'" onmouseover="sspeed=0;" onmouseout="sspeed=rspeed"></layer></ilayer>');}else if (document.getElementById || document.all){ document.write('<div style="position:relative;overflow:hidden;width:'+swidth+'px;height:'+sheight+'px;clip:rect(0 '+swidth+'px '+sheight+'px 0);background-color:'+sbcolor+';"><div id="iens6div" style="position:relative;width:'+swidth+'px;"></div></div>');}
  22. </script>
  23. <?php
  24. }
  25. else
  26. {
  27. echo '<p>'.mysql_error().'</p>';
  28. }
  29. ?>


Krijg ik eerst 2x test2, en vanaf dan test3,test1,test2,test3,...

EDIT2: En dit: http://pastebin.be/9639 geeft dan weer eerst 2x rij2 uit de DB, en vanaf dan rij3,rij1 (= undefined),rij2,rij3,rij1 (=undefined)
Offline Grayen - 08/03/2008 11:09
Avatar van Grayen PHP ver gevorderde Whoops een foutje van mij:

  1. <?php addcslashes($aRow['tekst'], '\'') ?>


=>

  1. <?php echo addcslashes($aRow['tekst'], '\'') ?>


Laat je database inhoud eens zien (bijv een printscreen van phpmyadmin), want de rest zou moeten kloppen.
Offline finduilas - 08/03/2008 11:58 (laatste wijziging 08/03/2008 11:59)
Avatar van finduilas PHP gevorderde Het lag allemaal aan een \r die in me DB stond bij de 1ste waarde. Door deze weg te halen is het allemaal in orde .

Mathias

EDIT: Waarvoor staat eigenlijk die \r ? \n is nieuwe lijn, maar \r had ik eigenlijk nog niet gezien.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.263s