Avatar billede tlunde Nybegynder
10. oktober 2005 - 14:34 Der er 16 kommentarer og
2 løsninger

Random billede script?

Hejsa,
Jeg har brug for et ret simpelt script, men ved ik lige hvordan jeg skal bygge det op.

Jeg har en 20-25 billeder der tilfældigt skal vises hver gang man er inde på en side, og det skal så være et link samtidig til en side.

Jeg vil gerne have det til at kører over database, hvor jeg allerede har lavet databasen til det:

id | url | vist | klik

Vil gerne have at hver gang det vises, så tæller vist 1 op, og når der bliver klikket på det, så bliver klik også talt 1 op...

Er det noget der er svært at lave?
Avatar billede jaw Nybegynder
10. oktober 2005 - 14:51 #1
Henter tilfældigt billede med id mellem 1 og 20.

//connect her
$id = rand(1, 20);
$q = mysql_query("SELECT * FROM tabel WHERE id = ".id);
while($row = mysql_fetch_array($q)) {
  echo "<img src='".$row['filnavn']."'>";
  mysql_query("UPDATE tabel SET `klik` = (klik+1) WHERE id = ".$id); 
}
Avatar billede tlunde Nybegynder
10. oktober 2005 - 14:53 #2
okay, virker meget fornuftigt, men hvad med at opdatere vist rækken? Kan man gøre sådan at det sker også? Og er der ik en fejl her: = ".id);
Avatar billede tlunde Nybegynder
10. oktober 2005 - 14:54 #3
afprøver lige koden her en af dagene, og så vender jeg tilbage...
Avatar billede jaw Nybegynder
10. oktober 2005 - 14:54 #4
Nå ok, læste lidt for hurtigt. Ovenstående skal jo kun opdatere vist og ikke klik som jeg skrev, og så skal det selvf. være $id jo.

Det med vist skal jo kun tælles op på den side, hvor du evt. viser billedet i stort format eller hvad det nu er du vil...
Avatar billede pidgeot Nybegynder
10. oktober 2005 - 14:57 #5
Skal det ikke snarere være:

$id = rand(1, 20);
$q = mysql_query("SELECT filnavn FROM tabel WHERE id = ".$id);
while($row = mysql_fetch_array($q)) {
  echo '<a href=\"imagelink.php?id="' . $id . '><img src='".$row['filnavn']."'></a>";
  mysql_query("UPDATE tabel SET `vist` = (vist+1) WHERE id = ".$id); 
}

Og så imagelink.php:

<?PHP
$id=$_GET['id'];
mysql_query("UPDATE tabel SET `klik` = (klik+1) WHERE id = ".$id); 
$q = mysql_query("SELECT link FROM tabel WHERE id = ".$id);
if ($r = mysql_fetch_array($q))
header('Location: ' . $r['link']);
?>
Avatar billede pidgeot Nybegynder
10. oktober 2005 - 14:58 #6
Naturligvis lige have din mysql_connect ind INDEN queries i begge tilfælde :)
Avatar billede tlunde Nybegynder
10. oktober 2005 - 15:02 #7
Altså, hele ideen i det jeg vil lave er en citatbank, hvor der på forsiden i toppen ved siden af logoet skal vises et citat hver gang siden genindlæses eller hvis man kommer over på en ny side.

Citatbanken bliver en del af top.php, som er inkluderet på alle sider på hele siden, så derfor skal scriptet kun ligge i top.php.

når citates vises, skal "vist" tælle 1 op, og hvis man så klikker på det, skal "klik" tælles 1 op. Og citaterne er lagt ind som billeder, hvor url'en står under "url" i databasen.

Håber det hele er lidt mere klart for jer nu :)
Avatar billede jaw Nybegynder
10. oktober 2005 - 15:05 #8
Tjoh, men hvis man har opdateringen af "vist", så er det vel ikke så svært at tænke sig til, hvordan man så opdaterer "klik"? :) Point beeing, at alt måske ikke altid behøver at præsenteres i copy/paste form...
Avatar billede pidgeot Nybegynder
10. oktober 2005 - 15:05 #9
Skal de billeder ikke linke et bestemt sted hen? Ellers har du jo ingen mulighed for at tælle klik, med mindre du snyder ved at genloade siden eller bruge en frame/iframe/skjult billede.

Må lige sige hvis det er det du vil - det kan vi nemlig også godt klare ;)
Avatar billede tlunde Nybegynder
10. oktober 2005 - 15:08 #10
ahh...det havde jeg glemt, så der skal vel i grunden være 2 url rækker i databasen, 1 til selve billedet og 1 til linket...

Så databasen skal vel se sådan her ud:
id | url_billede | url_link | vist | klik
Avatar billede pidgeot Nybegynder
10. oktober 2005 - 15:13 #11
Ja, det ser straks mere rigtigt ud.

Hvis du ikke komemr til at have ret mange rækker ad gangen, kan du bruge følgende kode:

//connect her
$q = mysql_query("SELECT id,url_billede FROM tabel ORDER BY RAND()");
while($row = mysql_fetch_array($q)) {
  echo '<a href=\"imagelink.php?id="' . $id . '><img src='"'.$row['url_billede'].'"'></a>";
  mysql_query("UPDATE tabel SET vist = (vist+1) WHERE id = ".$id); 
}

Og så imagelink.php:

<?PHP
//connect her
$id=$_GET['id'];
mysql_query("UPDATE tabel SET klik = (klik+1) WHERE id = ".$id); 
$q = mysql_query("SELECT url_link FROM tabel WHERE id = ".$id);
if ($r = mysql_fetch_array($q))
header('Location: ' . $r['url_link']);
?>

Hvis der godt kan blive en del, bør du overveje følgende kode i top.php:

//connect her
$q = mysql_query("SELECT COUNT(id) AS c FROM tabel");
$r = mysql_fetch_array($q);
$q = mysql_query('SELECT id,url_billede FROM tabel WHERE id = ' . $r['c']);
while($row = mysql_fetch_array($q)) {
  echo '<a href=\"imagelink.php?id="' . $id . '><img src='"'.$row['url_billede'].'"'></a>";
  mysql_query('UPDATE tabel SET vist = (vist+1) WHERE id = ' . $id); 
}

omend den kræver at der ikke er "huller" i dine IDs - med andre ord, du skal omnummerere et par rækker hvis nogle af dem fjernes
Avatar billede pidgeot Nybegynder
10. oktober 2005 - 15:16 #12
Hov - efter ORDER BY RAND() skal der lige en LIMIT 1 på.
Avatar billede tlunde Nybegynder
11. oktober 2005 - 09:44 #13
pidgeot:
Skal lige have noget det rene her, før jeg forstår det tror jeg...

Denne kode:
//connect her
$q = mysql_query("SELECT id,url_billede FROM tabel ORDER BY RAND()");
while($row = mysql_fetch_array($q)) {
  echo '<a href=\"imagelink.php?id="' . $id . '><img src='"'.$row['url_billede'].'"'></a>";
  mysql_query("UPDATE tabel SET vist = (vist+1) WHERE id = ".$id);
}

Vil du have den helt i toppen af filen, og printer den ik noget ud??

og denne kode:
<?PHP
//connect her
$id=$_GET['id'];
mysql_query("UPDATE tabel SET klik = (klik+1) WHERE id = ".$id);
$q = mysql_query("SELECT url_link FROM tabel WHERE id = ".$id);
if ($r = mysql_fetch_array($q))
header('Location: ' . $r['url_link']);
?>

Er det bare koden der random hiver et billede ud og viser det på skærmen?
Avatar billede tlunde Nybegynder
11. oktober 2005 - 09:48 #14
Forstår ik helt, i den første stump kode står der:
echo '<a href=\"imagelink.php?id="' . $id . '><img src='"'.$row['url_billede'].'"'></a>";

Skal der laves en fil der hedder imagelink.php, som skal inkluderes i min top.php, eller hvordan fungere det lige?
Avatar billede pidgeot Nybegynder
11. oktober 2005 - 12:45 #15
Det første er den kode du skal sætte ind der i din top.php hvor du vil have dit citat.

Den anden kodestump er hele indholdet af filen imagelink.php, som blot skal ligge sammen med dine filer. Du skal lave filen og kopiere den kode ind.
Avatar billede tlunde Nybegynder
11. oktober 2005 - 13:37 #16
hmm...okay, det prøver jeg lige :)
Avatar billede tlunde Nybegynder
11. oktober 2005 - 14:25 #17
Har fået lidt andet hjælp rundt omkring, men har brugt noget af din kode, så du skal da også have nogle point for din hjælp, smider du lige et svar??
Avatar billede pidgeot Nybegynder
11. oktober 2005 - 15:52 #18
Selvfølgelig - værsgo :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB