webForumDet fria alternativet
Logga in / Bli medlem

mysgl_fetch_array() vs vanliga arrays

PHP

3 svar · 242 visningar · startad av Duffer

Medlem sedan mars 2003429 inlägg
Trådstart#1

Just nu känner jag mig så dum, jag kan inte äns komma på hur jag stoppar in ett mysql resultat i en vanlig array.

Fungerar mysql_fetch_array() som om det vore en vanlig array()?

har denna koden men får den inte att fungera :(

<?php
include("data.php");
/// Connect
mysql_connect($host,$id,$kod);
mysql_select_db($databas);

$rand_values = mysql_query("SELECT idbilder FROM bildarkiv") or exit(mysql_error());

srand((float) microtime() * 10000000);
$input = mysql_fetch_array($rand_values);
$rand_keys = array_rand($input, 3); /// Line 11
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
echo $input[$rand_keys[2]] . "\n";
?>

Får detta felmeddelande:

Warning: Second argument to array_rand() has to be between 1 and the number of elements in the array in /test26.php on line 11

Känns lite som jag är helt ute och cyklar nu :r

(Har jag gjort något rätt? är det så här man ska göra ifall man vill plocka ut en random värde ur en array som har generats från en mysql databas? Andra förslag på hur jag kan göra?)

Medlem sedan mars 2003429 inlägg
#2

Testade lite mer, om jag tog SELECT * istället för SELECT idbilder försvan felmeddelandet och den visade 3st (random) värden från samma rad.

Medlem sedan aug. 20002 975 inlägg
#3

Testa det här:

$rand_values = mysql_query("SELECT idbilder FROM bildarkiv") or exit(mysql_error());

// Initiera tom array
$input = array();

// Loopa resultatet i SQL-körningen, och lägg i array
while ($row = mysql_fetch_assoc($rand_values)) {
   $input[] = $row['idbilder'];
}

// Kolla att ditt slumpade antal inte är större än arrayens storlek
$rand_count = 3;
$rand_count = $rand_count > count($input) ? count($input) : $rand_count;

// Slumpa
srand((float) microtime() * 10000000);
$rand_keys = array_rand($input, $rand_count);

// Loopa resultatet
foreach ($rand_keys as $index) {
   echo $input[$index] . "\n";
}

Det kan eventuellt bli konstigheter om arrayen du slumpar från endast innehåller ett eller noll element.

Medlem sedan mars 2003429 inlägg
#4

Tro mig, funktion är vackert =D

Ett stort tack!

377 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
120 ms — deklarationer (db)
124 ms — hämta statistik (db)
121 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)