Hey,

Ik zit even vast met m'n script. Kheb een javascript gevonden voor het roteren van afbeeldingen. Het werkt perfect in combinatie met m'n php script en m'n database, maar er is enkel iets mis met m'n while loop.
Hij ziet er alsvolgt uit:

<?php
$result = dbquery("SELECT * FROM ".DB_BUTTONS." ORDER BY RAND()");
$partner=0;
while ($data = dbarray($result)) {
$images = "dropimages[".$partner."]=\"".$data['button_pic']."\"\n";
$links = "droplinks[".$partner."]=\"".INFUSIONS."random_button_panel/button.php?button_id=".$data['button_id']."\"\n";
$partner++;
}
?>

Als ik nu in m'n browser broncode kijk, dan zie ik dit in m'n javascript:

dropimages[9]="http://www.mijnsite.be/images/partner.gif";
droplinks[9]="http://www.partnersite.be";

Maar in m'n database zitten er 10 records ... dus normaal zou het er zo moeten uitzien:

dropimages[0]="http://www.mijnsite.be/images/partner1.gif";
droplinks[0]="http://www.partnersite1.be";
dropimages[1]="http://www.mijnsite.be/images/partner2.gif";
droplinks[1]="http://www.partnersite2.be";
... tot aan 9

Wat doe ik verkeerd?

Alvast bedankt voor de hulp!

Tja, als je nu zegt dat je alleen het laatste resultaat van de fetch hebt dan zal je toch moeten denken aan het feit dat je binnen de while het fetch result moet echo dan wel in een array moet proppen die je dan buiten de while kan implode naar een string.
Een voorbeeld doet wonderen ... :$
Wat doe je na de while loop met de variables $images en $links?
Ik stop deze in m'n javascript alsvolgt:

//hier komt nog wat voor
var dropimages=new Array()
//SET IMAGE PATHS. Extend or contract array as needed
<?
echo $images;
?>

var droplinks=new Array()
//SET IMAGE URLs. Use "" if you wish particular image to NOT be linked:
<?
echo $links;
?>
//hier komt wat achter
In plaats van 'echo $images', moet je eens dit doen;

Pas eerst de while loop aan:

<?php
$result = dbquery("SELECT * FROM ".DB_BUTTONS." ORDER BY RAND()");

$images = array();
$links = array();

$partner=0;
while ($data = dbarray($result)) {
    $images[] = "dropimages[".$partner."]=\"".$data['button_pic']."\"\n";
    $links[] = "droplinks[".$partner."]=\"".INFUSIONS."random_button_panel/button.php?button_id=".$data['button_id']."\"\n";
    $partner++;
}
?> 

En verander de echo's vervolgens naar dit:

<?php
foreach($images as $key => $value) {
  echo $value;
}
?>

en:

<?php
foreach($links as $key => $value) {
  echo $value;
}
?>

Het zou kunnen dat je er wat breaks tussen moet doen, maar er staat nu te weinig script voor mij om dat te kunnen zien.
Je hebt maar 1 array nodig

<?php
php
$result = dbquery("SELECT * FROM ".DB_BUTTONS." ORDER BY RAND()");

$aHtml = array();

$partner=0;
while ($data = dbarray($result)) {
$aHtml[] = 'dropimages['.$partner.']="'.$data['button_pic'].'"';
$aHtml[] = 'droplinks['.$partner.']="'.INFUSIONS.'random_button_panel/button.php?button_id='.$data['button_id'].'"';
$partner++;
}

echo implode(PHP_EOL,$aHtml);
?>

Oh en maak het je leven wat makkelijker door strings te qoute met '' ipv ""
en \n \t \r heb je in principe niet nodig, als je ze wel nodig hebt definieer dan de combies als constate.

Enige uitzondering is dan nog dat je SQL statements wel qoute met ""
Helaas blijkt dit nog niet te werken.
Ik heb nog altijd maar dropimages[9] en droplinks[9].

Reageren