# Seite neu laden mit änderung der id und einem variablen textfeld (aus einer php)



## zg peripherals (21. Mai 2003)

Hi wisemen,

ich möchte eine Seite erstellen, die sich beim neuladen verändert.
Sicher schwierig nachzuvollziehen, ich beschreibe es so gut wie möglich:

gehen wir von einer Seite aus, die wie folgt heisst:   ~/seite.php
Gehen wir weiter von dem einfachsten Fall aus: Die Seite enthält nur ein variables Textfeld und zwei Links ("vor" und "zurück")

Versehen wir diese Seite nun noch mit einer ID-No.: zum Beispiel 0003

Jetzt möchte ich einem der beiden Links folgen. Das sollte dann so aussehen:

~/seite.php?id=-1
Ergebnis soll sein: Die Seite ~/seite.php wird erneut geladen, allerdings mit der ID 0002. Da ich die Links ja nicht ändern kann muss ich die ID-No erhöhen bzw. verringern, da eine dierekte Anwahl nicht möglich ist. 

Wie realisiere ich das mit der -1? Ich kann auch gerne noch eine weitere PHP-Datei hinzufügen, die die aktuelle ID annimmt, erhöht bzw. verringert und sie dann wieder ausgibt.

Aber wofür benötige ich diese ID überhaupt?! Hier kommt das Textfeld ins Spiel: Das Textfeld soll die ID auslesen, und dann den zugeordneten Text aus einer weiteren PHP-Datei einlesen. Nennen wir diese Datei: ~/namen.php

Diese Datei enthält eine Liste mit ID's und den zugehörigen Namen.

Noch mal kurz in zwei Sätzen:

Ich öffne eine Seite (ID 0003) die ein variables Textfeld (Inhalt: Ich bin der Text für die Seite mit der 0003-ID)  und zwei Links enthält. Ich folge einem der Links ("zurück") und komme erneut auf die Seite, allerdings zeigt mir das Textfeld jetzt den Inhalt, der für diese Seite (ID 0002) bestimmt ist - die Texte erhält das Feld aus einer PHP die den Text der ID zuweist.

Wie kann ich so etwas am besten und einfachsten realisieren?
Hinweis: ich brauch in fast allen Punkten Hilfe!

ich danke euch jetzt schonmal für eure Hilfe!

zg


----------



## Andreas Dunstheimer (21. Mai 2003)

nehmen wir mal an, dass Du die Seite mit einem Übergabeparameter aufrufst (in dem Fall die ID), dann hast Du diesen Parameter als Variable in Deinem Script, kannst damit rechnen, und kannst sie auch in link einbauen.

Beispiel:

Aufruf: ~/seite.php?id=0003

und dann im Script:


```
echo "diese Seite hat die ID: " . $id;
echo "<a href='seite.php?id=" . $id-1 . "'>zurück</a>";
echo "<a href='seite.php?id=" . $id+1 . "'>vor</a>";
```

Soweit zum Prinzip. Probleme wirst Du allerdings mit den führenden Nullen bekommen. Benutz also lieber ID=3 anstatt ID=0003 ;-)


Dunsti


----------



## Tim C. (21. Mai 2003)

Und um das ganze noch um den Aspekt der Konformität (ab PHP 4.2.0) zu erweitern benutze $_REQUEST['id'] anstelle von $id.


----------



## zg peripherals (21. Mai 2003)

Aber wenn ich die ID in der Seite speichere, dann ist sie ja für alle Anwender gleich??! Wenn die leute also gleichzeitig surfen, überschneidet sich dass dann nicht? Ich meine, wenn jeder der die Seite aufruft sich selber vorarbeitet, dann sollte es doch funktionieren? (wird doch dann im Cache gespeichert, oder?)

Und denkt bitte an das variable Textfeld! Wie lese ich das ein, und wie kann ich die ID überhaupt am Anfang festlegen?

Noch was anderes. wenn ich 0001 erreicht habe, und dann auf "zurück" klicke, wie komm ich dann auf 0099 (z.B.) - also das letzt Bild?

danke schonmal


----------



## Andreas Dunstheimer (21. Mai 2003)

keine Angst, Variablen gelten immer nur innerhalb eines Scripts. Wenn zwei User das gleiche Script aufrufen werden daraus automatisch zwei Scripts, die auch als verschiedene behandelt werden. Die Variable $id aus Script 1 und die aus Script 2 beeinflussen sich nicht!!! (is etwas komisch beschrieben, aber ich denke, Du weisst, wie ich das meine) ;-)

Das mit dem "Überlauf" ist auch denkbar einfach:


```
echo "diese Seite hat die ID: " . $id;
if ($id<=1) {
   $id_zurueck=99;
} else {
   $id_zurueck=$id-1;
}
echo "<a href='seite.php?id=" . $id_zurueck . "'>zurück</a>";
if ($id>=99) {
   $id_weiter=1;
} else {
   $id_weiter=$id+1;
}
echo "<a href='seite.php?id=" . $id_weiter . "'>vor</a>";
```

verständlich? ;-)


Dunsti

PS: bevor sich sonic wieder "beschwert", so geht's mit weniger tippen:


```
echo "diese Seite hat die ID: " . $id;
$id_zurueck = $id<=1?99:$id-1;
echo "<a href='seite.php?id=" . $id_zurueck . "'>zurück</a>";
$id_weiter = $id>=99?1:$id+1;
echo "<a href='seite.php?id=" . $id_weiter . "'>vor</a>";
```


----------



## zg peripherals (21. Mai 2003)

ok vielen Dank Dunsti und den anderen.

Allerdings bitte ich noch kurz zu erklären, wie das mit dem Textfeld funktioniert! (Und bitte noch einen Satz zu dem ersten Wert(ID) - wo ich den implementieren muss!)

Zu dem Skript. kann ich das auch zu normalen html-Inhalten in die Seite einfügen, und wenn ja dann wo!

danke!

zg


----------



## Andreas Dunstheimer (21. Mai 2003)

1.) den ersten Wert gibst Du in dem Link auf die Seite mit:

z.B. in der index.html:


```
<a href="seite.php?id=1">Link</a>
```

2.) Wo kommen denn die Inhalte für die Textfelder her? aus einer Datenbank? Dann wäre das z.B. so:

```
bis hierher HTML
<?php
mysql_connect($server,$user,$passwort);
mysql_select_db($datenbank);
$abfrage=mysql_query("SELECT * FROM `texte` WHERE id='$id'");
$text = mysql_fetch_array($ergebnis);
?>
<input type="text" value="<?php echo $text['textspalte']; ?>">
```

Damit wäre auch geklärt, wie Du das in eine HTML-Datei einbindest. Immer wenn PHP-Code kommt, diesen mit <?php und ?> markieren (an Anfang und Ende) und natürlich die Datei mit der Endung .PHP speichern.


Dunsti


----------



## zg peripherals (21. Mai 2003)

wäre sicher ne Möglichkeit, aber kann ich den Textfeld-Inhalt nicht aus ner PHP-Datei einlesen. Also so, dass das Textfeld beim laden der Seite mit der ID bei ner PHP anfragt, und ihn da ausliest:

1= Hallo
2= Dunsti
3= wie
4= geht
5= es
6= dir

(blödes Beispiel) aber so ungefähr hatte ich mir das vorgestellt!

Geht das? .... geht das generell mit ner PHP?

(hoffentlich)

danke


----------



## Andreas Dunstheimer (21. Mai 2003)

ich kann die Frage net so richtig verstehen ... was steht denn in dieser PHP-Datei, aus der Du die Werte für das Textfeld lesen willst drin???


Dunsti


----------



## zg peripherals (21. Mai 2003)

das weiss ich selbst nicht so genau (jedenfalls was das Skript betrifft). Aber was den "Inhalt" betrifft, da wollte ich halt eine Liste mit ID`s und den zugehörigen Texten haben.

Textfeld wird geladen -> läd die PHP: (z.B.  ~/text.php?text=1 

1 ist der Wert der ID.

1=Text für Seite 1
2= Text für Seite 2
usw.....

Das Textfeld übernimmt dann den Text hinter dem Gleichzeichen


Ich hoffe jetzt ist klar was ich meine!

zg


----------



## Andreas Dunstheimer (22. Mai 2003)

jo, kanns mir so in etwa vorstellen. 

ich würde es so machen:


text.php

```
$text['1'] = "Hier der Text für ID 1";
$text['2'] = "Hier der Text für ID 2";
$text['3'] = "Hier der Text für ID 3";
...
...
```


seite.php

```
include "text.php";

echo $text['$id'];
```


Dunsti


----------



## zg peripherals (22. Mai 2003)

Ok, genau so habe ich mir das vorgestellt! 

Ich habe versucht, die PHP-Skripte in eine normale Seite einzubinden. allerdings klappt das mit den Links nicht. es steht noch ein Teil des Skripts davor, und dann kommt ein Link mit dem Namen "vor"! 

Wie implementiere ich die Sachen richtig, so dass es auch funktioniert?

die text.php bekomm ich glaub hin. aber die seite.php nicht! Ich weiss nicht wie ich die Links richtig setze, oder ob die im PHP-Teil schon fertig sind, aber warum gehen sie dann nicht... usw.

und wie ich die dateien aus der text.php so "include", dass sie gehen, bzw. wie ich die an was wür ein Textfeld weitergeben muss... und und und.

ich weiss ich bin schlecht. aber halt auch ein Rookie

Ich kann mir denken, dass ihr Skriptvorkauen nicht mögt, aber ich habs versucht und nicht geschafft!

Helft mir bitte nochmal!

Danke!

zg


----------



## Andreas Dunstheimer (22. Mai 2003)

poste einfach mal die seite.php (was Du bisher hast) und ich sag Dir dann, wo der Fehler ist.
Schliesslich willst/sollst Du ja auch was lernen dabei 


Dunsti


----------



## zg peripherals (22. Mai 2003)

stimmt schon. aber es fehlt ja schon an den Grundsachen... z.B.: variaben fuer das textfeld

hier die seite mit dem fehler:


```
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">


</body>
</html>

<?php
echo "diese Seite hat die ID: " . $id;
if ($id<=1) {
   $id_zurueck=99;
} else {
   $id_zurueck=$id-1;
}
echo "<a href='seite.php?id=" . $id_zurueck . "'>zurück</a>";
if ($id>=99) {
   $id_weiter=1;
} else {
   $id_weiter=$id+1;
}
echo "<a href='seite.php?id=" . $id_weiter . "'>vor</a>";
?>
```

danke schonmal


----------



## zg peripherals (23. Mai 2003)

hi dunsti und die anderen, vergesst mich bitte nicht! merci


----------



## Andreas Dunstheimer (23. Mai 2003)

fast richtig .... aber die tags </body> und </html> müssen NACH dem PHP-Code stehen 

anders gesagt: der PHP-Code muss dort stehen, wo er auch angezeigt werden soll. (also z.B. auch zwischen <td> und </td> wenn die Ausgabe in einer Tabelle sein soll.)


```
<html>
<head>
<title>Untitled Document</title>
</head>

<body bgcolor="#FFFFFF" text="#000000">

<b>diese Seite hat die ID: <?php echo $id; ?></b>

Textfeld: <input type=text>

<?php
if ($id<=1) {
   $id_zurueck=99;
} else {
   $id_zurueck=$id-1;
}
echo "<a href='seite.php?id=" . $id_zurueck . "'>zurück</a>";
if ($id>=99) {
   $id_weiter=1;
} else {
   $id_weiter=$id+1;
}
echo "<a href='seite.php?id=" . $id_weiter . "'>vor</a>";
?>

</body>
</html>
```

hab den Code mal bisschen abgeändert, damit das mit dem PHP-Einbinden klarer wird.


alles klar???

Dunsti


----------



## zg peripherals (25. Mai 2003)

hi Dunst, hatte am WE keine Zeit... aber dafür noch immer das Problem!

wenn ich dass so einfüge, wie es da steht, sieht die geöffnete php-Datei ungefähr so aus:


```
diese Seite hat die ID: Textfeld:  =99) { $id_weiter=1; } else { $id_weiter=$id+1; } echo "vor"; ?>
```

also es steht teilweise das Skript drin! Wo liegt da der Fehler?

danke schonmal

zg


----------



## zg peripherals (26. Mai 2003)

0k, ok, ich hab den Fehler... meinen Fehler entdeckt. scusi, war voreilig gefragt.

ABER: trotzdem weiss ich noch immer nicht, wie dass jetzt mit dem Textfeld löse. Wie kann ich denn den Wert des Textfeldes aus der PHP einlesen?

danke

zg


----------



## Andreas Dunstheimer (26. Mai 2003)

wie weiter oben schon beschrieben hast Du eine Datei, die etwa so aussieht:


```
<?php
$text[1] = "das hier ist text 1";
$text[2] = "das hier ist text 2";
$text[3] = "das hier ist text 3";
$text[4] = "das hier ist text 4";
$text[5] = "das hier ist text 5";
?>
```

Dieses fügst Du mit include in das Hauptscript am Anfang ein:


```
include "texte.php";
```

und an der Stelle, wo das Textfeld ist fügst Du dann einfach die Variable aus dem Array mit der entsprechenden ID hinzu.

sieht dann z.B. so aus:


```
<?php
include "texte.php";
?>
<html>
<head>
<title>Untitled Document</title>
</head>

<body bgcolor="#FFFFFF" text="#000000">

<b>diese Seite hat die ID: <?php echo $id; ?></b><br>

Textfeld: <input type=text value="<?php echo $text[$id]; ?>"><br>

<?php
if ($id<=1) {
   $id_zurueck=99;
} else {
   $id_zurueck=$id-1;
}
echo "<a href='seite.php?id=" . $id_zurueck . "'>zurück</a>&nbsp;-&nbsp;";
if ($id>=99) {
   $id_weiter=1;
} else {
   $id_weiter=$id+1;
}
echo "<a href='seite.php?id=" . $id_weiter . "'>vor</a>";
?>

</body>
</html>
```

(habs getestet und geht !!!  )


Dunsti


----------



## zg peripherals (26. Mai 2003)

so,.... du bist jetzt mein Lieblings-Dunsti! 

vielen vielen Dank. Das funktioniert wunderbar.

und Danke für die Geduld

zg


----------

