[php] Random image uit sql tabel

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een tabel in een database met nu nog maar 3 plaatjes. Ik wil graag dat deze plaatjes random worden weergegeven tijdens het laden van de site. Daar gebruik ik deze code voor:
------------------------
<?php
include "config.php";

$db = mysql_connect($db_host,$db_user,$db_pass);

mysql_select_db ($db_name) or die ("Cannot connect to database");

$query = "SELECT * FROM pics ORDER BY RAND() LIMIT 1";
$result = mysql_query($query);

while($r=mysql_fetch_array($result))
{

$naam=$r["naam"];
$inhoud=$r["inhoud"];
$link=$r["link"];

echo "<strong>$naam</strong><br>[img]\"$link\"><br>$inhoud<P>"; } mysql_close($db); ?[/img]
----------------------------------------
Maar dit werkt niet, elke keer wordt het zelfde plaatje getoond. Ik heb al geprobeerd om rand() te veranderen in RANDOM maar dan krijg ik een error m.b.t. de array functie die ik gebruik??? |:(

Ik heb op GoT een bruikbaar topic gevonden en heb de $query verandert in dit:
----------------
$query = "SELECT * FROM pics
LIMIT (RAND(SELECT * FROM pics))
ORDER BY id LIMIT 1";
--------------------------
Maar nog steeds blijf ik die fout m.b.t. die array houden.
Ik heb tutorials gedaan en veel info gezocht op google.. kom er niet uit?!?!?!

hier ben ik geweest, maar tevergeefs:
http://www.faqts.com/know...view.phtml/aid/294/fid/12
http://codewalkers.com/archives/sqlhelp/70.html
en nog aantal andere...

btw.. hier nog even die array error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in F:\site\666.php on line 23

[ Voor 0% gewijzigd door Verwijderd op 06-11-2002 20:14 . Reden: toevoegen van tekst ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 10:54

Janoz

Moderator Devschuur®

!litemod

Is redelijk |:( ja dat je de engelse foutmelding niet naar het nederlands vertaald hebt :).. Dat betekend namelijk dat $result geen resultset is, en dat wordt veroorzaakt doordat je een fout in je sql query hebt. Voor meer info zou je in de faq of op internet kunnen kijken (met mysql_error() laat je trouwens de error zien)..

Over je orginele probleem: Vreemd. Ik zou verwachten dat dat goed zou werken...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 11-09 10:47
Aan je SQL query ligt het in ieder geval niet. Het werkt hiero wel, mysql 4 btw.
mijn query in mysql console: select first_name, last_name from person order by rand() limit 1;
Zn 10x geprobeerd en elke keer weer een ander resultaat.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nog een query geprobeerd maar deze werkt ook niet:

SELECT column, column2, column3, RAND() AS random FROM table ORDER BY random;

Moet ik de query wel in een array zetten?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45

Bosmonster

*zucht*

Waarom doe je trouwens een while als je zeker weet dat je 1 record terugkrijgt? :)

Ik heb deze methode toch redelijk vaak gebruikt maar werkt allemaal prima ;)

ORDER BY RAND() LIMIT 1

Is prima MySQL.. en zou geen problemen moeten geven. Misschien dom, maar weet je zeker dat je meerdere records in je DB hebt staan? :P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Yep, ik weet zeker dat ik er meerdere in heb staan, want als ik limit 1 verander in limit 2 dan laat hij twee plaatjes zien (nog steeds niet in random volgorde maar dat doet er niet toe).... Dus ik heb meerde plaatjes!!! zodra ik thuis ben zal ik even proberen om die while() functie daar weg te halen!

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

$result = mysql_query($query);
vervangen door iets als:
PHP:
1
$result = mysql_query($query) or die(user_error("error: " . mysql_error() . " in query: " . $query)));

en dan de foutmelding bekijken?
Pagina: 1