Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Feldeingabe in einem PHP-Formular überprüfen

Frage Entwicklung PHP

Mitglied: helmuthelmut2000

helmuthelmut2000 (Level 2) - Jetzt verbinden

17.06.2007, aktualisiert 16.07.2007, 13088 Aufrufe, 16 Kommentare

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
Mitglied: phpfriend
17.06.2007 um 12:04 Uhr
Hallo wenn ich dich richtig verstanden hab, willst du einfach prüfen ob in eine Variable einen Inhalt hat!!

Das würde so aussehen:
01.
if($POST[Feldname] == ""
02.
{echo "NIcht alle Felder wurden ausgefüllt!";} 
03.
else 
04.
{echo "Alles wurde gespeichert";}
Du kannst auch noch "trim" einsetzen. Diese Funktion entfernt Leerzeichen!
Bitte warten ..
Mitglied: Guenni
17.06.2007 um 12:09 Uhr
@helmut

Hi,

01.
if(!trim($_POST['textfeld'])){ 
02.
 ToDo ... 
03.
}
... 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
Bitte warten ..
Mitglied: helmuthelmut2000
17.06.2007 um 20:09 Uhr
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.
Bitte warten ..
Mitglied: masterG
18.06.2007 um 14:59 Uhr
01.
if(!$_POST[Feldname]){echo "Bitte geben Sie etwas ein. <br>";}
Das müsste funktionieren! Also bei mir funktioniert es!
masterG
Bitte warten ..
Mitglied: Guenni
18.06.2007 um 17:22 Uhr
@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.

01.
<form .... 
02.
..... 
03.
<input type="submit" name="cmd" value="Speichern">
Am Anfang des Skripts überprüfe ich dann, ob gesendet wurde:

01.
$cmd=$_POST['cmd']; 
02.
if($cmd=="Speichern"){ 
03.
 // Dann Textfelder auslesen 
04.
  $text1=trim($_POST['textfeld1']); 
05.
  $text2=trim($_POST['textfeld2']); 
06.
  // usw. 
07.
  // Dann kannst du dann relevante oder eben alle Variablen 
08.
  // überprüfen 
09.
  if(!$text1){ 
10.
   // Fehlerbehandlung 
11.
12.
 // Wenn alles O.K., Datenbankverbindung aufbauen und Daten verarbeiten 
13.
}
Gruß
Günni
Bitte warten ..
Mitglied: helmuthelmut2000
18.06.2007 um 17:42 Uhr
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:
01.
    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]
Bitte warten ..
Mitglied: masterG
18.06.2007 um 18:01 Uhr
Hi! Versuch einmal bei name die ' und bei value auch! Die " kannst du lassen.

masterG
Bitte warten ..
Mitglied: 29457
18.06.2007 um 22:19 Uhr
Probier es doch mal hiermit:

01.
if(!empty($_POST['feldname'])) {  
02.
 
03.
$check_one = true;  
04.
 
05.
} else {  
06.
 
07.
$check_one = false;  
08.
 
09.
} 

Razor
Bitte warten ..
Mitglied: helmuthelmut2000
18.06.2007 um 22:37 Uhr
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
Bitte warten ..
Mitglied: helmuthelmut2000
19.06.2007 um 15:39 Uhr
Hallo,

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

Gruß
Helmut
Bitte warten ..
Mitglied: masterG
20.06.2007 um 07:09 Uhr
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
Bitte warten ..
Mitglied: Guenni
20.06.2007 um 10:22 Uhr
@helmut
Hi,
hier mal eine MINI-Datei zum Testen.

01.
if($_POST['cmd']=="Speichern"){ // cmd ist der name der Schaltfläche, 
02.
 // Speichern ist der value-Wert der Schaltfläche(siehe unten im Formular) 
03.
 // ------------------------------------------------------------------------------------------ 
04.
 
05.
 // Durch die Funktion trim(string) werden Leerstellen vor und nach dem 
06.
 // WERT entfernt. Heißt, auch wenn der User nichts eingibt oder auch 
07.
 // nur ein paar mal die Leertaste drückt, hat der User nichts eingegeben. 
08.
 // Also ist $text LEER, und es wird der else-Zweig ausgeführt. 
09.
 $text=trim($_POST['txt_feld']); 
10.
 if($text){ 
11.
  echo "Datenbankverbindung wird aufgebaut<br>"
12.
	echo "SQL-Anweisung wird erstellt<br>"
13.
	echo "SQL-Anweisung wird ausgeführt"
14.
 }else
15.
 			 echo "Sie haben keinen Eintrag vorgenommen!<br>"
16.
			 echo "<a href=\"helmut.php\">Zurück zum Formular</a>"
17.
			 exit; // exit beendet das Skript, so dass auch nachfolgende 
18.
			 			 // Anweisungen nicht mehr ausgeführt werden 
19.
20.
}
01.
<html> 
02.
<head> 
03.
<title>Untitled</title> 
04.
</head> 
05.
<body> 
06.
<form action="helmut.php" method="post"> 
07.
<input type="text" name="txt_feld"><br> 
08.
<input type="submit" name="cmd" value="Speichern"> 
09.
</form> 
10.
</body> 
11.
</html>
Das Ganze schreibst du in eine Datei, rufst die Datei auf, und
versuchst mal nachzuvollziehen, was da passiert.

Gruß
Günni
Bitte warten ..
Mitglied: helmuthelmut2000
20.06.2007 um 19:47 Uhr
Hallo,

Ich habe das jetzt anders gemacht, mit einem JavaScript so:
01.
<script language="JavaScript"> 
02.
<!-- 
03.
function EingabenUeberpruefen() 
04.
05.
    var Fehlermeldung = ""; 
06.
 
07.
    if(document.Form1.Bemerkung.value == "") 
08.
09.
        Fehlermeldung += "Bitte geben Sie eine Bemerkung ein!\n"; 
10.
11.
 
12.
    if(Fehlermeldung) 
13.
14.
        alert(Fehlermeldung); 
15.
    document.Form1.Bemerkung.focus(); 
16.
        return false; 
17.
18.
    else 
19.
20.
        return true; 
21.
22.
23.
// --> 
24.
</script>
und

01.
<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
Bitte warten ..
Mitglied: Guenni
21.06.2007 um 08:27 Uhr
@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
Bitte warten ..
Mitglied: helmuthelmut2000
21.06.2007 um 18:21 Uhr
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
Bitte warten ..
Mitglied: 50921
16.07.2007 um 18:09 Uhr
Falls Sie es auch in PHP verwenden können, dann machen Sie es einfach mit explode().
01.
$split = explode("-", $_POST["zahlen"]); 
02.
 
03.
if (count($split) != 2) die(); 
04.
 
05.
if ($split[0] < 1000 && $split[0] > 99 && $split[1] < 10000 && $split[1] > 999) { 
06.
... 
07.
}
MfG
take.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
Formular Autofill - Infopath (1)

Frage von TlBERlUS zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...