Avatar billede xited Praktikant
16. april 2003 - 21:13 Der er 18 kommentarer og
1 løsning

if(Billed findes){vis billede}else{vælg næste billede}

Jeg har dette script der finder et random billede i MySQL, og viser denne, men hvis billedet ikke findes vil jeg gerne have at den vælger næste billede, sådan at der ikke kommer sådan et træls X billede....

Scriptet kommer her:


$banner = mysql_query("select * from bannere where hits != '0'");
$rows = mysql_num_rows($banner);
$random = (int)rand(0,($rows-1));
mysql_data_seek($banner,$random);
$banner = mysql_fetch_array($banner);
$bruger = mysql_query("select * from bruger where navn='$banner[bruger]'");
$bruger = mysql_fetch_array($bruger);
if((substr($banner[url], 0,7) == "<script") || (substr($banner[url], 0,7) == "<a href")) {
    echo "$banner[url]";
} else {
    echo "<a href='banner.php?id=$banner[id]&url=$bruger[url]' target='_blank'><img border='0' src='http://$banner[url]' width='125' height='125'></a>";
}
Avatar billede schaefner Juniormester
16. april 2003 - 21:23 #1
De billeder der skal tjekkes ligger de på din side?
Avatar billede xited Praktikant
16. april 2003 - 21:24 #2
nej
Avatar billede erikjacobsen Ekspert
16. april 2003 - 21:41 #3
Hvis du skal ud på nettet og undersøge om et billede findes, hver gang
det vises, så bliver det langsomt. Men det kan da gøres.

Hellere: undersøg med et cronjob en gang i timen (eller hvad du synes)
om billederne findes, og sæt dem inaktive, der ikke er der (og dem aktive
der er der)

Du slipper ikke helt for X-er, men dine kunder skal ikke vente unødigt.
Avatar billede xited Praktikant
16. april 2003 - 21:44 #4
Cronjob.... hvordan laves det ???
Avatar billede erikjacobsen Ekspert
16. april 2003 - 21:47 #5
Ok, du kører på en Linux/Unix ?
Avatar billede xited Praktikant
16. april 2003 - 21:53 #6
Jeg hoster ikke selv min side, så hvis det er den du hentyder til, så er serveren ikke tilgængelig...
Avatar billede erikjacobsen Ekspert
16. april 2003 - 21:59 #7
Ok, men selv om man får hosted andetsteds har man - de gode steder -
alligevel adgang til cronjobs (det er bare programmer der udføres
på forud definerede tidspunkter).

Du kan også lave en PHP-side, der gør arbejdet, og få den kaldt
et andet sted fra.

Men: synes du om ideen ?
Avatar billede bixen Nybegynder
16. april 2003 - 22:03 #8
Det med PHP lyder nemmest...
Avatar billede bixen Nybegynder
16. april 2003 - 22:04 #9
Men ville foreslå at du includer den på en side der i forvejen ikke tager meget tid at loade, sådan at den opdaterer sig selv, så slipper brugerne helt for at se X'erne :)
Avatar billede erikjacobsen Ekspert
16. april 2003 - 22:06 #10
Det er php alt sammen. Det er bare et spørgsmål om at få det afviklet.
Automatisk fra serveren selv (cronjob, hvis Linux/Unix - det hedder
noget andet i Windows). Eller en side kaldt et andet sted fra hvor
man har cronjobs (eller Windows ækvivalent).
Avatar billede xited Praktikant
16. april 2003 - 22:06 #11
Erik> hvordan laves PHP tingen ??? Jeg har ikke adgang til Cronjob, tvivler jeg ihvertfald på...
Avatar billede erikjacobsen Ekspert
16. april 2003 - 22:10 #12
Løb dine bil'der igennem, og med fopen henter du billedet, og
ser om det kan lade sig gøre:

  fopen("http://bla.bla/bla.gif");

Det er den nemme udgave, men du kan blive snydt. Så er der
metoden med sockets - prøv at lede på eksperten.dk.
Avatar billede xited Praktikant
16. april 2003 - 22:11 #13
snydt ???
Avatar billede erikjacobsen Ekspert
16. april 2003 - 22:16 #14
Ja, den kan sige ja, selv om den mener nej. Jeg leder lige efter
et par linier kode til dig.
Avatar billede erikjacobsen Ekspert
16. april 2003 - 22:42 #15
Uden garanti - men virker vist...

function findesbillede($host,$path) {
  if (!($f=fsockopen($host,80))) {
    return false;
  }
  fwrite($f,"HEAD $path HTTP/1.1\n");
  fwrite($f,"Host: $host\n\n");

  $result=true;
  while ($result && $line=fgets($f,1024)) {
    if (eregi('^HTTP ',$line) && !eregi('200 OK',$line)) {
      $result=false;
    }
    if (eregi('^Content-type: ',$line) && !eregi('image',$line)) {
      $result=false;
    }
  }
  return $result;
}

$ok=findesbillede("www.sofie.jacobsen.org","/sofie.jpg");
if ($ok) {
  print "Findes\n";
} else {
  print "Findes ikke\n";
}
Avatar billede erikjacobsen Ekspert
16. april 2003 - 22:44 #16
Du bør nok have en

  fclose($f);

lige inden return-sætningen.
Avatar billede erikjacobsen Ekspert
17. april 2003 - 08:53 #17
Er det noget du kan bruge som inspiration - og kan du få
det til at køre?
Avatar billede xited Praktikant
13. juni 2003 - 02:29 #18
Det ser okay ud... point ?
Avatar billede erikjacobsen Ekspert
13. juni 2003 - 22:53 #19
Hvis du synes det er anvendeligt ;)
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