[PHP] Leeren Eintrag in Tabelle verhindern

claudius

Grünschnabel
Ich habe folgendes Problem:
Ich habe ein Formular mit 3 input Ffeldern. Nnun will ich verhindern, dass auf den "abschicken" Button geklickt werden kann, wenn eins dieser Felder noch leer ist.
Momentan habe ich das so gelöst:
if ($action == 'schicken' and $zahl != '' and $zahl > 0);
.
..
...
Aber trotzdem wird in der mysql Tabelle ein Datensatz mit den Werten 0 angelegt.

Für jede HIlfe dankbar,
Claudius
 
Zuletzt bearbeitet:
Hallo,

PHP ist in diesem Fall als Lösung eher ungünstig, da zur Überpfrüfung das
Forumular auf jeden Fall erst gesendet werden müsste. Ich würde das Ganze
mit Javascript probieren. Das könnte dann zum Beispiel so aussehen:

PHP:
<form action="auswertung.html" method="post" name="form1" onsubmit="

  if 
    (
      document.form1.feld1.value == '' || 
      document.form1.feld2.value == '' || 
      document.form1.feld3.value == ''
    ) 
    
    {
      alert('Sie haben nicht alle erforderlichen Felder ausgef&uuml;llt.'); 
      return false;
    } 
    
  else {submitonce(this);}" enctype="multipart/form-data">

<input type="text" name="feld1">
<input type="text" name="feld2">
<input type="text" name="feld3">
<input type="submit" name="post" value="Senden">
</form>
Gruß, Dick :)
 
Mit PHP:

PHP:
<?
if($submit) {

//Datenprüfung
if($1 == "")  $fehlermeldung="<center><b>Du hast keinen Vornamen eingegeben.<br></b></center>"; 
					
elseif($2 == "") $fehlermeldung="<center><b>Du hast keinen Namen eingegeben.<br></b></center>";
					
else {
					
$fehlermeldung = "<center><b>Du hast alle Felder ausgefüllt</center></b>";
//Dein weiteres PHP Script wenn die Felder ausgefüllt sind.		
}
}
?>

<form action="<? echo $phpself ?>" method="post" name="neueintrag">
  <table width="52%" border="0" align="center" class="text">
    <tr> 
      <td width="8%"><strong>*</strong></td>
      <td width="28%"><strong>1:</strong></td>
      <td width="64%"><strong> 
        <input name="1" type="text" id="1" value="<? echo $1 ?>" size="25">
        </strong></td>
    </tr>
    <tr> 
      <td><strong>*</strong></td>
      <td><strong>2:</strong></td>
      <td><strong> 
        <input name="2" type="text" id="2" value="<? echo $2 ?>" size="25">
        </strong></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td><strong>3:</strong></td>
      <td><strong> 
        <input name="3" type="text" id="3" value="<? echo $3 ?>" size="25">
        </strong></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr> 
      <td colspan="2"><strong>* Pflichtfeld</strong></td>
      <td>&nbsp;</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td colspan="2"><div align="center"><? echo $fehlermeldung?></div></td>
    </tr>
    <tr> 
      <td colspan="3"> <div align="center"> <strong> 
          <input name="submit" type="submit" id="submit" value="Eintragen">
          <input name="reset" type="reset" value="Löschen">
          </strong></div></td>
    </tr>
  </table>
</form>

geht zwar schicker, aber es läuft..
 
javascript möglichkeit 2:
PHP:
<script language=javascript>
function check {
  if(document.form.feld1.value=='' || document.form.feld2.value=='' || document.form.feld3.value=='') {
  document.form.submitbutton.disabled=true;
} else {
    document.form.submitbutton.disabled=false;
}
</script>
(nicht getestet - aber so nen code hab ich kürzlich in ne website eingebaut)

dann müsstest du bei jedem der felder immer reinschreiben onkexup=check()

snuu hat übrigens recht: php sollte in jedem fall noch einmal prüfen, ob auch wirklich alle felder ausgefüllt sind

cu
 
Original geschrieben von Harrier
snuu hat übrigens recht: php sollte in jedem fall noch einmal prüfen, ob auch wirklich alle felder ausgefüllt sind
Gehört zwar jetzt nicht wirklich direkt zum Thema aber man sollte mit PHP nicht nur überprüfen ob die Felder auch ausgefüllt worden sind, sondern auch, was drin steht bzw. den Inhalt filtern lassen (Stichwort: SQL-Injections). Nur so nebenbei als Anmerkung :)
 
Man muss nicht unbedingt prüfen. Um SQL-Injections vorzubeugen, reicht es Zeichenketten in [phpf]mysql_escape_string[/phpf], Ganzzahlen in [phpf]intval[/phpf] und Kommazahlen in [phpf]doubleval[/phpf] einzufassen. Zusätzlich sollte man noch die Länge bzw. Größe der einzufügenden Daten prüfen, um SQL-Fehlermeldungen aus dem Weg zu gehen.

snuu
 
Zurück