28. februar 2008 - 13:02Der er
14 kommentarer og 1 løsning
Rand() billeder -gentag ikke billede
Hej
Jeg henter nogle billeder ud fra en database med en rand function. Der er plads til tre billeder, nogle gange får man så det samme billede på nogle af pladserne.
Mit spørgsmål er så om man kan skrive noget så den ikke gentager et billede i hver rand. Altså der skal komme 3 forskellige billeder hver gang.
<?php include('../Backup2/includes/db_con.php'); $id = $_GET['id']; $r=mysql_query("select id, pic from sommerhus_info ORDER BY RAND() LIMIT 1"); while($row=mysql_fetch_array($r)){ echo "<a href='tilbud.php?id=".$row['id']."'><img src='billeder/$row[pic]' border='0' width='230' height='130'></a>"; echo "<br>"; echo "<div class='text5'>"."Tryk på billedet for information"."</div>"; } ?>
Ret LIMIT 1 til i stedet at give det antal rækker du skal bruge i alt (dvs. 3 i dette tilfælde), og nøjes så med at køre den query EN gang, for så at tage rækkerne derfra efter behov.
Når man laver en while, tager man alle på en gang - og da det ikke er det dit behov er, så skal du ikke bruge while *-)
Der er intet der forhindrer dig i at lave noget som følgende: <?PHP $r=mysql_query("SELECT ... LIMIT 3"); $row=mysql_fetch_array($r); //Vis billede //Lav det der skal laves inden næste billede $row=mysql_fetch_array($r); //Vis billede //Lav det der skal laves inden næste billede $row=mysql_fetch_array($r); //Vis billede //Resten af siden ?>
jeg kan simpelthen ikke få det til at virke sådan som jeg har brug for det. men hvis du samler på point så smid et svar. Tak fordi du ville kigge på det.
Jeg vil såmænd gerne hjælpe med at få det til at virke, men det kræver jeg ser mere kode end blot hvor det ene billede bliver skrevet ud - du må jo gøre noget mellem at det første billede og det andet billede bliver vist.
Springer over pointene hvis du ikke vil gøre mere ved det.
Jeg har tilladt mig at omdøbe den $r til et lidt mere unikt navn, i tilfælde af at du har andre database-kald mellem de tre ting.
Den eneste ulempe ved den her måde i forhold til din er at der skal være minimum 3 rækker at tage fra - skal den kunne klare at der er mindre, så skal jeg have at vide hvad den skal gøre de resterende steder. Til gengæld er du garanteret at den ikke vælger samme række.
<div class="foto"> <?php include('../Backup2/includes/db_con.php'); $id = $_GET['id']; $randomimg=mysql_query("select id, pic from sommerhus_info where tilbud='ja' order by rand() LIMIT 3"); $row=mysql_fetch_array($randomimg); echo "<a href='tilbud.php?id=".$row['id']."'><img src='billeder/$row[pic]' border='0' width='230' height='130'></a>"; echo "<br>"; echo "<div class='text5'>"."Tryk på billedet for information"."</div>"; ?> </div>
<?php include('../Backup2/includes/db_con.php'); $id = $_GET['id']; $randomimg=mysql_query("select id, pic from sommerhus_info where tilbud='ja' order by rand() LIMIT 3"); $i = 0;
while(mysql_fetch_array($randomimg)) {
$i++;
echo"<div class='foto".$i"'>\r\n\r\n"; echo "<a href='tilbud.php?id=".$row["id"]."'><img src='billeder/".$row["pic"]."' border='0' width='230' height='130'></a>"; echo "<br>\r\n"; echo "<div class='text5'>"."Tryk på billedet for information"."</div>\r\n"; echo"</div>\r\n\r\n";
Også en mulighed, ja - men jeg valgte at gå ud fra der kunne være fjernet noget kode mellem <div>'sene, som måske ikke egnede sig i en while (Hvad den kode ville gøre, har jeg ingen anelse om, men... :-))
Jaja, udseendet betyder ikke det store! MEn det er jo ligeså nemt at udskrive div's (glemte $row i while) while($rows = mysql_fetch_array($randomimg)) {
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.