PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu PHP Verständnis


Unfug
2005-03-09, 15:28:43
Hallihallo,
An dem folgenden Link möchte ich euch meine Frage stellen
http://www.tweakpc.de/?news_id=7332

Bei dieser Seite wird somit ein Artikel aufgerufen, der anscheinend über ?news_id=7332 aus der Datenbank gelesen wird.

Meine Frage ist nun. Wenn ich eine Datenbank erstellt haben. dort bilder_id habe (natürlich auto increment).
Kann ich dann ganz einfach über
http://www.meineseite.de/?bilder_id=3 das 3 bild anzeigen? Oder muss ich zustäzlich noch etwas machen, damit das so funktioniert?

wo wir grad dabei sind, würde auch bilder_id=3 - 5 gehen?? (also 3 bis 5)`?

Usus
2005-03-09, 15:30:53
Ähm, vielleicht habe ich dich jetzt falsch verstanden, aber du musst natürlich ein Programm schreiben, das dein Bild anzeigt. Was du im Link schreibst ist nur der Übergabeparameter für das Programm.

Unfug
2005-03-09, 15:49:03
und wie kann ich der php datei dann den Wert der ID übergeben?
ich kenne das bisher nur aus formularen, daß man dort mit Submit auf die PHP datei springt und dann die Werte des formulars nimmt.
wie kann man den "Link" denn auswerten?

JTHawK
2005-03-09, 17:09:40
Die Variablen welche per url übergeben werden sind für PHP verfügbar wie jene die per Formular übergeben werden.

Unfug
2005-03-10, 19:53:34
Als nächstes Wäre die Frage: WIE?
Also ich habe ..ID=12.

Was genau bewirkt das ?ID=12 (das fragezeichen davor) und welche php datei wird dabei angesprochen? und ist dann meine Variable $ID für das php programm?

MadMan2k
2005-03-10, 20:53:58
Was genau bewirkt das ?ID=12 (das fragezeichen davor) und welche php datei wird dabei angesprochen? und ist dann meine Variable $ID für das php programm?
nur, wenn register_globals an ist. Der sauberere Weg ist es sich die Varable aus dem $_GET array zu holen; sprich $_GET['ID']

Unfug
2005-03-10, 22:02:41
Ok das geht. ich hab jetzt versucht über LIMIT 0,15 die bestimmten Datensätze auszulesen.
Nur zeigt er mir immer nur den Datensatz an welchen ich über ?id=x geholt habe.

mein code:
$sql = "SELECT * FROM table WHERE id=$id LIMIT 0,15";

was könnte daran falsch liegen?
hab auch über:

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

versucht die anzahl auszulesen und bekommen nur 1.

danke

Indigo
2005-03-10, 22:23:49
Also wenn ich dich richtig verstanden habe, möchtest du wissen, was die übergebenen Variablen für einen Sinn haben.
Beispiel wäre zum Beispiel eine id:

wenn du die Variable mit ?id=1 übergibst, so wird sie an die gleich Datei geschickt und lässt sich dort wie in deinem Beispiel weiterverwenden.
Es ist übrigends bei deinem Beispiel normal, dass nur ein Datensatz angezeigt wird, da du mit WHERE `id`=$id ja vorgibst, dass nur Datensätze betrachtet werden sollen, in welcher die id=1 ist. Und das ist bei einer auto_increment Tabelle immer nur einer.
Alle Datensätze bekommst du mit:

$sql = "SELECT * FROM table WHERE 1 LIMIT 0,15";
$result = mysql_query($sql) or die(mysql_error());
$anzahl_zeilen = mysql_num_rows($result);

Dann kannst du dir aber die Übergabe der Variable sparen.

Desweiteren könntest du damit auch zum Beispiel nach Namen suchen.
Einfach ?name=Hans übergeben und mit mysql_query("SELECT * FROM `tabelle` WHERE `name`='$name'");
jetzt wird jeder Datensatz ausgegeben, der eine Tabellenspalte name mit dem Wert Hans hat.

Hoffe ich habe geholfen und nicht verwirrt. :)
Stehe für weitere Fragen bereit ;)

Edit:

Um auf deinen ersten Beitrag zu antworten:
Diese Abfrage musst du auch in php programmieren.
Beispiel dafür wäre:

if ($bilder_id)
{
$result=mysql_query("SELECT * FROM tabelle WHERE bilder_id=$bilder_id");
usw...
}

Die Angabe von bis musst du mit den Werten. bilder_id_min und bilder_id_max machen. Also die Grenzen konkret angeben und per Variable übergeben.
Ein anderer Weg ist mir persönlich nicht bekannt.

Unfug
2005-03-10, 22:47:32
mhh das erklärt natürlich einiges. ich dachte immer id= 1 z.b. würde zur ID = 1 springen und von dort an könnte ich LIMIT 0,15 die nächsten 15 Reihen ausgeben.

Aber wie du es erklärst ist , daß innerhalb der 0,15 nach ID = 1 gesucht wird.
Ich hoffe ich war korrekt, werd mich morgen nochmal ransetzen.

Indigo
2005-03-11, 06:46:19
Es wird nicht in den ersten 15 Datensätzen gesucht, sondern Limit gibt an, wenn du mehrere Datensätze hast, welche ausgegeben werden. Die erste Zahl ist der 1.Datensatz, der von den Ergebnissen betrachtet wird und die zweite Zahl gibt an, wieviele Datensätze ab dem "1ten" ausgegeben werden sollen.
Dann viel Spaß beim üben :)

JTHawK
2005-03-11, 10:29:33
mhh das erklärt natürlich einiges. ich dachte immer id= 1 z.b. würde zur ID = 1 springen und von dort an könnte ich LIMIT 0,15 die nächsten 15 Reihen ausgeben.


Um das zu tun müsste deine Abfrage beispielsweise lauten:



$ID = 5;
$query = "SELECT * FROM table WHERE name='hans' LIMIT $ID,15";


Hier wird Datensatz 6 bis 31 ausgelesen. (gestartet wird bei 0 - deswegen immer eins mehr)

JTHawK
2005-03-11, 10:30:23
Also wenn ich dich richtig verstanden habe, möchtest du wissen, was die übergebenen Variablen für einen Sinn haben.
Beispiel wäre zum Beispiel eine id:

wenn du die Variable mit ?id=1 übergibst, so wird sie an die gleich Datei geschickt und lässt sich dort wie in deinem Beispiel weiterverwenden.
Es ist übrigends bei deinem Beispiel normal, dass nur ein Datensatz angezeigt wird, da du mit WHERE `id`=$id ja vorgibst, dass nur Datensätze betrachtet werden sollen, in welcher die id=1 ist. Und das ist bei einer auto_increment Tabelle immer nur einer.
Alle Datensätze bekommst du mit:

$sql = "SELECT * FROM table WHERE 1 LIMIT 0,15";
$result = mysql_query($sql) or die(mysql_error());
$anzahl_zeilen = mysql_num_rows($result);

Dann kannst du dir aber die Übergabe der Variable sparen.

Desweiteren könntest du damit auch zum Beispiel nach Namen suchen.
Einfach ?name=Hans übergeben und mit mysql_query("SELECT * FROM `tabelle` WHERE `name`='$name'");
jetzt wird jeder Datensatz ausgegeben, der eine Tabellenspalte name mit dem Wert Hans hat.

Hoffe ich habe geholfen und nicht verwirrt. :)
Stehe für weitere Fragen bereit ;)

Edit:

Um auf deinen ersten Beitrag zu antworten:
Diese Abfrage musst du auch in php programmieren.
Beispiel dafür wäre:

if ($bilder_id)
{
$result=mysql_query("SELECT * FROM tabelle WHERE bilder_id=$bilder_id");
usw...
}

Die Angabe von bis musst du mit den Werten. bilder_id_min und bilder_id_max machen. Also die Grenzen konkret angeben und per Variable übergeben.
Ein anderer Weg ist mir persönlich nicht bekannt.

da wäre aber


$sql = "SELECT * FROM table LIMIT 15";


auch nicht verkehrt :D

Unfug
2005-03-11, 11:47:01
Kann man dann noch ein Order by reinmachen?

Bei mir kommt immer dann eine Fehlermeldung, wenn ich dahinter noch ORDER BY id desc mache

Indigo
2005-03-11, 18:47:10
Also ein ORDER BY müsste ohne Probleme funktionieren.
Was kommt denn genau für eine Fehlermeldung?