Avatar billede breon Nybegynder
01. oktober 2005 - 20:21 Der er 5 kommentarer og
1 løsning

Udtræk fra MYSQL problemer

Jeg laver et udtræk fra MYSQL der lister de tilgængelige albums i et galleri. Hvert album vis i en tabel med et navn, en beskrivelse og det første billede der er tilknyttet albummet.

Problemet er, at hvis f.eks. Album 2 ikke indeholder nogle billeder endnu, vises et billede fra Album 3? Hvordan kan man gøre det således, at hvis der ikke er nogle billeder tilknyttet Album 2, skal variablen $albumBillede sættes til 'missing.gif'?

Den pågældende del af koden ser således ud (formateringen går sikkert lidt i stykker):

$query = "SELECT * FROM mat_albums ORDER BY album_navn ASC";
$db = new database('mysql');
$result=$db->query($query,"rows");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$aNavn = $row['album_navn'];
$aId= $row['album_id'];
$aBesk = $row['album_besk'];

  $query2 = "SELECT billede FROM mat_billeder WHERE album_id='$aId' LIMIT 1";
  $db = new database('mysql');
  $result2=$db->query($query2,"rows");
  while ($row2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {
    $albumBillede = $row2['billede'];
  }
   
echo "<table style='background:#F0EDCD;width: 400px; border: 1px solid silver; margin: 3px; padding:3px;'>
      <tr>
        <td style='vertical-align:top;'><a class='album' href='fotoalbum.php?aid=".$aId."'>".$aNavn."</a></td>
        <td rowspan='2' style=width:85px;text-align:right;vertical-align:top;'><a href='fotoalbum.php?aid=".$aId."'><img src='".$destinationSmall.$albumBillede."' alt='".$albumBillede."' border='0'></a></td>
      </tr>
      <tr>
        <td style='vertical-align:top;'><p>".$aBesk."</p></td>
      </tr>
    </table><br>";}
}
Avatar billede breon Nybegynder
01. oktober 2005 - 20:23 #1
Her er koden igen, uden CSS til at forvirre.

$query = "SELECT * FROM mat_albums ORDER BY album_navn ASC";
$db = new database('mysql');
$result=$db->query($query,"rows");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$aNavn = $row['album_navn'];
$aId= $row['album_id'];
$aBesk = $row['album_besk'];

    $query2 = "SELECT billede FROM mat_billeder WHERE album_id='$aId' LIMIT 1";
    $db = new database('mysql');
    $result2=$db->query($query2,"rows");
    while ($row2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {
    $albumBillede = $row2['billede'];
    }
   
echo "<table>
      <tr>
        <td><a href='fotoalbum.php?aid=".$aId."'>".$aNavn."</a></td>
        <td rowspan='2><a href='fotoalbum.php?aid=".$aId."'><img src='".$destinationSmall.$albumBillede."></a></td>
      </tr>
      <tr>
        <td><p>".$aBesk."</p></td>
      </tr>
    </table>";}
}
Avatar billede coderdk Praktikant
01. oktober 2005 - 20:26 #2
Lav:

while ($row2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {
    $albumBillede = $row2['billede'];
  }

om til:

if ( $row2 = mysql_fetch_assoc( $result2 ) )
{
    $albumBillede = $row2['billede'];

og afslut } efter du har skrevet ud (i dit eksempel er der da et } for meget?)
Avatar billede breon Nybegynder
01. oktober 2005 - 21:53 #3
Næ, hvor fint, nu virker det. Coderdk, med din kode blev Album 2 slet ikke vist, så jeg rettede det til:

if ( $row2 = mysql_fetch_assoc( $result2 ) )
    {
    $albumBillede = $row2['billede'];
    } else {
    $albumBillede = "missing.gif";
    }

Så bliver Album 2 vist, og billedet sat til Missing.gif.

Smid et svar for at få point.
Avatar billede coderdk Praktikant
01. oktober 2005 - 21:54 #4
Nå ja, den glemte jeg, det kunne du også gøre sådan:

$albumBillede = 'missing.gif';
if ( $row2 = mysql_fetch_assoc( $result2 ) )
{
    $albumBillede = $row2['billede'];
Avatar billede breon Nybegynder
01. oktober 2005 - 21:55 #5
Og jo, der var et } for meget med i mit kode eksempel, men det er fordi det er taget ud af en større helhed. havde bare ikke lige fået luget ordentligt ud i det inden jeg postede det.
Avatar billede breon Nybegynder
01. oktober 2005 - 21:56 #6
Nå ja, det var smartere. Tak for hjælpen.
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