/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Finde den sidste række i en tabel
Fra : MZH


Dato : 29-08-02 13:46

Langt indlæg følger...:

På siden her http://www.hum.au.dk/engelsk/gallery/people.php har jeg
lavet et billedgalleri ud fra en database.

I en tidligere tråd fik jeg svar på, hvordan jeg fik mit
databaseudtræk delt op, så jeg kunne lave en tabel med vandrette
rækker af fire billeder (TAK!), og så rodede jeg mig selv frem til en
løsning, som sætter en lodret sort streg efter de første tre billeder,
men IKKE efter det fjerde.

Problemet er nu, at hvis den nederste række i billedgalleriet
indeholder præcis tre billeder, så bliver det sidste billede gentaget,
så der står fire billeder! Problemet kan ikke ses nu, da antallet af
billeder tilfældigvis er deleligt med 4, men hvis jeg fjernede en
person fra databasen, ville den nederste række altså stadigvæk
indeholde fire billeder...!

Koden til formateringen af udtrækket er her:

$sql = "SELECT first_name, last_name, title, engxxx FROM gallery";

$result = mysql_query($sql) or die(mysql_error());
$num_rows = mysql_num_rows($result);

$i = 0;
echo "<tr>";
while($row = mysql_fetch_array($result)) {
@extract($row);

//Træk tre billeder ud og lav en lodret sort streg (black.gif) efter
echo "<td valign=top align=center width=24% bordercolor=#000000>
   <br>
   <a href=$engxxx/><img src=$engxxx/foto.jpg alt=\"$first_name
$last_name\" width=128 height=192 border=1></a>
   <br><br>
   <strong>$first_name $last_name</strong>
   <br>
   $title
   <br><br>
   </td>

   <td valign=top width=1% height=100% rowspan=2>
   <img src=black.gif alt=\"\" width=1 height=300 border=0>
   </td>";
$i++;

//Tjek om der er hevet et antal rækker ud, der er deleligt med 3 og
hiv endnu en række ud hvis det er tilfældet, men sæt IKKE en sort
streg efter
if($i % 3 == 0) {
$row = mysql_fetch_array($result);
@extract($row);
echo "
   <td valign=top align=center width=24% bordercolor=#000000>
   <br>
   <a href=.$engxxx/><img src=$engxxx/foto.jpg alt=\"$first_name
$last_name\" width=128 height=192 border=1></a>
   <br><br>
   <strong>$first_name $last_name</strong>
   <br>
   $title
   <br><br>
   </td>
   <td width=1%>&nbsp;</td>

//
   <tr align=center valign=middle>
   <td colspan=8 width=100% height=35>
   <img src=black.gif alt=\"\" width=100% height=1></td></tr>";
}
}

Problemet er så vidt jeg kan se, at hvis billede nr. 3 i den sidste
række også er den sidste række i tabellen, så er if-sætningen
selvfølgelig opfyldt, men der er ikke flere rækker at trække ud, så
den sidste række bliver trukket ud igen.

Derfor: Hvordan får jeg indarbejdet i min if-sætning at det fjerde
billede KUN skal skrives ud hvis det tredje billede ikke er det sidste
i tabellen? Simpelt?

PFT,

Mikl

 
 
MZH (30-08-2002)
Kommentar
Fra : MZH


Dato : 30-08-02 11:42

Fandt løsningen selv... Nok ikke den mest elegante, men her er den:

$sql = "SELECT first_name, last_name, title, engxxx FROM gallery ORDER
BY $sort";

$result = mysql_query($sql) or die(mysql_error());
$num_rows = mysql_num_rows($result);

if ($num_rows < 1) {
echo "<h3><div align=center><br><img src=black.gif alt=\"\" width=100%
height=1 border=0><br><br><br />There are currently no employees in
the database...<br /><br /><img src=black.gif alt=\"\" width=100%
height=1 border=0><br /><br><br><br>";
} else {

$i = 1;
echo "<tr>";
while($row = mysql_fetch_array($result)) {
@extract($row);
$i++;
echo "
   <td valign=top align=center width=24% bordercolor=#000000>
   <br>
   <a href=$engxxx/><img src=$engxxx/foto.jpg alt=\"$first_name
$last_name\" width=128 height=192 border=1></a>
   <br><br>
   <strong>$first_name $last_name</strong>
   <br>
   $title
   <br><br>
   </td>

   <td valign=top width=1% height=100% rowspan=2>
   <img src=black.gif alt=\"\" width=1 height=300 border=0>
   </td>";
if($i % 4 == 0 AND $i != ($num_rows + 1)) {
$row = mysql_fetch_array($result);
@extract($row);
$i++;
echo "
      <td valign=top align=center width=24%
bordercolor=#000000>
      <br>
      <a href=$engxxx/><img src=$engxxx/foto.jpg
alt=\"$first_name $last_name\" width=128 height=192
border=1></a><br><br><strong>$first_name
$last_name</strong><br>$title<br><br>
      </td>
      <td width=1%>&nbsp;</td>
      <tr align=center valign=middle>
      <td colspan=8 width=100% height=35>
      <img src=black.gif alt=\"\" width=100%
height=1></td></tr>";
}
}
echo "</tr>";

}


Søg
Reklame
Statistik
Spørgsmål : 177520
Tips : 31968
Nyheder : 719565
Indlæg : 6408659
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste