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
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
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
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.