Variable prüfen isset/empty?

ich habe eine Möglichkeit gefunden, zu unterschieden, ob jemand den Wert 0 eingegeben hat, oder ob das Feld leer ist:
PHP:
if (isset($_GET['send'])) {
 		    		   $v=(string)0 .(string)$_GET['wert'];
					 
					  if(!empty($v)){
					  $v=(int)$v; 
					 
 					}
 					else 
 		    			echo "Sie lie&szlig;en Felder unausgef&uuml;llt.<br>";
 					}

wobei $_GET['send'] der submit-button ist, also <input type="submit" name="send">
 
Hey danke erstmal, aber irgendwie hab ich dass problem wohl falsch geschildert!
Ich will nicht unterscheiden ob null oder kein wert!
Ich möchte nur dass wenn im Feld kein wert ( also nichts und null) steht dass dann in den wert automatisch einen eins gesetzt wird, wenn kein wert und/oder eine null drinsteht!

mfg
 
Wenn der Wert 0 sein kann, und es dabei völlig egal ist, ob eine 0 eingetragen wird oder garnix, was soll dann die Fehlermeldung ? Oder für welchen Fall war die gedacht?
Dann kannst du doch auch das Datenbankfeld mit 0 als Standardwert anlegen, dann ist der Wert austomatisch 0, wenn nichts anderes angegeben wird
 
Das ist es ja, ich habe als standardwert null angegeben und trotzdem muss ich immer eine doppelnull eintragen! Kann ich dir mal das script schicken und du schaust es dir mal an und verbessert es? Wäre echt nett! Irgendwie bin ich jetzt voll raus!

Mfg
 
Also irgendwie kapier ich nicht was Du willst.
Ich habe folgendes verstanden:
Formfeld >> Wenn Wert Nichts oder Null >>> Variable soll $variable = 0;
Ist das so richtig?
 
Also ich habs grade mal ausprobiert, scheinbar behandelt PHP einen $_POST-Wert zunächst mal als string(?). Das heißt, wenn du abfragst, ob der übergebene String leer ist, Du aber eine Null (also 0) eingetragen hast, denkt PHP das Feld sei nicht leer.
Dh also, du muss eine If-Abfrage schreiben in der festgehalten ist:
PHP:
$wertvomform == ""
Das bedeutet, dein Formwert muss gleich Null sein, damit die Bedingung erfüllt ist. Da wie bereits gesagt, PHP aber die 0 als nicht leeren Text ansieht, musst du deine If-Abfrage um eine weitere Bedingung erweitern:
PHP:
if(($wertvomform == "") || ($wertvomform == "0")){ $nullvariable = "0"; }
else{ ... hier kommt dann dein Code hin, der ausgeführt werden soll, sollte $wertvomform nicht leer oder 0 sein ... }
Soweit verstanden?
 
Häh?

Hier ist mal der ganze code! wie muss dass ausehen damit es geht?

Code:
 <?
 
 $datum=time();
 
 			if($_GET["action"] =="add") {
 				if(!$_GET["submit"]) {
 					?>
 
 		    		<form action="index.php" method="get">
 					<table width="100%">
 					<tr>
 		    			<td width="40%">Eingabe1:</td>
 		    			<td width="60%"><input type="text" name="eingabe1" maxlength="50"></td>
 					</tr>
 					<tr>
 		    			<td width="100%" colspan="2"><input type="submit" name="submit" value="Daten speichern"><input type="Reset"></td>
 					</tr>
 					</table>
 		    		<input type="hidden" name="action" value="add">
 					</form>
 
 					<?
 				}
 				else {
 
 					if ($_GET["eingabe1"]) {
 		    		    include("connect.php");
 		    			$query="insert into test (id,eingabe1,datum) values ('','".$_GET["eingabe1"]."','".$datum."');";
 		    		    $abfrage=mysql_query($query);
 		    			if($abfrage) { echo "&Auml;nderungen wurden &uuml;bernommen."; }
 		    			else { echo "&Auml;nderungen konnten nicht &uuml;bernommen werden."; }
 					}
 					else {
 		    			echo "Sie lie&szlig;en Felder unausgef&uuml;llt.<br><a href=\"javascript:history.back()\">Zur&uuml;ck</a>";
 					}
 								 }
 			}
 			else {
 		    	echo "<a href=\"index.php\">Hier geht's weiter !!</a>";
 			}
 				?>

Eine Idee?

mfg
 
Hi

Du übergibst doch, wenn etwas angegeben ist, eine Zahl, oder?
Was spricht dagegen, den via POST übergebenen String in eine Zahl umzuwandeln.
Dann wird eine Leer-Eingabe zu 0.
Diese Zahl kannst Du dann in Deinem Query nutzen, oder?

PHP:
$eingabe1=settype($eingabe1, "integer");

Wenn Komma-Zahlen eingegeben werden können (sprich mit Dezimal-Punkt) könnte man is_numeric nutzen *denk*.

MfG
Posti

PS: Kleine Anmerkung zur Formatierung Deines Code:
Selber rücke ich den Code in jeder Instanz 3 Zeichen weiter ein, was die Lesbarkeit, gerade hier im Forum steigert, sieht dann ungefähr so aus:
PHP:
for ($i=0;$i++;$i<10){
   //mache irgendwas
   if ($i==5){
      echo "i ist 5<br>";
   }
   //wieder zurück gerückt
   //also weitere Befehle
}
//und nochmal zurück gerückt
Das Einrücken via TAB rückt die Zeilen eh zu weit ein, könnte aber auch am Editor liegen.
Nix für Ungut.

**EDIT**
hatte nen ; vergessen :-/
 
piti66 hat gesagt.:
Das ist es ja, ich habe als standardwert null angegeben und trotzdem muss ich immer eine doppelnull eintragen!...

wenn du als Standardwert 0 eingegeben hast, wird der Standardwert dann genutzt, wenn du selber garkeinen Wert eingibst. In dem Fall lässt du den Wert einfach leer (siehe query)


Dann kannst du die query ja abhängig vom Eintrag machen:

PHP:
    if(trim($_GET['eingabe1'])) {
        $sqlab="INSERT into
                         test 
                        (id,eingabe1,datum)
                     VALUES
                        ('.','" $_GET['eingabe1']"','now()')";
    }
    else {
        $sqlab="INSERT into
                          test
                         (id,eingabe1,datum) 
                      VALUES
                         ('.','','now()');"
    }
So brauchst du den Wert überhaupt nicht umzuwandeln. Das trim() würde ich dir empfehlen, um auch den Fall abzudecken, dass jemand eine Leerzeichen eingibt
Sorry, ich bekomme das mit dem Einrücken nicht so hin, leider wird der Text immer wieder verschoben, ich hoffe, es ist dennoch verständlich.
Den queryteil kannst du noch etwas vereinfachen, indem du :
PHP:
mysql_query($sqlab) OR die("&Auml;nderungen konnten nicht &uuml;bernommen werden");
schreibst, so kannst du dir da die if-Abfrage sparen
Leider hast du nicht geschrieben, für welchen Fall die Fehlermeldung sein soll, denn im Prinzip würde ohne diese Fehlermeldung in jedem Fall eine 0 in die Tabelle eingetragen, sofern der Standardwert dafür 0 ist. Denn in dem Fall, dass bei dir die Fehlermeldung kommt, also der Wert nicht gesetzt ist, würde ja auch wiederum automatisch eine 0 eingetragen werden. Als Überprüfung, ob der Teil überhaupt ausgeführt werden soll, darfst du dann nicht auf die Existenz der Variable "Eingabe1" prüfen, sondern darauf, ob der submit-Button getätigt wurde.
Es gibt ein sehr gutes Tutorial, das quakenet:#php tutorial , dort werden eigentlich alle wichtigen Dinge behandelt, vielleicht hast du ja mal Zeit dafür ;-)
 
Zuletzt bearbeitet:
Zurück