Archiv verlassen und diese Seite im Standarddesign anzeigen : is_numeric im Formular
Hallo!
Ich habe ne kurze Frage:
Ich verwende in einem Formular folgendes:
Um leere Felder zu prüfen:
if (isset($_POST['submit']) and empty($_POST['miete'])){echo $de["error_miete"];echo $de['br']; $_POST[errorcode] = "1";};
Um zu prüfen ob deren Eingabe numerisch ist:
if (isset($_POST['submit']) and isset($_POST['miete']) and is_numeric($_POST['miete'])){}else{echo $de["error_miete_numeric"];echo $de['br']; $_POST[errorcode] = "1";};
Nun habe ich bei der Überprüfung ob der Wert numerisch ist das Problem dass
diese if Abfrage schon beim ersten Aufruf erfolgt und die Fehlermeldung
ausgegeben wird.
Wie mach ich das richtig??
feuervogel
12.11.2005, 23:05:37
du machst nicht sowas sinnloses wie if( bedingung ) {#leer#} else {#befehle#}. denn der elsezweig tritt ja immer ein.
schreib lieber sowas hier:
if ( isset($_POST['submit']) and ( !isset($_POST['miete']) or !is_numeric($_POST['miete'] ) ) ){echo $de["error_miete_numeric"];echo $de['br']; $_POST[errorcode] = "1";}
und das semikolon nach der letzten klammer habe ich gelöscht.
Danke!
Ich bin nun schon ein paar Stunden davor gesessen aber ich bekomms einfach nicht dann das dieses Formular gesendet wird wenn der errocode 0 ist und submit belegt ist.
Das schaut dann folgendermaßen aus:
if (isset($_POST['submit']) and $senden == 2) {
echo "Speicherfunktion aufrufen!";
}
else
{
FORMULAR AUSGEBEN
if($_POST[errorcode] == 0) {$senden = 2;}
}
Warum funktioniert das so nicht?
Zu sehen is das Ganze hier (http://www.stik.at/de/wohnen/neu.html) sobald die Pflichtfelder korrekt belegt sind wird unten die Variable Errocode und Senden
eingeblendet, die Werte passen aber er spring oben nicht in die if Bedingung.
Ich bin echt am verzweifeln, ich sitze nun schon Stunden davor bekomms aber nicht hin.
feuervogel
13.11.2005, 11:36:27
ich weiß echt nicht, was du willst.
"formular senden" bedeutet für mich: der benutzer klickt auf den submit-button des formulars. ob er das tut und unter welchen bedingungen, kannst du mit php nicht überprüfen.
wenn error-code == 0 und submit belegt sieht so aus:
if( $_POST[ 'errorcode' ] == 0 && !empty($_POST[ 'submit' ] ) ) {
//code
}
Hi!
Danke für die Antwort und deine Geduld, leider funktioniert das auch nicht.
Ich hab das komplette Script nun mal in ne txt kopiert und hier (http://www.stik.at/formular.txt) hinkopiert.
Wär toll wenn du kurz reinschauen könntest. DANKE!
feuervogel
13.11.2005, 13:22:52
so lange du es nicht kommentierst, ich nicht weiß, was du willst und ich keine zeit habe, werde ich nicht reingucken.
Sorry!
Ja das Problem ist ist dass das Formular nun ohne die Eingaben zu prüfen
speichert. D.h. es wird die If Bedingung scheinbar nicht berücksichtigt.
Ich habe die txt Datei nun nochmal überarbeitet und kommentiert,
ich hoffe das passt nun so.
Das Ganze läuft in der PHPlib, deshalb ist ein connecten zur DB nicht
nötig.
feuervogel
13.11.2005, 15:27:20
du willst also die daten die aus dem formular kommen auf gewisse dinge hin überprüfen und erst, wenn sie gewissen kriterien genügen, speichern?
<?php
include_once ('immo/lang/de.php');
// Prüfen ob der Errorcode 0 und und um Submit leer ist
if( $error == 0 && !empty($_POST['submit']) ) {
// Ausgabe des Errorcodes
echo $error;
1. frage: wo kommt die variable $error her, bzw. wo wird sie gesetzt?
2. frage: nur wenn $error == 0 wird $error ausgegeben. ist das nicht leicht überflüssig?
feuervogel
13.11.2005, 15:30:10
am besten baust du dir mal ein winziges formular mit 1-2 feldern, und zeigst uns dann genau, wie du vorgehen willst.
Also ich hab nun ein kleines Formular geschrieben, so wie ich mir das
vorgestellt hab.
Egal was ich mache, er speichert das Formular nach dem Submit und
prüft die Felder nicht.
Hier der Code:
= "<br />";
if( $error == 0 && !empty($_POST['submit']) ) {
echo "Daten in DB schreiben";
}
else
{
echo "Formular ausgeben";
echo "<form id=\"add_item\" action=\"test.php\" method=\"post\">\n";
if (!isset($_POST['submit'])) {
$error = 1;}
// TExtfeld
if (isset($_POST['submit']) and empty($_POST['name'])){echo $de["error_name"];echo $de['br']; $error = 1;};
echo "<label for=\"name\">".$de['t1_name']."</label><input type=\"text\" name=\"name\" class=\"input-text\" maxlength=25 value=\"$_POST[name]\" />".$de['br'];
if (isset($_POST['submit']) and empty($_POST['telefon'])){echo $de["error_telefon"];echo $de['br']; $error = 1;};
echo "<label for=\"telefon\">".$de['t1_telefon']."</label><input type=\"text\" name=\"telefon\" class=\"input-text\" maxlength=25 value=\"$_POST[telefon]\" />".$de['br'];
// Textfeld
echo "<input type=\"submit\" value=\"Anzeige eintragen\" name=\"submit\" />\n";
echo "</div>";
echo "</form>";
echo $de['br'];
echo "<br /><br />";
echo "<b>Der Errorcode lautet ".$error."</b>";
echo "<br />";
}
?>
Und hier (http://www.stik.at/test.php) steht es
zum testen bereit.
DANKE
feuervogel
13.11.2005, 19:22:24
meinst du, folgendes klappt:
if( $var == 2 ) {
tue_dies();
} else {
tue_das();
}
$var = 2;
?
genau so überprüfst du nämlich deine daten beim einfügen in die db. $error kann doch noch gar keinen wert haben, die variable wird ja erst nach dem überprüfen gefüllt.
naja das kann schon sein, aber mit
if (!isset($_POST['submit'])) {
$error = 1;}
fülle ich die Variable ja schon bevor
der Submit Button gedrückt wird. Oder nicht?
Wie mach ich es dann richtig?
feuervogel
14.11.2005, 00:10:05
so, ein einfaches quiz:
<?php
//zeile 1:
//zeile 2:
$error = 5;
?>
welchen wert hat $error in zeile 1? richtig: gar keinen. egal wie oft du das script aufrufst und was du machst.
wenn du formulareingaben überprüfen willst, dann eher so:
<?php
if( isset( $_POST[ 'name' ] ) && isset( $_POST[ 'submit' ] ) && is_numeric( $_POST[ 'betrag' ] ) ) {
//füge daten in die db ein
}
//ausgabe des formulars
?>
Hi!
Danke für deine Geduld, es funktioniert nun!
Schönen Tag noch!
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.