Platzhalter

Hallo,

Gibt es eine Art Platzhalter in PHP?

Ich möchte eine Formulareingabe prüfen, dieses möchte ich
Serverseitig also ohne Javascript machen.

Ich habe ein Formular in dem ich über ein Auswahlfeld
Test1 oder Test2 wählen kann.

Des weiteren habe ich ein Textfeld dessen eingabe ich Prüfen möchte.

Wenn Test1 gewählt wurde, soll in dem Feld erst T1 eingegeben werden,
gefolgt von sieben Zahlen die Variabel sein sollen.

Also z.B. T15553377

Wenn die Eingabe stimmt, sollen die Daten in eine Mysql DB eingetragen werden,
wenn nicht ein Hinweis ausgegeben werden.

Ich bin was die Programmierung mit PHP und MySql angeht
blutiger Anfänger und würde mich nicht wundern wenn mir
jetzt jemand erzählt... was das denn für´n Quatsch.
Aber sei es mal als Übung dahingenommen.
Über andere Lösungsansätze wäre ich allerdings auch froh.

------------------------------------------------------------------------------------------
if ($var1 =="Test1" and $var2 !="T1") {
echo "Wenn Test1 bitte T1....... eingeben";
}
else if ($var1 =="Test2" and $var2 !="T2") {
echo "Wenn Test2 bitte T2....... eingeben";
}
else{

mysql_query("INSERT INTO db_1 (fld_a, fld_b)
VALUES ('$var1','$var2')");
}
----------------------------------------------------------------------------------------


Ich Danke für Hilfe

Gruß
TrSM
 
Hallo!

Mit subst($var2, 0, 2); erhältst du einen Teilstring von $var, beginnend bei Position 0 und zwei Zeichen lang - also die ersten Beiden Zeichen. Mit substr($var2, 2); erhältst du den Rest des Strings, also von Zeichen 3 bis zum Ende.
Jetzt kannst du z. B. mit strlen($xyz); die Länge eines Strings ermitteln - hier müsste statt $xyz die Variable, die den Reststring enthält eingesetzt werden. Und mit is_numeric($abc) ermittelst du, ob der String auch als Zahl gewertet werden kann...

Ich hoffe, das hilft dir schon.
Mamphil
 
Danke Mamphil,

das hat mich etwas weiter gebracht...
Wenn ich den String jetzt so zerlege und mir das mit dem echo ansehe, habe ich bei richtiger eingabe:

in $id z.B. T1
und in $leange 9 stehen.

Jedoch wenn ich Test1 wähle und z.B. T25552233 eingebe, wird mir dieses trotzdem
in die DB eingetragen.

Noch jemand eine Idee wo der Fehler ist?

-----------------------------------------------------------------------------------
$var2 = $_GET["tfd_eingabe1"];


$laenge = strlen($var2);
$id = substr($var2, 0, 2);

//Testausgabe
echo "$id <br>";
echo "$laenge <br>";


if ($var1 =="Test1" && $laenge < 9 && $id !="T1") {
echo "Wenn Test1 bitte T1....... eingeben";
}
else if ($var1 =="Test2" && $laenge < 9 && $id !="T2") {
echo "Wenn Test2 bitte T2....... eingeben";
}
else{

mysql_query("INSERT INTO db_1 (fld_a, fld_b)
VALUES ('$var1','$var2')");
}
-----------------------------------------------------------------------------------
 
Zuletzt bearbeitet:
Habe meine Fehler gefunden.

habe

if ($var1 =="Test1" && $laenge < 9 && $id !="T1") {

in

if ($var1 =="Test1" && $laenge < 9 or $id !="T1") {

geändert.

Jetzt funktioniert das.
 
Hallo!

Noch ein Tipp: Du hast jetzt sowohl AND (&&), als auch OR (||) -Verknüpfungen. Ich kann und will mir nicht merken, wie diese verknüpft werden - darum verwende ich in diesem Fall Klammern. Denn diese beiden Fälle geben ein unterschiedliches Ergebnis ab:
if (($var1 =="Test1" && $laenge < 9) || $id !="T1") {
Hier muss entweder $var1 == 'Test1' und die Länge kleiner als 9 sein oder die Id ist nicht T1
if ($var1 =="Test1" && ($laenge < 9 || $id !="T1")) {
Und hier muss $var1 == 'Test1' sein und die Länge muss kleiner als 9 sein oder die Id muss nicht T1 sein...

Mamphil
 
Ich habe mich auch zu früh gefreut.

Weil mache ich das so

if ($var1 =="Test1" && $laenge < 9 or $id !="T1") {

funktioniert zwar das "if" also Test1, hier muss ich jetzt 9 Zeichen beginnend mit T1 haben. Allerdings funktioniert das "elseif" Test2 dann nicht.

elseif ($var1 =="Test2" && $laenge < 9 or $id !="T2") {

Benutze ich beide male && also

if ($var1 =="Test1" && $laenge < 9 or $id !="T1") {

Muss die eingabe zwar mit T1 bzw. T2 beginnen, aber die Länge der zeichenkette wird nicht mehr geprüft.

Ich verzweifle!
 
Jetzt habe ich es dann doch endlich so gelöst bekommen.

-------------------------------------------------------------------
if ($var1 == "Test1"):
if ($var1 =="Test1" && $laenge < 9 || $id !="T1") {
echo "";
}

else{
mysql_query....
}
endif;


if ($var1 == "Test2"):
.
.
.
.
endif;
-------------------------------------------------------------------
Ich habe zwei if...else schleifen genommen und jeweils ein if/endif drum gesetzt.

Ist diese Lösung sehr umständlich?
Oh oh... ich habe noch sooo viel zu lernen.
Na ja keep on practise.

Gruß
TrSM
 
Hallo!

1.) Es gibt keine if-Schleifen!!
2.) Von einem if-endif-Konstrukt habe ich in PHP noch nie etwas gehört. Ich behaupte mal, dass das nicht funktioniert. Verwende stattdessen die geschweiften Klammern, um einen Block zu erzeugen.
3.) Die Bezeichnung einer Variablen mit $var1 ist ziemlich bescheiden - du weißt in einem halben Jahr bestimmt nicht mehr, was sich dahinter verbirgt...

So müsste es eigentlich funktionieren:
PHP:
$typ = $_GET['whatever'];
$artikelnummer = $_GET['tfd_eingabe1'];


$laenge = strlen($artikelnummer);
$id = substr($artikelnummer, 0, 2);
$rest = substr($artikelnummer, 2);

if ((($typ == 'Test1' && $id == 'T1') || ($typ == 'Test2' && $id == 'T2')) && $laenge <= 9 && is_numeric($rest)) {
	// alles ist o.k. - der Datensatz kann in die Datenbank eingetragen werden.
	}
Ich hoffe, das hilft dir!?

Mamphil
 
Zurück