einfache frage zu php
Marcel
- php
Ich habe ein einfaches Script das ich erweitern möchte, aber nicht alzuviel ahnung von PHP.
##Auszug##
if ($submit)
{
$a = answer();
echo "$a";
}
Also wenn ich ein Formular abschicke sucht das php-script in einer datenbank den satz, der zu der Eingabe passt. Dieser Satz wird dann mit der $a ausgegeben. Wenn aber die seite zum ersten mal geladen wird, steht natürlich noch nichts da, weil das formular noch nie benutzt wurde. Jetzt würde ich das gerne ändern.
Geht das irgendwie mit einer if abfrage?
if
{
wenn a kein wert hat, dann echo "xxx";
ansonsten
$a = answer();
echo "$a";
}
Wäre euch für eure Hilfe dankbar.
mfg Marcel
Hallo Marcel!
if ($submit)
{
$a = answer();
echo "$a";
}
Also wenn ich ein Formular abschicke sucht das php-script in einer datenbank den satz, der zu der Eingabe passt. Dieser Satz wird dann mit der $a ausgegeben. Wenn aber die seite zum ersten mal geladen wird, steht natürlich noch nichts da, weil das formular noch nie benutzt wurde. Jetzt würde ich das gerne ändern.
Geht das irgendwie mit einer if abfrage?
Naja, du brauchst keien Zweite if-abfrage, sondern einfach ein else.
if ($submit)
{
$a = answer();
echo "$a";
}
else
{
// noch nicht abgeschickt
}
Falls du noch Fragen dazu hast, schau dir doch mal http://de3.php.net/manual/de/control-structures.php an.
MfG
Götz
Hallo Götz,
Eine einfache Frage zum besseren Verständnis:
a)Könnte man das auch so lösen?
if ($submit)
{
$a = answer();
if($a="";)
{
echo "Keine Eingabe gefunden";
}
else
{
echo "$a";
}
b) Wenn ja, welchen Vor-/Nachteil hat die jeweilige Lösung?
Bin grad ein wenig am Üben, um den DAU-Status so langsam mal loszuwerden... ;-)
Gruß
Kurt
Hallo,
Natürlich so:
if ($submit)
{
$a = answer();
if($a="";)
{
echo "Keine Eingabe gefunden";
}
else
{
echo "$a";
}
}
Das kommt davon, wenn, man keine saubere Formatioerung anwendet... ;-)
Gruß
Kurt
Hallo Kurt!
Das kommt davon, wenn, man keine saubere Formatioerung anwendet... ;-)
Ja, hab ich auch festgestellt, nur ich hab Deine Korrektur erst gerade gesehn, als ich schon gepostet hatte ;)
Ohne Einrückungen find ich sowas immer bissel unübersichtlich, am besten im Editor mit Syntax-Highlighting.
MfG
Götz
Hallo,
Ohne Einrückungen find ich sowas immer bissel unübersichtlich, am besten im Editor mit Syntax-Highlighting.
Naja, normalerweise mach ich sowas mit HTML-Kit, da geht das schon ganz gut, aber hier hab ich mal im Eingabefeld drauflosgetippt und promt einen(?) Fehler mit eingebaut. ;-)
Gruß
Kurt
Hallo Kurt,
if ($submit)
das funktioniert wenn register_globals auf off steht nicht (wenn der submit-Button den namen submit hat) - besser ist, $_POST['submit'] bzw. $_GET['submit'] - um eine "Fehlermeldung" bei error_reporting(E_ALL); zu vermeiden, sollte man aber mit isset() prüfen, ob die Variable gesetzt ist. Um auch reagieren zu können, wenn das Formular nicht durch drücken des Submit-Buttons abgesendet wurde, sondern durch Drücken der Enter-Taste, sollte man prüfen, ob die Variable, in der der Inhalt des Textfeldes steht, gesetzt ist.
{
$a = answer();
if($a="";)
das kommt ganz darauf an, was die Funktion answer() zurückliefert - wenn sie einen Leerstring zurückliefert, dürfe es so funktionieren (den Strichpunkt musst du noch wegmachen - der ist falsch hier)
echo "$a";
die Anführungszeichen sind hier überflüssig.
}
}
hier kommt dann natürlich noch der else-Zweig zu if($submit) um einen Standardtext auszugeben, wenn das Formular noch nicht gesendet wurde.
Grüße aus Nürnberg
Tobias
Hallo,
Hallo Kurt,
if ($submit)
das funktioniert wenn register_globals auf off steht nicht (wenn der submit-Button den namen submit hat) - besser ist, $_POST['submit'] bzw. $_GET['submit']
Ähm, ich dachte, in diesem Fall müsste mit $HTTP_POST_VARS['submit']; oder $HTTP_GET_VARS['submit']; übergeben werden?
Ist das eine vereinfachte Schreibweise und wenn ja, genauso gültig?
Ähm ja, das ist mir im Moment noch zu hoch, ich hab grad angefangen, mich mit PHP eingehender zu beschäftigen. Ich werde das aber gleich mal bei http://de3.php.net nachschlagen. ;-)
{
$a = answer();
if($a="";)
das kommt ganz darauf an, was die Funktion answer() zurückliefert - wenn sie einen Leerstring zurückliefert, dürfe es so funktionieren (den Strichpunkt musst du noch wegmachen - der ist falsch hier)
Jo, wieder ein typischer Anfängerfehler... ;-)
echo "$a";
die Anführungszeichen sind hier überflüssig.
Warum? $a ist ja vom Typ String, folglich gehörte es nach meinem Verständnis in Anführungszeichen, oder hab ich da was falsch verstanden?
}
}
hier kommt dann natürlich noch der else-Zweig zu if($submit) um einen Standardtext auszugeben, wenn das Formular noch nicht gesendet wurde.
Ja, kann sein, wird auch so sein, aber ich kenne das Script in seiner Gesamtheit nicht, wollte bloss meine Verständnisfrage zu dem Ausschnitt anbringen. ;-)
Wenn ich mal ausreichend Zeit finde, werde ich mal eigenständig und zu Fuß ein derartiges Script schreiben und euren gestrengen Blicken zur Beurteilung vorlegen, aber ich fürchte, das wird noch ein Weilchen dauern. Zur Zeit reichen meine Kenntnisse gerade mal dazu, bestehende Scripte anzupassen und gegebenenfalls zu erweitern.
Gruß
Kurt
hi,
das funktioniert wenn register_globals auf off steht nicht (wenn der submit-Button den namen submit hat) - besser ist, $_POST['submit'] bzw. $_GET['submit']
Ähm, ich dachte, in diesem Fall müsste mit $HTTP_POST_VARS['submit']; oder $HTTP_GET_VARS['submit']; übergeben werden?
$HTTP_POST_VARS bzw. $HTTP_GET_VARS sind auch schon nicht mehr ganz aktuell, die sind aus früheren 4er-versionen von php afaik.
in aktuelleren versionen nimmt man $_POST bzw. $_GET.
gruss,
wahsaga
Hallo,
$HTTP_POST_VARS bzw. $HTTP_GET_VARS sind auch schon nicht mehr ganz aktuell, die sind aus früheren 4er-versionen von php afaik.
in aktuelleren versionen nimmt man $_POST bzw. $_GET.
Boah, das ändert sich ja schneller, als ich lernen kann... ;-)
Danke!
Gruß
Kurt
Hallo Kurt,
das funktioniert wenn register_globals auf off steht nicht (wenn der submit-Button den namen submit hat) - besser ist, $_POST['submit'] bzw. $_GET['submit']
Ähm, ich dachte, in diesem Fall müsste mit $HTTP_POST_VARS['submit']; oder $HTTP_GET_VARS['submit']; übergeben werden?
Ist das eine vereinfachte Schreibweise und wenn ja, genauso gültig?
die $HTTP_*_VARS-Arrays sind veraltet, und sollten durch $_POST, $_GET usw ersetzt werden (siehe auch http://www.php.net/language.variables.predefined)
Ähm ja, das ist mir im Moment noch zu hoch, ich hab grad angefangen, mich mit PHP eingehender zu beschäftigen. Ich werde das aber gleich mal bei http://de3.php.net nachschlagen. ;-)
tu das, wenn du noch Fragen hast, frag einfach nach :-)
(den Strichpunkt musst du noch wegmachen - der ist falsch hier)
Jo, wieder ein typischer Anfängerfehler... ;-)
kommt vor :-)
echo "$a";
die Anführungszeichen sind hier überflüssig.
Warum? $a ist ja vom Typ String, folglich gehörte es nach meinem Verständnis in Anführungszeichen, oder hab ich da was falsch verstanden?
was in $a drinsteht, ist egal wenn du es mit echo (oder print) ausgibst - die Anführungszeichen brauchst du nur, wenn du Variablen Werte zuweist:
$a = foo; //funktioniert nicht (außer du hast eine Konstante namens foo)
$a = "foo"; //funktioniert
Um Variablen Zahlen zuzuweisen brauchst du keine Anführungszeichen:
$a = 123; //funktioniert
Grüße aus Nürnberg
Tobias
Hallo,
Ähm, ich dachte, in diesem Fall müsste mit $HTTP_POST_VARS['submit']; oder $HTTP_GET_VARS['submit']; übergeben werden?
Ist das eine vereinfachte Schreibweise und wenn ja, genauso gültig?
die $HTTP_*_VARS-Arrays sind veraltet, und sollten durch $_POST, $_GET usw ersetzt werden (siehe auch http://www.php.net/language.variables.predefined)
Ähm, ja, da steht´s ja, schwarz auf weiß, oder so ähnlich... :o)
Zusätzlich hab ich auch noch einen wertvollen Hinweis auf das Document root aufgeschnappt, falls mein Provider mal auf die Schnapsidee kommen sollte und seine PHP-Version updatet...
Ähm ja, das ist mir im Moment noch zu hoch, ich hab grad angefangen, mich mit PHP eingehender zu beschäftigen. Ich werde das aber gleich mal bei http://de3.php.net nachschlagen. ;-)
tu das, wenn du noch Fragen hast, frag einfach nach :-)
Ooch, das kommt bestimmt! ;-)
echo "$a";
die Anführungszeichen sind hier überflüssig.
Warum? $a ist ja vom Typ String, folglich gehörte es nach meinem Verständnis in Anführungszeichen, oder hab ich da was falsch verstanden?
was in $a drinsteht, ist egal wenn du es mit echo (oder print) ausgibst - die Anführungszeichen brauchst du nur, wenn du Variablen Werte zuweist:
$a = foo; //funktioniert nicht (außer du hast eine Konstante namens foo)
$a = "foo"; //funktioniert
Um Variablen Zahlen zuzuweisen brauchst du keine Anführungszeichen:
$a = 123; //funktioniert
Ok, alles klar, hab wohl die Definition ein wenig zu weit gespannt. ;-)
Gruß
Kurt
Hallo,
if($a="";)
Das soll doch ein Vergleich sein also:
if ($a=="")
Gruß,
Henning
Hallo,
if($a="";)
Das soll doch ein Vergleich sein also:
if ($a=="")
Uups, natürlich. ;-)
Was soll ich da auch mit einer Zuweisung... ;-)
Danke dir.
Gruß
Kurt
Hallo Kurt!
a)Könnte man das auch so lösen?
if ($submit)
{
$a = answer();
if($a="";)
{
echo "Keine Eingabe gefunden";
}
else
{
echo "$a";
}
So, ich mußte das erstmal einrücken und ein } in der letzten Zeile hinzufügen, sonst wär glaub ich das erste if nicht geschlossen.
if ($submit)
{
$a = answer();
if($a="";)
{
echo "Keine Eingabe gefunden";
}
else
{
echo "$a";
}
}
Es wäre vielleicht möglich, je nachdem was answer() so genau macht und zurückgibt.
Aber durch if($submit) wird das alles ja eh nur ausgeführt, wenn $submit gesetzt ist (unten hab ich da noch kurz was dazu geschrieben).
b) Wenn ja, welchen Vor-/Nachteil hat die jeweilige Lösung?
Warum soll die Funktion answer(); aufgerufen werden, wenn nichts abgeschickt wurde?
Zumal im Beispiel oben ja eh erstmal $submit geprüft wird, und $submit wird ja nur gesetzt sein, wenn das Formular abgeschickt wurde .. von dem her würde dein Beispiel wohl so nicht gehen bzw. nicht so, wie du willst ;)
Falls $submit eine Variable direkt vom Formular ist, dann eh bessetr über $_POST['submit'] oder $_GEt['submit'] drauf zugreifen, je nachdem ob das Formular per get oder post übermittelt wird.
Kurz zusammengefaßt:
Nimm einfach if, prüfe die Bedingung, und wenn sie nicht zutrifft soll er else machen.
Ist wohl am einfachsten.
Bin grad ein wenig am Üben, um den DAU-Status so langsam mal loszuwerden... ;-)
Schön schön ;)
Ich bn ja auch nicht wirklich ein PHP Held ...
MfG
Götz
Hallo,
if ($submit)
{
$a = answer();
if($a="";)
{
echo "Keine Eingabe gefunden";
}
else
{
echo "$a";
}
}Es wäre vielleicht möglich, je nachdem was answer() so genau macht und zurückgibt.
Jo, wie gesagt, ich kenne das Script in seiner Gesamtheit nicht, deshalb ist mein Ansatz auch eher rein theoretisch zu verstehen.
Aber durch if($submit) wird das alles ja eh nur ausgeführt, wenn $submit gesetzt ist (unten hab ich da noch kurz was dazu geschrieben).
b) Wenn ja, welchen Vor-/Nachteil hat die jeweilige Lösung?
Warum soll die Funktion answer(); aufgerufen werden, wenn nichts abgeschickt wurde?
Zumal im Beispiel oben ja eh erstmal $submit geprüft wird, und $submit wird ja nur gesetzt sein, wenn das Formular abgeschickt wurde .. von dem her würde dein Beispiel wohl so nicht gehen bzw. nicht so, wie du willst ;)
Nun, die funktion answer() ist da die große Unbekannte, also siehe oben. ;-)
Falls $submit eine Variable direkt vom Formular ist, dann eh bessetr über $_POST['submit'] oder $_GEt['submit'] drauf zugreifen, je nachdem ob das Formular per get oder post übermittelt wird.
Siehe meine Antwort an Tobias Kloth. ;-)
Kurz zusammengefaßt:
Nimm einfach if, prüfe die Bedingung, und wenn sie nicht zutrifft soll er else machen.
Ist wohl am einfachsten.
ja, hört sich vernünftig an. Meine Frage war ja wohl eher theoretischer Natur.
Bin grad ein wenig am Üben, um den DAU-Status so langsam mal loszuwerden... ;-)
Schön schön ;)
Ich bn ja auch nicht wirklich ein PHP Held ...
Nuja, das Web ist je eher ein Hobby für mich, beruflich mach ich ja was ganz anderes. Von daher ist leider meine Zeit für solche Sachen natürlich auch stark begrenzt.
Gruß
Kurt
Hallo Kurt!
Nuja, das Web ist je eher ein Hobby für mich, beruflich mach ich ja was ganz anderes. Von daher ist leider meine Zeit für solche Sachen natürlich auch stark begrenzt.
Jo klar, wär ja langweilig, wenn alle beruflich was mit dem Internet machen würden ;)
Daß bei dem einen if ja ein = und kein == stand fiel mir erst gar nicht auf, kam mir erst, als ich ein anderes Posting las ...
Und wg dem echo "$a".
Da $a ja ne Variable ist, brauchst Du keine " drum machen. Ich würd auch der Übersicht wegen ne Klammer setzen, also echo($a).
MfG
Götz
Hallo,
danke euch allen. Ich bin zwar gerade nicht zuhause und kann es nicht ausprobieren, aber ich meld mich dann mal obs geklappt hat. Soweit danke erstmal.
mfg Marcel
Hallihallo,
funktioniert wunderbar.
dankeschön!
mfg Marcel