[PHP] Items uit array aanwijzen en laten zien...

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hi,

Na het uitvoeren van een query en het inlezen daarvan in een array, heb ik een random index gegenereerd. Met die random index wil ik alle items van deze index uit de array halen... Ik krijg het alleen NIET voor elkaar om van een array met de gegenereerde random index die items uit de array te halen... Zal ff laten zien wat ik heb:

Let niet op de rare ibase functies, ik gebruik interbase 6.5 als database...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<? 
srand((double)microtime()*1000000);  

function ibase_num_rows($query){ 
$i = 0; 
while (ibase_fetch_row($query)){ 
   $i++; 
 } 
return $i; 
}  

$sql = "SELECT PRODUCT_ID, PRODUCT_PICTURE, PRODUCT_NAME, PRODUCT_BRIEFDESC FROM PRODUCTS 
        WHERE PRODUCT_FEATURED = '1' AND PRODUCT_STATUS = '1' ORDER BY PRODUCT_NAME"; 
         
$query = ibase_query($sql); 
$rows = ibase_num_rows($query); 
$query = ibase_query($sql); 

$test = ibase_fetch_array($query); 

for($i=0;$i<3;$i++){ 
    $index = rand(1,$rows); 
    $productID = $test['PRODUCT_PICTURE' . $index]; // dit is dus de regel met de vraag hoe ik het eruit kan halen... 

?> 

Dan daarna:
PHP:
1
2
3
4
5
<? 
echo $productID; 
echo $productName; 
// etc 
?> 

Who can help?

Acties:
  • 0 Henk 'm!

Verwijderd

Hoe ziet die array eruit dan (kan je achterkomen met print_r($test)) en hoort er geen } aan het einde van de for-loop?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het eerste item uit de array ziet er zo uit volgens jouw print_r($test):

code:
1
( [PRODUCT_ID] => 26 [PRODUCT_PICTURE] => bazooka.jpg [PRODUCT_NAME] => Bazooka Gum [PRODUCT_BRIEFDESC] => Blow really, really big bubbles with Bazooka gum! )


(en die } aan het einde van de for loop staat er niet tussen omdat daar nog wat html tussen staat... gewoon vergeten dus...)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil dus na de query met een random index steeds de items hebben uit het array met die index... das alles.. maar kom er niet op :(

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

mysql_fetch_array () haalt slechts 1 rij uit de database. Het is een array omdat bestaat uit meerdere kolommen, maar het blijft 1 rij

je zult dus alle resultaten moeten fetchen in een array, en dan kun je gewoon die array indexeren

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kun je me een voorbeeld geven hoe ik dat kan doen??? (het is trouwens ibase_fetch_array, waar ik zelf een functie voor gevonden heb omdat Interbase dat niet ondersteunt..)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

oh verkeerd gelezen :)

maar nee, ik laat je niet zien hoe dat moet, aangezien dat wel erg basic is. Probeer eerst maar eens alle resultaten op het scherm te krijgen. Als dat gelukt is, moet het ook niet zo moeilijk zijn om ze toe te voegen aan een array. En als dat dan ook gelukt is, is het een koekie om de random uit de array te halen

(is er trouwens geen SQL syntax voor die dat automatisch doet? Moet je eens kijken in je ibase documentatie, staat waarschijnlijk bij de ORDER BY docs)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb nu dit: ik laat de array's met eigen indexwaarde op het scherm zien, maar in de volgende lus wil ik 3 random array's laten zien.. (aan de hand van hun index) maar dat werkt niet... hoe stel ik die lus op dan?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$index=0;

while ($object = ibase_fetch_object($query)){
    $array = array("index"=>$index, $object->PRODUCT_ID, $object->PRODUCT_PICTURE, $object->PRODUCT_BRIEFDESC);
    print_r($array);
    echo "<br><br>";
    $index++;
}

echo "<br><br><br><br>";

for($i=0;$i<3;$i++){
    $arrindex = rand(1,$index);
    echo $array[$arrindex];

}

Acties:
  • 0 Henk 'm!

Verwijderd

Je maakt het moeilijk door nu naar fetch_object over te schakelen.

PHP:
1
2
3
4
while($array[] = ibase_fetch_assoc($query));
echo "<pre>";
print_r($array);
echo "</pre>";
Pagina: 1