fastix®: Bilder-Galerie über PHP und MySQL

Beitrag lesen

Moin!

<?php   ### anzeigen.php

echo "<pre>\n";
  pint_r($_GET);
  echo "</pre>\n";
?>

Schreib es ihr doch gleich richtig und sicher hin...

Meine Betrachtungen gehen von einer Tabelle mit den Spalten:

id       - (big)integer, autoindex Wieviele Bilder dürfe es denn werden?
filename - text
text     - text
gueltig  - boolean (Wahrheitswert)

aus.

  
<?php #anzeigen.php  
  
# Ermittlung der angeforderten Nummer:  
  
if (isset($_GET['nr'])) {  
   # wenn die URI einen Wert für die Variable 'nr' enthält:  
   $intAktuellesBild = (int)$_GET['nr'];  
   # sei die Variable $intAktuellesBild gleich dem ganzzahligen Wert dieser Variable  
   # Die explizite Typumwandlung in ganzzahlig verhindert hier wirkungsvoll Angriffe  
   # auf die Datenbank  
   if ($intAktuellesBild < 1) {  
      # Für Spaßvögel, die negative Werte eingeben  
          $intAktuellesBild = 1;  
      }  
   }  
  
} else {  
   # Was, wenn nicht?  
   $intAktuellesBild = 1;  
   # Man nehme, so man hat, einfach das erste Bild...  
}  
  
print "<hr>Angefordertes Bild: $intAktuellesBild</hr>";  
  
# Du holst die Daten aus der Datenbank, wie das geht scheinst Du ja zu wissen ... unter anderem auch die Nummer des letzten (=Anzahl gültiger Bilder) und des ersten Bildes (id des ersten gültigen Bildes)  
  
# Ferner musst Du Dir noch Gedanken machen, was passiert, wenn es  
# mal (z.B. wegens Löschens) mittenmang in der Numerierung ein Bild nicht  
# mehr gibt oder Du es nicht zeigen willst. Vielleicht solltest Du  
# also statt des Datensatzes mit der passenden id  den n-ten " gültigen  
# Datensatz (als offset) geben lassen. Lies hierzu im MySQL- Manual Deiner Wahl  
# unter Select und dort unter Limit nach.  
  
# Vorschlag: hier: [link:http://dev.mysql.com/doc/refman/4.0/de/select.html]  
  
  
$intErstesBild = 1;  
  
# Ermitteln von $intLetztesBild  
# SQL: SELECT COUNT(id) AS intLetztesBild FROM bilder WHERE gueltig=TRUE;  
  
if ($intAktuellesBild > $intLetztesBild) {  
   # Für Spaßvögel, die sehr große Werte eingeben  
   $intAktuellesBild = $intLetztesBild;  
}  
  
  
  
# Dann folgt ein wenig Kinderkram:  
  
if ($intAktuellesBild == $intErstesBild) {  
    $intVorherigesBild = $intLetztesBild;  
} else {  
   $intVorherigesBild = $intAktuellesBild - 1;  
}  
  
if ($intAktuellesBild == $intLetztesBild) {  
    $intNaechstesBild = $intErstesBild;  
} else {  
    $intNaechstesBild = $intAktuellesBild + 1;  
}  
  
  
print "<hr>Angefordertes Bild: $intAktuellesBild";  
print "<hr>Vorheriges Bild: $intNaechstesBild";  
print "<hr>Nächstes Bild: $intNaechstesBild";  
print "<hr>Erstes Bild: 1";  
print "<hr>Letztes Bild: $intLetztesBild";  
  
# SQL: SELECT id, filename, text FROM bilder where gueltig=TRUE ORDER BY id LIMIT $intAktuellesBild,1;  
  
  
# [...]  
?>  

Jetzt musst Du noch die Abfrabgen bauen und das ganze zu einer brauchbaren Seite umrüsten. Hinweise hat Du genug und die SQL-Abfrage selbst scheint Dir ja keine Sorgen zu bereiten...

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development