helmuthelmut2000
Goto Top

Feldeingabe in einem PHP-Formular überprüfen

Hallo,

Ich habe eine PHP-Seite wo ich aus einer MSSQL-DB eine Zeile auslese und da ist z.b. ein Feld das noch
keine Wert drin hat.
Jetzt sollte in dieses Feld ein Wert geschrieben werden. Das dann in die DB geschrieben wird.
Das funktioniert auch gut.
Jetzt sollte das Feld aber nicht leer bleiben dürfen.
Wie mach ich da am einfachsten eine Prüfung in die Seite rein,
das auf jeden Fall in das Feld was eingegeben wird?

Kann mir da jemand weiterhelfen?

Danke.


mfG
Helmut

Content-Key: 61568

Url: https://administrator.de/contentid/61568

Printed on: April 20, 2024 at 01:04 o'clock

Member: phpfriend
phpfriend Jun 17, 2007 at 10:04:54 (UTC)
Goto Top
Hallo wenn ich dich richtig verstanden hab, willst du einfach prüfen ob in eine Variable einen Inhalt hat!!

Das würde so aussehen:
if($POST[Feldname] == "")  
{echo "NIcht alle Felder wurden ausgefüllt!";}  
else
{echo "Alles wurde gespeichert";}  
Du kannst auch noch "trim" einsetzen. Diese Funktion entfernt Leerzeichen!
Member: Guenni
Guenni Jun 17, 2007 at 10:09:08 (UTC)
Goto Top
@helmut

Hi,

if(!trim($_POST['textfeld'])){  
 ToDo ...
}

... wobei trim die Leerstellen vor und nach Texteingabe entfernt.
Ansonsten könnte man auch einfach die Leertaste drücken,
und die Eingabe wäre ebenfalls gültig.

Gruß
Günni
Member: helmuthelmut2000
helmuthelmut2000 Jun 17, 2007 at 18:09:50 (UTC)
Goto Top
Hallo,

Das hab ich probiert,
aber ich bekomme da immer den Fehler:


Undefined variable: POST in C:/Progr...

Woran kann das liegen?

Danke.

Gruß
Helmut

Ja, das soll $_POST sein.
Ich bekomme trotzdem noch ne Fehlermeldung.
Wo schreibe ich das den hin? Am Anfang gleich nach dem mit der DB Verbunden ist, oder
nach der Zeile wo das mit dem
<form usw. > steht.
Oder ist das egal wo das steht?

Danke.
Member: masterG
masterG Jun 18, 2007 at 12:59:57 (UTC)
Goto Top
if(!$_POST[Feldname]){echo "Bitte geben Sie etwas ein. <br>";}  
Das müsste funktionieren! Also bei mir funktioniert es!
masterG
Member: Guenni
Guenni Jun 18, 2007 at 15:22:57 (UTC)
Goto Top
@helmut

Hi,

...
Wo schreibe ich das den hin? Am Anfang gleich nach dem mit der DB Verbunden ist, oder...

ich mache es grundsätzlich so, dass ich zuerst überprüfe, ob das Formular
gesendet wurde. Der Submit-Button bekommt einen Namen und natürlich
ein Value(z.B. Senden, Speichern, Ändern etc., je nach dem, was gemacht
werden soll.

<form ....
.....
<input type="submit" name="cmd" value="Speichern">  

Am Anfang des Skripts überprüfe ich dann, ob gesendet wurde:

$cmd=$_POST['cmd'];  
if($cmd=="Speichern"){  
 // Dann Textfelder auslesen
  $text1=trim($_POST['textfeld1']);  
  $text2=trim($_POST['textfeld2']);  
  // usw.
  // Dann kannst du dann relevante oder eben alle Variablen
  // überprüfen
  if(!$text1){
   // Fehlerbehandlung
 }
 // Wenn alles O.K., Datenbankverbindung aufbauen und Daten verarbeiten
}

Gruß
Günni
Member: helmuthelmut2000
helmuthelmut2000 Jun 18, 2007 at 15:42:04 (UTC)
Goto Top
Hallo,

Also folgendes:
Wenn ich das so eingebe dann bekomme ich die Meldung:

Notice: Undefined index: Bemerkung in C:\Programme\Apache usw.

Das Feld heist bei mir Bemerkung.
Und die Zeile sieht so aus:
    echo "<td colspan=2 align=center width=14% height=60 >Bemerkung eingeben<br><input name='Bemerkung' value='" . $dsatz["Bemerkung"] . "' size=30></td>";  
Ist da vielleicht was falsch?

Danke.

mfg
Helmut

[EDIT] Codeschnippsel in Codeblock gepackt
masterG(Moderator)[/EDIT]
Member: masterG
masterG Jun 18, 2007 at 16:01:55 (UTC)
Goto Top
Hi! Versuch einmal bei name die ' und bei value auch! Die " kannst du lassen.

masterG
Mitglied: 29457
29457 Jun 18, 2007 at 20:19:01 (UTC)
Goto Top
Probier es doch mal hiermit:

if(!empty($_POST['feldname'])) {   

$check_one = true; 

} else { 

$check_one = false; 

} 


Razor
Member: helmuthelmut2000
helmuthelmut2000 Jun 18, 2007 at 20:37:17 (UTC)
Goto Top
Hallo,

Ja das geht ohne die ' und " auch nicht.
Ich habe da noch ein Feld, da möchte ich dann mal
das so machen das der Anwender des Formulars nur bestimmte
Zahlen eingeben darf.
Da sollte dann auch die Eingabe überprüft.
Sollte ich dann das nicht gleich über ein JavaScript machen?
Geht das überhaupt mit einem JavaScript?

Gruß
Helmut
Member: helmuthelmut2000
helmuthelmut2000 Jun 19, 2007 at 13:39:47 (UTC)
Goto Top
Hallo,

Hab ich probiert.
Geht aber auch nicht.
Also wenn ich das Feld leer lasse legt er den Datensatz trotzdem an.

Gruß
Helmut
Member: masterG
masterG Jun 20, 2007 at 05:09:46 (UTC)
Goto Top
Dann kanns sein, dass in der php.ini Datei irgendein Modul nicht auskommentiert ist.
Und hilfreich wärs auch wenn du mal den Seitencode postest.
masterG
Member: Guenni
Guenni Jun 20, 2007 at 08:22:37 (UTC)
Goto Top
@helmut
Hi,
hier mal eine MINI-Datei zum Testen.

if($_POST['cmd']=="Speichern"){ // cmd ist der name der Schaltfläche,  
 // Speichern ist der value-Wert der Schaltfläche(siehe unten im Formular)
 // ------------------------------------------------------------------------------------------

 // Durch die Funktion trim(string) werden Leerstellen vor und nach dem
 // WERT entfernt. Heißt, auch wenn der User nichts eingibt oder auch
 // nur ein paar mal die Leertaste drückt, hat der User nichts eingegeben.
 // Also ist $text LEER, und es wird der else-Zweig ausgeführt.
 $text=trim($_POST['txt_feld']);  
 if($text){
  echo "Datenbankverbindung wird aufgebaut<br>";  
	echo "SQL-Anweisung wird erstellt<br>";  
	echo "SQL-Anweisung wird ausgeführt";  
 }else{
 			 echo "Sie haben keinen Eintrag vorgenommen!<br>";  
			 echo "<a href=\"helmut.php\">Zurück zum Formular</a>";  
			 exit; // exit beendet das Skript, so dass auch nachfolgende
			 			 // Anweisungen nicht mehr ausgeführt werden
 			 }
}
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form action="helmut.php" method="post">  
<input type="text" name="txt_feld"><br>  
<input type="submit" name="cmd" value="Speichern">  
</form>
</body>
</html>

Das Ganze schreibst du in eine Datei, rufst die Datei auf, und
versuchst mal nachzuvollziehen, was da passiert.

Gruß
Günni
Member: helmuthelmut2000
helmuthelmut2000 Jun 20, 2007 at 17:47:50 (UTC)
Goto Top
Hallo,

Ich habe das jetzt anders gemacht, mit einem JavaScript so:
<script language="JavaScript">  
<!--
function EingabenUeberpruefen()
{
    var Fehlermeldung = "";  

    if(document.Form1.Bemerkung.value == "")  
    {
        Fehlermeldung += "Bitte geben Sie eine Bemerkung ein!\n";  
    }

    if(Fehlermeldung)
    {
        alert(Fehlermeldung);
    document.Form1.Bemerkung.focus();
        return false;
    }
    else
    {
        return true;
    }
}
// -->
</script>
und

<input type='submit' value='&nbsp;OK&nbsp;' onClick='return EingabenUeberpruefen();'>  
Das geht.


Jetzt habe ich aber noch folgendes Problem.
Ich habe da noch ein Dropdownfeld, das die Daten auch aus einer DB liest.
Jetzt sollte da aber unbedingt etwas ausgewählt werden.
Wie mach ich das am besten?
Vielleicht kann ich das ja auch mit der Funktion EingabenUeberpruefen von oben
verbinden, denn das ist im gleichen Formular.

Gruß
Helmut
Änderungen:
Ich habe mir erlaubt deinen JavaScriptcode in einen Codeblock zu legen.
masterG(Moderator)
21.06.2007
Member: Guenni
Guenni Jun 21, 2007 at 06:27:06 (UTC)
Goto Top
@helmut

Hi,

Das geht.

Dann gib' doch in dem Feld, das überprüft wird,
ein oder mehrere Leerzeichen ein.

Schon funkt. deine Überprüfung nicht mehr, und das Formular
wird gesendet.

Leerzeichen sind nämlich auch Zeichen, wenn auch unsichtbar.

Und somit hat der User, wie schon oben erwähnt, eine gültige
Eingabe gemacht.

Gruß
Günni
Member: helmuthelmut2000
helmuthelmut2000 Jun 21, 2007 at 16:21:46 (UTC)
Goto Top
Hallo,

Ja Richtig,
Das ist schlecht.
Gibt es da auch was, mit Java wo man das überprüfen kann.
Ich habe da och was.
Ich habe da ein Feld da sollte man nur Zahlen mit einem - schreiben dürfen.
z.B. so:

123-1234 oder
567-7689 und nicht so:

2345-234 und auch nicht so:
1-3234

Kann man das auch irgendwie so einschränken das das nur so geht.

Gruß
Helmut
Mitglied: 50921
50921 Jul 16, 2007 at 16:09:18 (UTC)
Goto Top
Falls Sie es auch in PHP verwenden können, dann machen Sie es einfach mit explode().
$split = explode("-", $_POST["zahlen"]);  

if (count($split) != 2) die();

if ($split < 1000 && $split > 99 && $split[1] < 10000 && $split[1] > 999) {
...
}

MfG
take.