Avatar billede hunters_force Nybegynder
10. juli 2003 - 21:13 Der er 14 kommentarer og
1 løsning

while loop stopper ved klik på noget af det der er printet - why?

Jeg har et database kald (MYSQL) som jeg printer ud på en side. Det drejer sig om en masse thumbnails der fungerer som links.

Jeg har (selvfølgelig) sat php'en til at loope en print sætning sålænge der er resultater fra den pågældende database forespørgsel.

Nu er mit problem at hvis den skal printe eks. 100 thumbnails/links og jeg så klikker på et link mens den "printer" eks. når den har printet de 20 -  ja så stopper den med at hive thumbnails ud...min while stopper altså så snart linket åbner et nyt vindue...

while koden er her:


<?php
$conn = mysql_connect("host","db","password") or die(mysql_error());
mysql_select_db("db") or die(mysql_error());

$resultat = mysql_query("SELECT * FROM listen WHERE lib = '$lib'");
$antal = mysql_numrows($resultat);

while ($raekke = mysql_fetch_row($resultat)) {

($i%2 ? $color="#EFEFEF" : $color="#FFFFFF");

//thumbnail som link til stortbillede der åbnes i nyt vindue....
printf("<span>%s</span>\n",
                '
                <a href="java script:void(0)" onclick="open(\'picture.php?filnavn='.$raekke[1].'&lib='.$lib.'\',\'popup\',\'toolbar=0,location=0,scrollbars=yes,top=50,left=50,directories=0,status=0,menubar=0,resizable=1,\')"><img src="'.$raekke[2].'thumb/'.$raekke[1].'" border="0" class="image"></a><a href="java script:void(0)" onclick="open(\'insert_fav.php?listenuser_id='.$listenuser_id.'&pass='.$pass.'&listen_id='.$raekke[0].'\',\'popup\',\'toolbar=0,location=0,scrollbars=no,top=50,left=50,directories=0,status=0,menubar=0,resizable=0,width=200,height=100\')"><img src="favplus.gif" alt="tilføj til dine favoriter" width="15" height="15" border="0" class="imageikon"></a>
                '
                );



$i = $i + 1;
    }
echo "</td></tr></table>";
?>




Er der nogen der kan fortælle mig hvorfor den stopper loopet når der klikkes på et link....og mest af alt...er der nogen der kan afhjælpe problemet...

på forhånd tak
/Morten
Avatar billede ahv Nybegynder
10. juli 2003 - 21:17 #1
Det er jo klart den stopper, du sætter den jo pludseligt til noget andet, det kan du ikke ændre på, du må lade den loade dem alle sammen.

Du kunne måske afhjælpe den lange laod tid ved at dele bilelderne op på flere sider f.eks. 10 billeder på vher side, også kunne man skifte mellem disse sider, et sådan script kan jeg hjælpe dig med.
Avatar billede ahv Nybegynder
10. juli 2003 - 21:19 #2
Hvis du selv kan ændre de få ting der skal til, så har du her et der viser 10 per side (du kan selv ændre antallet i toppen) ->

<?php
$connection = mysql_pconnect("host","user","pass");
mysql_select_db("database");

$prside = 10;
$visfra = $_GET['visfra'];

if(!$_GET['visfra']) $visfra = 0;

$query = mysql_query ("SELECT * FROM tabel ORDER BY id DESC limit $visfra, $prside"); // Dit database udtræk
while ($row = mysql_fetch_array($query)) {
    echo $row['id']."<br>";
}

$antal = mysql_num_rows(mysql_query("SELECT * FROM tabel"));

if ($visfra > 0) {
    $bagud = $visfra-$prside;
    echo "<a href='$_SERVER[PHP_SELF]?visfra=$bagud'>Forrige</a> ";
}
$page = 1;
for ($start = 0; $antal > $start; $start = $start + $prside) {
    if($visfra != $page * $prside - $prside) {
        echo "<a href='$_SERVER[PHP_SELF]?visfra=$start'>$page</a> ";
    } else {
        echo $page." ";
    }
    $page++;
}
if ($visfra < $antal - $prside) {
    $naeste = $visfra + $prside;
    echo " <a href='$_SERVER[PHP_SELF]?visfra=$naeste'>Næste</a>";
}
?>
Avatar billede hunters_force Nybegynder
10. juli 2003 - 21:19 #3
Jeg kan godt se at man sætter browseren igang med noget andet ved at åbne et nyt vindue. Men der må da findes noget kode der får den til at forsætte med det den nu har gang i....eller også noget der forhinderer den i at vise de enkelte thumbnails efterhånden som de loader, og bare venter til hele siden er loadet....

ideen med 10 på hver side, dur desværre ikke...men ellers tak for svaret
Avatar billede exp Juniormester
10. juli 2003 - 21:54 #4
du kunne bruge en preloader, der først viser siden når alle billeder ligger i hukommelsen...
Avatar billede hunters_force Nybegynder
10. juli 2003 - 21:57 #5
ja...det var jo noget i den stil....

Jeg har imidlertidig lige fundet frem til noget med

ob_start()  og  ob_end_flush)

Noget der skulle kunne buffer output og først smide det ud når det er klar...men problemet er jo nok at den ikke buffer grafiken.

Hvordan laver med en preloader til en php side???
Avatar billede ahv Nybegynder
10. juli 2003 - 21:57 #6
Hvordan man laver en preloader som exp forslår kan du jo selv se lidt efter, spm. har været oppe mange gange på Exp ->

http://www.eksperten.dk/list.phtml?searchtype=txt&words=preload+billeder&method=and&sort=score&excerpt_on=1&catid=0
Avatar billede exp Juniormester
10. juli 2003 - 21:59 #7
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Avanceret preloader</title>
<script type="text/javascript">
bill = new Array("billede1.jpg", "billede2.jpg", "billede3.jpg", "billede4.jpg", "billede5.jpg"); //Billederne. Listen kan sagtens forstørres/formindskes.

i = -1;
nsImg = new Image();
tbts = 0;

function preload() {
  img = (document.all) ? document.images["pimg"] : nsImg;
  if (++i != 0 && document.all)
    tbts += Math.round(img.fileSize / 1024);
  prct = Math.round(i / bill.length * 100);
  document.getElementById("pl").innerHTML = prct + "%<br />" + ((document.all) ? "Kilobytes: " + tbts + "<br />" : "") + i + " ud af " + bill.length + " billeder loadet";
  document.getElementById("plbar").style.width = prct + "%";
  if (i >= bill.length)
    efterPreload();
  else {
    img.src = bill[i];
    if (!document.all)
      tjek();
  }
}

function tjek() {
  if (nsImg.complete)
    preload();
  else
    setTimeout(tjek, 100);
}

function efterPreload() {
  //Her defineres, hvad der skal ske, efter billederne er loadet
  //Hvis siden skal skifte, fjerner du bare de to slashes herunder:
  //self.location.href = "din_side.html";
}
</script>
</head>
<body>
<h2>Avanceret preloader</h2>
<div style="width: 200px; height: 16px; border: 1px solid black; background-color: #CCCCCC; font-size: 0px;">
<div style="width: 0%; height: 100%; background-color: #6699CC; font-size: 0px;" id="plbar"></div>
</div>
<span id="pl" style="font-family: Verdana; font-size: 60%;"></span><br />
<img src="" name="pimg" style="display: none;" onLoad="preload();" />
<script type="text/javascript">
preload();
</script>
</body>
</html>
Avatar billede hunters_force Nybegynder
10. juli 2003 - 22:02 #8
mmm jeg kan sku ikke lige gennemskue hvad der skal til....

Jeg kan jo ikke bare sætte den til at preloade samtlige billeder....den skal jo kun preloade de billeder som skal vises på den aktuelle side....

måske en kombination at ovenstående script og mit databasekald...
Avatar billede tarraq Nybegynder
12. juli 2003 - 11:35 #9
Der er en metode der sørger for at brugeren ikke afbryde en sides load.

http://dk.php.net/ignore-user-abort

Prøv det. Måske virker det.

- Tarraq
Avatar billede hunters_force Nybegynder
17. juli 2003 - 15:55 #10
tarraq - det virker desværre heller ikke....
Avatar billede exp Juniormester
09. september 2003 - 12:00 #11
Har du fundet ud af noget?
Avatar billede hunters_force Nybegynder
09. september 2003 - 12:02 #12
nej jeg har ikke fundet noget endnu. Jeg lader spørgsmålet stå åbent.

Jeg har set på en del andre sider med thumbnailgallerier at de opfører sig på samme måde. Desværre...
Avatar billede hunters_force Nybegynder
09. september 2003 - 12:03 #13
mht at preloade billederne kan jeg huske at jeg ikke umiddelbart fik nok "bonus" ud af det. (det er en side jeg ikke just udvikler på hverdag, så der går desværre lidt tid mellem jeg kigger på det.)
Avatar billede exp Juniormester
09. september 2003 - 12:29 #14
Så vil jeg da foreslå dig at lukke spm og oprette et nyt, så får du fat i flere folk :-)
Avatar billede hunters_force Nybegynder
09. september 2003 - 13:46 #15
ok jeg lukker,,,,
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