Problem bei Formularfeld auf leere Felder überprüfen

tefla

Erfahrenes Mitglied
Hallo zusammen :)

ich hab da ein problem und zwar möchte ich in meinem Email Formular meine felder überprüfen lassen. Das klappt auch. Ist in einem Feld nix eingetragen wird keine Mail versendet. Nun möchte ich den User aber darauf verweisen wo er noch was eintragen soll........also die die schrift vor dem leeren formular feld soll ROT werden.
d.h. wenn variable $name nicht gesetzt is wird es rot..........aber ist sie beim 2ten absenden des formulars gesetzt bleibt sie rot. da die varriable ja nach absenden des formulars ja gesetzt wird.......wenn auch leer. wie kann ich das umgehen ???

hier mal mein code:

<?php
if(!$name OR !$mail OR !$news) {
echo "<form method=\"POST\" action=\"$PHP_SELF\">
<table border=\"0\" width=\"506\" cellspacing=\"1\" bgcolor=\"#003264\">
<tr>
<td width=\"113\" valign=\"top\"><img border=\"0\" src=\"/php/news/news_deco.jpg\" width=\"113\" height=\"260\"></td>
<td width=\"393\" valign=\"top\">
<table border=\"0\" width=\"100%\" cellspacing=\"0\">
<tr>
<td width=\"15%\"><p>";
if ($name!=1) { echo "<font color=\"#FF0000\">Name</font>";
} else { echo "<font color=\"#FFFFFF\">Name</font>"; };
echo "</p></td>
<td width=\"85%\"><input type=\"text\" name=\"name\" size=\"51\" style=\"background-color: #FF0000\; font-family: Verdana; font-size: 11px\"></td>
</tr>
<tr>
<td width=\"15%\"><p>E-Mail</p></td>
<td width=\"85%\"><input type=\"text\" name=\"mail\" size=\"51\" style=\"font-family: Verdana; font-size: 11px\"></td>
</tr>
<tr>
<td width=\"100%\" colspan=\"2\"><textarea rows=\"14\" name=\"news\" cols=\"60\" style=\"font-family: Verdana; font-size: 11px\"></textarea></td>
</tr>
<tr>
<td width=\"100%\" colspan=\"2\"><input type=\"submit\" value=\"News einsenden\" name=\"B1\" style=\"font-family: Verdana; font-size: 11px\">
<input type=\"reset\" value=\"News zurücksetzen\" name=\"B2\" style=\"font-family: Verdana; font-size: 11px\"></td>
</tr>
</table>
</td>
</tr>
</table>
</form>";
}
else
{
mail ("mail@gmx.de", "Eingesendete News", "Hallo Webmaster \n\nEs ist eine News eingegangen\n$name schrieb:\n$news\n\nDie Email des Authors ist: $mail");
mail ($mail, "Betreff", "Vielen Dank für deine News, sie ist bei uns eingegangen und ein Webmaster wird sie umgehend bearbeiten.\n\nBis zur nächsten News ;)");
}
?>
 
<td width=\"15%\"><p>E-Mail</p></td>
<td width=\"85%\"><input type=\"text\" name=\"mail\" size=\"51\" style=\"font-family: Verdana; font-size: 11px\">"; if (isset($B1) and $mail == "") { echo "<font color=\"red\">Keine Mail!</font>"; }

wenn es das ist was du meinst :)
 
Das ist so ohne weiteres durch Deinen aufbau nicht möglich.

Ich würde entweder einen switch setzen oder mit if-abfrage arbeiten und die variablen über post und get vararbeiten.

Da ich jetzt keine sonderlich große Lust habe ein ganzes Script zu verfassen *auf die Uhr schauend und gähnend* biete ich Dir an ein fertiges Script von mir zu bekommen. Damit wärst Du der zweite der meine non-public alpha bekommt ...

features:
- name wird überprüft (zeichen egal)
- email wird überprüft (korrekte eingabe: name@domainname.domain)
- text wird überprüft (html, etc. wird rausgeschmissen)
- spamsperre (zeit frei wählbar, default: 30 sekunden) + xtra

xtra:
- Log in MySQL Datenbank mit ip, browser, sprache, etc.

runs on:
- win
- unix/linux

Wie gesagt, es ist keine fertige dokumentierte und leicht verständliche Version, aber sie ist überwiegend fehlerfrei :-) und sollte problemlos laufen.

Ciao.
 
Original geschrieben von tefla
if ($name!=1) { echo "<font color=\"#FF0000\">Name</font>";
} else { echo "<font color=\"#FFFFFF\">Name</font>"; };

was evtl besser wäre ist

PHP:
if($name==null){
    echo "<font color=\"#FF0000\">Name</font>"; 
} else { 
    echo "<font color=\"#FFFFFF\">Name</font>"; 
}
 
@pommes: wobei das problem bestehen bleibt, beim ersten aufrufen ist z. B. $name == NULL

....

SO läuft das nicht
 
Das fragst du ganz oben ab.
PHP:
if ($name== "")
{
  $font_start = "<font color=\"#FF0000\">";
  $font_end = "</font>";
}
else
{
  $font_start = "";
  $font_end = "";
}

Dann an der passenden stelle:
PHP:
echo "<td>".$font_start."bla bla bla".$font_end."</td>";

Es geht nur ums Prinzip kein kompletter Code hier

So Long
TheVirus
 
noch ein versuch

also.

machen wir das ganze doch noch mit ne variablen mehr. $action zum beispiel.

PHP:
<font<?php if ($action=="insert" && $name==null) echo " color=red"; ?>>Name: blasbla </font>
oder so ähnlich.

Dann ist beim ersten aufruf der seite $action nicht "insert", und nichts wird rot eingefärbt.
 
Zurück