PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Infos zu neuen Funktionen


LordoftheBord
03.10.2002, 14:18:22
Hi

Ich habe zwei PHP Bücher in denen bei Formularen die Variablen so geschrieben werden: $var.

Habe Tage damit verbracht Fehler in meinem Formular zu suchen, bis mir ein Freund durch zufall mitgeteilt hat das das in neueren Versionen von PHP so geschrieben wird:

$_POST[var] bzw $_GET[var]

Jetzt wollte ich mal fragen, wo man sich über die neuen Funktionen informieren kann. Habe nämlich keine Lust (und kein Geld *g*) mir schon wieder ein neues Buch zu kaufen.

mfg
LotB

Ben20
03.10.2002, 15:44:09
Entweder bei php.net oder hier. Noch ein wenig zum Verständniss. $_POST["xyz"] (die " sind wichtig) geht erst ab der Version 4.1.x . Man kann es aber auch dort wieder so einstellen, dass $xyz wieder geht. Da gibts verschiedene Möglichkeiten. Entweder über die php.ini oder auch über register_globals()

LordoftheBord
03.10.2002, 16:16:34
Sind die " echt wichtig? Bei mir läufts nämlich auch ohne.



Was müsste ich den in die php.ini bzw. register_globals() reinschreiben?



Und kann mir vieleicht jemand sagen wo hier der Fehler liegt?

HTML-Datei

<html>
<head>
<title>Listing 9.4: Ein einfaches HTML Formular mit SELECT Anweisung</title>
</head>
<body>
<form action="listing_9_5.php" method="POST">
<input type="text" name="benutzer">
<br>
<textarea name="adresse" rows="5" cols="40">
</textarea>
<br>
<select name="produkte[]" multiple>
<option>Taschenmesser
<option>Kuchengabel
<option>Bilderrahmen
<option>Lampenschirm
</select>
<br>
<input type="submit" value="Klick mich">
<br>
</form>
</body>
</html>




PHP-Datei (ohne die HTML-tags <html> und so...)

<?php
print "Herzlich Willkommen <b>$_POST[benutzer]</b><p>nn";
print "Ihre Adresse ist:<p>nn<b>$_POST[adresse]</b><p>nn";
print "Die ausgewählten Produkte sind:<p>nn";
print "<ul>nn";
foreach($_POST["produkte"] as $_POST["wert"]) {
print "<li>$_POST["wert"]<br>n";
}
print "<ul>";
?>

Ben20
03.10.2002, 17:38:18
Die " sind wichtig - was für ein Problem gibts den mit dem Script. bei der php.ini kann ich dir nicht weiterhelfen. register_globals() ist eine Funktion und die Syntax ist glaube ich so:

register_globals("pre_", gpc);

oder so ähnlich. Das erste Attribut wird vor jede Var geschrieben.

Also aus var wir d $pre_var gpc legt die Reihenfolge fest in der sich Variablen überschreiben. In dem Fall: Cookies (c) überschreiben Postvars (p) und die überschreiben Getvars (g).

LordoftheBord
03.10.2002, 18:40:44
Sorry. Hab die Fehlermeldung völlig vergessen.

Fehlermeldung:

Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:homephpkurslisting_9_5.php on line 12

mfg
LotB

Matt
03.10.2002, 19:30:24
hi!
ich möchte nur mal ben20 korrigieren:
register_globals() gibt es nicht, die funktion heisst import_request_variables()
das erste ist dabei die reihenfolge, also ob GET vor Post kommt usw.. und das zweite ist das variablenprefix...

Ben20
03.10.2002, 20:06:58
@Matt: Danke - irgendwie hatte ich erwartet das mein Geschreibsel nicht ganz stimmt ;-)

@Lordoftheboard: Das liegt wahrscheinlich an den fehlenden ". Außerdem solltest Du das dann so einbinden:

echo "bla bla bla " . $_POST["var"] . "jfklasö";

Also die $_POST Vars aus dem String "rausnehmen" und per . einfügen sonst kann's Probleme geben.

LordoftheBord
03.10.2002, 21:00:47
meinste das so (?):

<?php
print "Herzlich Willkommen " .$_POST["benutzer"]"<br>";
print "Ihre Adresse ist: " .$_POST["adresse"]"<br>";
print "Die ausgewählten Produkte sind:
foreach($_POST["produkte"] as $_POST["wert"]) {
echo $_POST["wert"];
}
?>

Das ergibt folgende Fehlermeldung:

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:homephpkurslisting_9_5.php on line 7

Matt
03.10.2002, 21:30:41
nein...
also erstens:
das foreach geht sicherlich nicht, weil foreach ein ganzes array will, es speichert immer einen eintrag vom array y in variable x:
foreach(y as x)
print x

da brauchst du kein y["bla"] mehr

zweitens: du musst vor und nach dem $_POST["benutzer"] einen punkt machen, weil du davor und dannach an etwas anknüpft...
print "Herzlich Willkommen " .$_POST["benutzer"].<--PUNKT!!!!"<br>";

LordoftheBord
04.10.2002, 12:53:22
Hab das jetzt so geändert (hoffe du meintest das so)

<?php
print "Übergeben wurde " . $POST['benutzer'] . " als Wert<br>";
print "Übergeben wurde " . $POST['adresse'] . " als Wert<br>";
print "Die ausgewählten Produkte sind:";
foreach($produkte as $wert) {
echo $wert;
}
?>

Fehlermeldung:

Notice: Undefined variable: POST in C:homephpkurslisting_9_5.php on line 7
Übergeben wurde als Wert

Notice: Undefined variable: POST in C:homephpkurslisting_9_5.php on line 8
Übergeben wurde als Wert
Die ausgewählten Produkte sind:
Warning: Invalid argument supplied for foreach() in C:homephpkurslisting_9_5.php on line 10

Zeile 7 wäre die, mit dem Array $_POST['benutzer]

mfg
LotB

LordoftheBord
04.10.2002, 13:40:15
So. Habs jetzt endlich. Für alle dies interessiert. Hier der Code:

<?php
print "Übergeben wurde $_POST[benutzer] als Wert<br>";
print "Übergeben wurde $_POST[adresse]<br>";
print "Die ausgewählten Produkte sind:";
foreach($_POST['produkte'] as $wert) {
echo $wert;
}
?>

Danke an euch.

mfg
LotB