PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : leeres Feld abfrage



bluesky666
19-02-2003, 18:50
Hi,

wie muss ich es machen das wenn ich in eine Eingabe Maske was eingeben kann und dort nichts eingegeben wurde das dann eine Meldung kommt z.B. Sie müssen etwas eintragen, also das keine leeren Eingaben erlaubt sind

hier mal der Quelltext:

<HTML>
<HEAD>
<TITLE></TITLE>
<META name="description" content="">
<META name="keywords" content="">
<META name="generator" content="CuteHTML">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080">
<p>Bitte Emailadresse eintragen die ausgefiltert werden soll:</p>
<form action='email.php' method=post>
<input name='von' type='' >
<input type=submit>
</form>
zurueck zur <a href="index.htm">Startseite</a>
</BODY>
</HTML>

mehlvogel
19-02-2003, 20:18
In deinem PHP Script fragst du dann ab:




if (!isset($_POST["von"]) || empty($_POST["von"]) {
/* Variable ist leer oder nicht vorhanden */
}



$_POST musst du dabei durch $_GET ersetzen, wenn deine Variablen per GET übermittelt werden und das "von" musst du durch den Namen des Feldes ersetzen.

bluesky666
20-02-2003, 00:29
Hi,

ich bekomme immer einen parse error, hier mal meine php Datei:
an welche Stelle genau muss ich es einfügen?

<?PHP
/* Datenbankserver - In der Regel die IP */ $db_server = "localhost";
/* Datenbankname */
$db_name = "procmail";
/* Datenbankuser */
$db_user = "root";
/* Datenbankpasswort */
$db_passwort = "";

/* Erstellt Connect zu Datenbank her */
$db = mysql_connect($db_server,$db_user,$db_passwort);
$query = "INSERT INTO von (von) VALUES ('*@$von');";
mysql_select_db($db_name);
mysql_query($query);
echo "Von: $von<br><br>";
$result = mysql_query("SELECT * from von;");
for ($i =0; $i < mysql_num_rows($result); $i++)
{ $row = mysql_fetch_row($result); echo "Value #$i : $row[0]<bR>"; }
mysql_close();
echo "zurueck zur <a href=\"index.htm\">Startseite</a>"
?>

Gruß Helge

silvercross
20-02-2003, 09:26
blick ich nicht ganz durch. schau in welcher zeile der fehler ist (parse error in ....)

wenn du erst in die datenbank schreiben willst, musst du vorher prüfen ob die werte nicht leer sind .

zb:




If (strlen($_POST['von'])=="0) {

// die variable ist leer ...
exit; // oder was auch immer ..

}
ELSE {

// die Variable hat zumindest ein Zeichen ..

// schreib in die datenbank ...

}

mehlvogel
20-02-2003, 12:55
Kleiner Tipp noch zu deiner Datenbankabfrage (bzw der Ausgabe) - du machst es so:



for ($i =0; $i < mysql_num_rows($result); $i++)
{ $row = mysql_fetch_row($result); echo "Value #$i : $row[0]<bR>"; }


Besser lesbar wird es mit:



while ($row = mysql_fetch_row($result)) echo "Value #$i:".$row[0]."<br />";


Noch ein kleiner Tipp ersetz 0 durch den Namen des Feldes, das macht das einfacher. Einsetzten musst du es so:



if (!isset($_POST["von"]) || empty($_POST["von"])) {
$db = mysql_connect($db_server,$db_user,$db_passwort);
$query = "INSERT INTO von (von) VALUES ('*@$von');";
mysql_select_db($db_name);
mysql_query($query);
echo "Von: $von<br><br>";
$result = mysql_query("SELECT * from von;");
for ($i =0; $i < mysql_num_rows($result); $i++)
{ $row = mysql_fetch_row($result); echo "Value #$i : $row[0]<bR>"; }
mysql_close();
} else
echo "Bitte geben sie eine Email Adresse ein!";


PS: Um Quelltext zu posten, ist es übersichtlicher wenn du die PHP Tags benutzt.

bluesky666
20-02-2003, 13:06
also muss das in die Seite rein in der ich die Daten eingebe oder?

bluesky666
20-02-2003, 13:18
ich habe es jetzt so, bekomme aber einen Fehler in der Zeile:

Parse error: parse error, unexpected T_STRING in /srv/www/htdocs/.hb/spam/email.php on line 11


if_(!isset($_POST["$von"]) || empty($_POST["$von"])) {
$db_=_mysql_connect($db_server,$db_user,$db_passwo rt);
$query = "INSERT_INTO von (von) VALUES_('$von');";
mysql_select_db($db_name);
mysql_query($query);
echo "Von: $von<br><br>";
$result = mysql_query("SELECT * from von;");
while ($row_= mysql_fetch_row($result)) echo "Value #$i:".$row[0]."<br />";
mysql_close();
} else
echo "Bitte geben sie eine Email Adresse ein!";

bluesky666
21-02-2003, 00:30
ich kann auch einen Zugang per ftp freigeben, falls mir jemand helfen kann

silvercross
21-02-2003, 07:21
"if_" ist falsch .. beachte das _ nach dem if .. das gehör weg

bluesky666
21-02-2003, 10:41
Hi, das "_" kam nur durchs reinkopieren hier ins forum rein, weiß nicht warum, aber wenn ich den Quelltext oben nehme von mehlvogel geht es auch nicht

Jana
22-02-2003, 20:38
Hab so etwas neulich programmiert:

Ist aber mit pear geschrieben.
http://pear.php.net
Du mußt das DB Paket runterladen.

Zuerst der header.php


<html>
<head>
<title>Test</title>
<link rel="STYLESHEET" href="style.css" type="text/css" media="screen">
</head>

<body bgcolor="white" background="pics/back.png" >

<div id="lay2" class="lay2">
<a href ="index.html">Home</a><br>
<a href ="test.html">Testmenu</a><img src="pics/leer.gif" border=0 height="17" width=10><br>
</div>


Dies ist die erste aufzurufende Seite:index.php
Eingabefeld:


<?php // Dateien einbinden
require("./header.php");
?>

<div id="lay100" class="lay100">

<form action="anmeldung_check.html" method="post">

<table align="top" border="0" cellpadding="0" cellspacing="0">

<tr>
<td>
* Anrede
</td>
<td>
<input type="radio" name="form[Anrede]" value="Herr" checked> Herr&nbsp;&nbsp;
<input type="radio" name="form[Anrede]" value="Frau"> Frau
</td>
</tr>

<tr>
<td><img src="pics/leer.gif" height="5" width="1"></td>
<td><img src="pics/leer.gif" height="5" width="1"></td>
</tr>

<tr>
<td>
* Vorname
</td>
<td>
<input type="text" name="form[Vorname]" size="30" maxlength="30">
</td>
</tr>

<tr>
<td>
* Nachname
</td>
<td>
<input type="text" name="form[Nachname]" size="30" maxlength="30">
</td>
</tr>


<tr>
<td>
* E-Mail
</td>
<td>
<input type="text" name="form[Email]" size="30" maxlength="60">
</td>
</tr>

<tr>
<td>
&nbsp;
</td>
<td>

<textarea name="form[Sonstiges]" cols="70" rows="12"></textarea><br><br>
<input type="submit" value="&nbsp;&nbsp;&nbsp;weiter&nbsp;&nbsp;&nbsp;">
</td>
</tr>
</table>

</form>
</div>

</body>
</html>


Jetzt die Überprügung, ob Felder leer sind:

Datei: anmeldung_fields.php



<?

$fields = array(
Email => 'E-Mail',
sontiges=> 'Sonstige Angaben'
);

$fillfields = array('Anrede', 'Vorname', 'Nachname', 'Email');
?>



Datei: anmeldung_check.html


<?php
require("./header.php");
require("anmeldung_fields.php");

$failedfields = array();
foreach ($fillfields as $fillfield) {
if (!$form[$fillfield]) {
if ($fields[$fillfield]) {
array_push($failedfields, $fields[$fillfield]);
} else {
array_push($failedfields, $fillfield);
}
}
}

?>


<div id="lay100" class="lay100">

<?php
if (count($failedfields) > 0) {
print "Folgende Angaben fehlen:<br><br>\n";
foreach ($failedfields as $f) {
print "* " . $f . "<br>\n";
}
print "<br>Bitte gehen Sie zurück und füllen Sie das Formular vollständig aus.<br>\n";
}
else {

print "<form action=\"anmeldung_send.html\" method=\"post\">\n";

print "<table width=\"100%\" align=\"top\" border=\"0\">\n";

foreach ($form as $field => $value) {
print " <tr>\n";
print " <td class=\"lay100a\" width=\"35%\">\n";
if ($fields[$field]) {
print " <b>" . $fields[$field] . "</b>\n";
}
else {
print " <b>" . $field . "</b>\n";
}
print " </td>\n";
print " <td class=\"lay100b\">\n";
print " " . $value . "\n";
print " <input type=\"hidden\" name=\"form[" . $field . "]\" value=\"" . $value . "\">\n";
print " </td>\n";
print " </tr>\n";
}
print "</table><br>\n";
print "<input type=\"submit\" value=\"Anmeldung versenden\">\n";
print "</form>\n";
}
?>

<br><br><br><br>
</div>


</body>
</html>



Und ab in die Datenbank
Datei: anmeldung_send.html


<?php
require("./header.php");
require("DB.php");
require("connect.php");

$db = DB::connect($dsn);
if (DB::isError($db)) { die ($db->getMessage()); }

print "<div id=\"lay100\" class=\"lay100\">";
if (!isset($form)) { die("Keine Eingaben"); }



$query = "insert into test (";
foreach ($form as $field => $value) {
$query .= $field . ", ";
}
$query = substr($query,0,-2);

$query .= ") values (";
foreach ($form as $field => $value) {
$query .= "'" . $value . "', ";
}
$query = substr($query,0,-2);
$query .= ")";


$result = $db->query($query);

print "$query <br><br>\n";
if (DB::isError($result)) { die("DB-Error"); }
print "<br><br><br><br>";

print "</div>";

?>


</body>
</html>



Ich habe noch eine connect.php definiert, damit ich schnell die Datenbanken wechseln kann.


<?php
$dsn = "mysql://user:meinpasswort@localhost/Datenbank";
?>