id-attribut lesen

menzimuck

menzimuck

Aktives Mitglied
Thread Starter
Dabei seit
20.04.2005
Beiträge
294
Reaktionspunkte
0
hallo zusammen

für meine galerie möchte ich eine navigation erstellen. die galerie funktioniert folgendermassen: man klickt auf ein vorschaubildchen mit zb. dem namen "100.jpg", dann öffnet sich die datei "popup.php?id=100" mit dem grossen bild "100.jpg" darin.

wie kann ich jetzt definieren, das für bestimmte id's bestimmte texte unten angefügt werden? sowas funktioniert ja nicht oder:
PHP:
	if ($id = 100)
        echo ".....\n";
 
PHP:
if($_GET['id']==100) {
   // Tu was
}

so funktionierts. mit der $_GET Variable bekommst du alle parameter in der url.
 
dein vorschlag scheint plausibel zu tönen, allersdings erhalte ich diese fehlermeldung:

Parse error: parse error, unexpected T_ELSE in/.. on line 12


PHP:
	include("include/db_connection.php");
	$sql = mysql_fetch_assoc(mysql_query("SELECT * FROM fotos WHERE id='$id';"));
	echo "<img src=\"fotos/$id.jpg\" alt=\"Fenster schliessen\" onClick=self.close();><br>\n";
	
   if ($_GET['id']==200)
   echo "<div align=\"center\"><a href=\"popup2.php?id=199\" class=\"klein\">vorheriges Foto</a>   |   <a href=\"popup2.php?id=201\" class=\"klein\">nächstes Foto</a></font>\n";
	?>

wo hängt das skript noch? ich finde keinen fehler!
 
warum hast du das else vor dem if?

übrigens gewöhn dir an, immer die {- Klammern zu machen, es ist einfach übersichtlicher. auch wenns ein bisschen mehr aufwand ist.
 
ich habe das else schon rausgenommen, ist beim zusammenschneiden noch übriggeblieben. aber auch ohne das else funktionierts noch nicht. und wenn ich {} mache, kommt mir diese fehlermeldung
 
das hier wäre mal der ganze code:
Code:
<html>

	<head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
		<title>Piggnigg Fotos</title>
        <link rel="stylesheet" type="text/css" href="include/piggnigg.css">
	</head>

	<body background="http://www.piggnigg.ch/images/bg_popup.jpg" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">
<?php
	include("include/db_connection.php");
	$sql = mysql_fetch_assoc(mysql_query("SELECT * FROM fotos WHERE id='$id';"));
	echo "<img src=\"fotos/$id.jpg\" alt=\"Fenster schliessen\" onClick=self.close();><br>\n";
   if ($_GET['id']==200) {
 echo "<div align=\"center\"><a href=\"popup2.php?id=199\" class=\"klein\">vorheriges Foto</a>   |   <a href=\"popup2.php?id=201\" class=\"klein\">nächstes Foto</a></font>\n";
	}
	?>
</body>
</html>
 
Schreib den Text zum Bild in die Datenbank, lass das if komplett weg. Für was auch, du grenzt ja die MYSQL Abfrage auf die ID die Du haben willst ein. Da kriegste nur den Inhalt von der Zeile WHERE ID=$id.
 
@thahammer

du hast schon recht, es ginge natürlich ganz einfach so wie du das gesagt hast. aber es ist vielviel aufwendiger, in der datenbank jeder id einen text zuzuweisen, als einfach in einer datei (popup2.php in diesem falle) untereinander einzugeben, für welche id welcher text kommt.
 
menzimuck schrieb:
das hier wäre mal der ganze code:
[…]

Der stimmt doch. Da gibt's keinen Fehler drin. Vielleicht altes Dokument auf dem Server?
 
Menzimuck hatte neulich schon das Problem mit PARSE ERRORs bei PHP Snippets, die ich bei gültiger Syntax nicht nachvollziehen konnte, sprich, bei mir traten die nicht auf.

Irgendwas stimmt da nicht, entweder in den inkludierten Dokumenten oder in der PHP-Konfiguration :noplan:

2nd
 
ThaHammer schrieb:
Schreib den Text zum Bild in die Datenbank, lass das if komplett weg. Für was auch, du grenzt ja die MYSQL Abfrage auf die ID die Du haben willst ein. Da kriegste nur den Inhalt von der Zeile WHERE ID=$id.

Hmm, ich finde es in dem Bsp. nicht - welchen Text denn? Den Seitentitel?

Ausserdem - der Query funktioniert nicht, wenn das der ganze Code für den Bildaufruf ist:

PHP:
<html>
<?php
	$sql = mysql_fetch_assoc(mysql_query("SELECT * FROM fotos WHERE id='$id';"));
	echo "<img src=\"fotos/$id.jpg\" alt=\"Fenster schliessen\" onClick=self.close();><br>\n";
 ?>

Die Variable $id existiert zum Zeitpunkt des Querys noch nicht und der Query liefert damit ein leeres Ergebnis.

Sinniger wäre folgendes:

PHP:
<html>
<?php
     $id = $_GET['id'];
	$sql = mysql_fetch_assoc(mysql_query("SELECT * FROM fotos WHERE id='$id';"));
	echo "<img src=\"fotos/$id.jpg\" alt=\"Fenster schliessen\" onClick=self.close();><br>\n";
 ?>

Das IF...THEN ist wirklich nicht notwendig. Und man bekommt auf die Art und Weise auch nicht die nachfolgende und vorhergehende ID des Bildes heraus, also wenn man einfach $id++ und $id-- macht. Was ist, wenn die $id das letzte oder erste Bild in der DB ist? Dann läuft der Query ebenfalls ins Leere.

Sprich, Du musst rausfinden, welches der erste und der letzte Datensatz in der DB ist. Dabei sind "erster" und "letzter" jeweils relativ zu betrachten, d. h. sie sind abhängig davon, nach welchen Kriterien man sortiert. Nehmen wir an, wir haben eine fortlaufende id (auto inkrementiert) in der Tabelle, dann können wir den ersten und letzten Datensatz wie folgt raussuchen:

1. Datensatz:
PHP:
SELECT * FROM table ORDER BY id ASC LIMIT 1

Letzter Datensatz:
PHP:
SELECT * FROM table ORDER BY id DESC LIMIT 1

Auf diese Datensätze muss man in Verbindung mit der geklickten ID reagieren.

2nd
 
Achso, ich dachte die ID wäre schon vorhanden!
 
Zurück
Oben Unten