Avatar billede Slettet bruger
28. juni 2003 - 21:22 Der er 11 kommentarer og
1 løsning

altid 6 bokse

Jeg har følgende database udtræk.:

while($data = mysql_fetch_array($foresp)) {
echo "<td background='boks.jpg' width='140' height='141' align='center'><font face='Tahoma' color='#999595' size='-2'>$data[0]<br>Pris: Kr $data[1],-<br><br></font><img src='upload/$data[2]' width='90' height='60'></td>";

Der bliver utrukket 6 resultater pr side.

Men hvis der ikke lige er et antal poster der passer op i 6, eks 7 så kommer der kun en indholdsboks på side 2.

Jeg vil gerne have at der altid er seks indholdsbokse på hver side.

Eks er der 7 udtræk skal der være 5 tomme indholdsbokse på side 2

Indholdsboks= <td background='boks.jpg' width='140' height='141' align='center'>
Avatar billede Slettet bruger
28. juni 2003 - 21:41 #1
link til visning af problem.: http://design4you.dk/eksperten/
Avatar billede nielle Nybegynder
28. juni 2003 - 21:54 #2
Sæt en tæller ind i din while-løkke.
1) For hvert loop tæller du den 1 op.
2) Når den når 7, sætter du den til 1.

Lav derefter en ny while-løkke under den første:
1) For hvert gennemlløvb tæller du den 1 op.
2) Når den når 7 exiter du løkken.

Inden i denne while-løkke nr. 2 indsætter du din kode fopr de tomme indholdsbokse.
Avatar billede Slettet bruger
28. juni 2003 - 22:41 #3
kan du implementere det for mig hvis du får koden. har i forvejen et par tæller i og det er blevet lidt svært for mig...
Avatar billede Slettet bruger
28. juni 2003 - 22:43 #4
Her er hele koden:

<?php
$pr_side = "6"; //Definerer antal resultater pr. side
if (!isset($s)) {
    $s = "0"; //Tjekker om $s - som står for start - er sat, hvis ikke sættes den
}
include("connect.php");
echo "<table cellspacing='0' cellpadding='0'><tr>";
$foresp = mysql_query("SELECT navn,pris,filename FROM varer order by navn limit $s,$pr_side");

$sum = 3; // Antal billeder ved siden af hinanden
$sumcount = 1;
while($data = mysql_fetch_array($foresp)) {
echo "<td background='boks.jpg' width='140' height='141' align='center'><font face='Tahoma' color='#999595' size='-2'>$data[0]<br>Pris: Kr $data[1],-<br><br></font><img src='upload/$data[2]' width='90' height='60'></td>";

    if ($sumcount == $sum) {

        $sumcount = 0;

        echo "</tr><tr>";

    }

    $sumcount++;
}
echo "</tr></table>";

$g_total = mysql_query("select count(id) as total from varer") or die(mysql_error());
$total = mysql_result($g_total,0);

##
#Find ud af om derskal være et Forrige link
##
if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side
    $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes
    echo "<a href='?s=$previous_s'>Forrige</a> "; //Udskriver linket
}

##
#Find ud af hvis/hvor mange sider der er rows til
##
$page = 1; //Definerer hvor sidetal skal starte
for($start=0; $total > $start; $start=$start+$pr_side){ //For-løkke der kører indtil der ikke er nok rows til en side mere
    if ($start != $s) { //Tjekker om linket vil komme til at pege på den side man er på
        echo "<a href='?s=$start'>$page</a> "; //...hvis ikke, udskrives link med værdien af $page
    } else { //Ellers, dvs. hvis linket vil pege på den side man er på..
        echo "$page "; //...udskrives værdien af $page bare, altså ikke som link
    }
    $page++; //Lægger en til $page til næste gang løkken køres
}

##
#Find ud af om der skal være et næste link
##
if ($total > $s+$pr_side) { //Tjekker om der er flere sider
    $next_s = $s+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes
    echo "<a href='?s=$next_s'>Næste</a></font></center>"; //Udskriver linket "næste"
}
?>
Avatar billede nielle Nybegynder
28. juni 2003 - 23:01 #5
Soryy, kender desværre ikke meget til PHP. Så jeg kan ikke lige give dig en løsning - kun metoden.
Avatar billede Slettet bruger
28. juni 2003 - 23:08 #6
okay det er der ikke noget at gøre ved.

Måske der er andre der kan hjælpe????????
Avatar billede nielle Nybegynder
29. juni 2003 - 09:06 #7
$sum = 3; // Antal billeder ved siden af hinanden
$sumcount = 1;
$AntalBoxes = 0;
while ($data = mysql_fetch_array($foresp)) {
  echo "<td background='boks.jpg' width='140' height='141' align='center'><font face='Tahoma' color='#999595' size='-2'>$data[0]<br>Pris: Kr $data[1],-<br><br></font><img src='upload/$data[2]' width='90' height='60'></td>";
  if ($sumcount == $sum) {
    $sumcount = 0;
    echo "</tr><tr>";
  }
  $sumcount++;
  $AntalBoxes++
}
echo "</tr></table>";

while ($AntalBoxes < $pr_side) {
  echo "<td background='boks.jpg' width='140' height='141' align='center'>TOM BOKS</td>";
  if ($sumcount == $sum) {
    $sumcount = 0;
    echo "</tr><tr>";
  }
  $sumcount++;
  $AntalBoxes++
}
Avatar billede nielle Nybegynder
29. juni 2003 - 09:08 #8
Iøvrigt så har du et lille problem hvis antallet netop går op i 6 - så vil du have en tom <tr></th> i bunden af tabellen.
Avatar billede Slettet bruger
29. juni 2003 - 10:46 #9
Godmorgen..
Jeg har nu sat din forslag ind og kan ligeledes ses på http://design4you.dk/eksperten/

Det ser ud til at det går helt i kludder..
Avatar billede Slettet bruger
29. juni 2003 - 10:51 #10
Hov fik det til at virke efter at jeg fjernede en linie: echo "</tr></table>";

Mange tak nu er jeg en glad mand og her får du dine point.
Avatar billede nielle Nybegynder
29. juni 2003 - 11:05 #11
Takker for points.

I øvrigt: Din echo "</tr></table>"; skulle nu ikke slettes, bare blyttes ned bag den sidste while-løkke (MSIE er ligeglad med om </table> mangler, men det kan gå galt i andre browsere).
Avatar billede nielle Nybegynder
29. juni 2003 - 11:05 #12
blyttes -> flyttes
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