MySQL Problem: Spalte auslesen -> bedingung -> eintragen

Fabian Frank

Erfahrenes Mitglied
Hallo!

ich plag mich seit längerem mit einem Problem rum.
Und zwar hab ich folgendes Skript, das einen User in eine Spalte eintragen soll:

PHP:
<?


$connectionid  = mysql_connect ("localhost", "****", "****"); 

if (!mysql_select_db ("usr_web**_*", $connectionid)) 

{ 

  die ("Verbindung zur Datenbank fehlgeschlagen."); 

} 

$benutzer = $_POST['newusr'];

$sql = "INSERT INTO wachplan
                (wg1)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 

$sql = "INSERT INTO wachplan
                (wg2)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 

$sql = "INSERT INTO wachplan
                (wg3)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 

$sql = "INSERT INTO wachplan
                (wg4)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 

$sql = "INSERT INTO wachplan
                (wg5)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 
?>

Das Problem ist, er soll nur eintragen, wenn die Spalte leer ist.

Quasi so:
PHP:
<?


$connectionid  = mysql_connect ("localhost", "****", "****"); 

if (!mysql_select_db ("usr_web**_*", $connectionid)) 

{ 

  die ("Verbindung zur Datenbank fehlgeschlagen."); 

} 

$benutzer = $_POST['newusr'];


/* Wenn wg1 = leer, dann */
$sql = "INSERT INTO wachplan
                (wg1)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 


/* Wenn wg2 = leer, dann */
$sql = "INSERT INTO wachplan
                (wg2)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 



/* Wenn wg3 = leer, dann */
$sql = "INSERT INTO wachplan
                (wg3)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 



/* Wenn wg4 = leer, dann */
$sql = "INSERT INTO wachplan
                (wg4)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 



/* Wenn wg5 = leer, dann */
$sql = "INSERT INTO wachplan
                (wg5)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 

/* else */
        header ("Location: wachplan.php?allesvoll=1"); 
?>


Wie lässt sich sowas denn realisieren, dass man die Spalte vorher ausliest, wenn voll weitergibt, wenn voll, weitergibt etc.etc...?

Vielen Dank und Grüße,

Fabian
 
Hi schonmal

PHP:
if(!empty($_POST['feldname']))
{
//mach was
}

probiert

Mit diesem Beispiel kannst du sagen, wenn das Feld leer ist dann mach was.
Wenn du noch haben willst ansonsten denn mach ein
PHP:
else {
//Mach was anderes
 }
dahinter..

Hoffe das hilf dir.

Mfg Oliver
 
hai,

danke. Von der struktur her hilfts mir schon, problem ist nur, dass ich ja eben nicht wie in deinem Beispiel ein Post-Feld erkunden will, sondern eine MySQL Spalte...

greetz
 
so. Habe nun versucht, es auf die Reihe zu stellen.

Kenn mich nur leider in MYSQL eher wenig aus, deshalb auch dieser verrückte Code.

Nun meine Bitte: Kann mir das jemand richtig stellen ? Ich denke, es ist klar was ich meine, weiß nur nicht wie ich es umsetzen soll. Bei dem untenstehenden Code kommt folgende Meldung:
Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' in /var/www/web63/html/wdp/set_entry.php on line 16

Hier der Code:

PHP:
<?


$connectionid  = mysql_connect ("localhost", "web**", "****"); 

if (!mysql_select_db ("usr_web**_*", $connectionid)) 

{ 

  die ("Es konnte keine Verbindung zur Datenbank hergestellt werden. . ."); 

}

$tag = $_POST['tag']; 
$mysql = "SELECT wg1 from wachplan WHERE tag=$tag";
if(!empty(row['wg1']))  	/* Wie soll die Spalte genannt werden, damit sie geprüft werden kann  */
{

$benutzer = $_POST['newusr'];

$sql = "INSERT INTO wachplan
                (wg1)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 
}

$mysql = "SELECT wg2 from wachplan WHERE tag=$tag";
if(!empty(row['wg2']))  	/* Wie soll die Spalte genannt werden, damit sie geprüft werden kann  */
{

$benutzer = $_POST['newusr'];

$sql = "INSERT INTO wachplan
                (wg2)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 
}

$mysql = "SELECT wg3 from wachplan WHERE tag=$tag";
if(!empty(row['wg3']))  	/* Wie soll die Spalte genannt werden, damit sie geprüft werden kann  */
{

$benutzer = $_POST['newusr'];

$sql = "INSERT INTO wachplan
                (wg3)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 
}

$mysql = "SELECT wg4 from wachplan WHERE tag=$tag";
if(!empty(row['wg4']))  	/* Wie soll die Spalte genannt werden, damit sie geprüft werden kann  */
{

$benutzer = $_POST['newusr'];


$sql = "INSERT INTO wachplan
                (wg4)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 
}

$mysql = "SELECT wg5 from wachplan WHERE tag=$tag";
if(!empty(row['wg5']))  	/* Wie soll die Spalte genannt werden, damit sie geprüft werden kann  */
{

$benutzer = $_POST['newusr'];

$sql = "INSERT INTO wachplan
                (wg5)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 
}

else {
  header ("Location: wachplan.php?full=1"); 
  }
?>

Vielen Dank für eure Bemühungen!
 
Hallo Fabian.

Schau dir bitte einfach mal die Fehlermeldung an.
Die sagt es doch ganz klar. Auf Zeile 16 fehlt ein $ bei einer Variable.
Wenn du dir jetzt das row['blabla'] ansiehst, dann fehlt da ein $ wie es in der Fehlermeldung steht.

Gruß SimonErich
 
okay. Danke. Hätte ich fast selber drauf kommen können :-P

Jetzt steh ich schon wieder vor einem neuen Problem:

Egal ob die Spalte leer oder besetzt ist, er leitet immer zu Location: wachplan.php?full=1 um.
Muss wohl ein Syntax-Fehler in den If-Abfragen davor sein...

Kannst du mir da noch weiterhelfen ?
 
@Fabian

Dein Script ist in sich einfach nicht schlüssig.
Wo kommt dieses $row auf einmal her. Falls es von der Datenbank kommen sollte, dann fehlt da noch etwas am mysql Teil. Schau dir lieber noch einmal die Datenbankfunktionen und wie man aus einer Datenbank ausliest an. Ganz ehrlich. Es bringt einfach nichts, wenn ich dir den Code jetzt umschreibe und du weißt nicht wie es weitergeht.
Schau dir vor allem die Funktion mysql_fetch_array an.


Gruß SimonErich
 
versteh ich, ja. Hab mich jetzt auch drum gekümmert, es will nur einfach nicht funktionieren.

Es wird jedes mal auf die "?full=1" weitergeleitet, obwohl die Spalte leer ist :p :

PHP:
$tag = $_POST['tag']; 
$mysql = "SELECT wg1 from wachplan WHERE termin=$tag";
$row = mysql_fetch_array($mysql, MYSQL_BOTH);
if(!empty($row)) 
{

$benutzer = $_POST['newusr'];

$sql = "INSERT INTO wachplan
                (wg1)
            VALUES
               ('".$benutzer."')";
$eintragen = mysql_query($sql);
        header ("Location: wachplan.php?done=1"); 
}


else {
  header ("Location: wachplan.php?full=1"); 
  }
 
$row ist ein array. Also solltest du es auch so Abfragen...

PHP:
$row['wgl']

// edit: Ausserdem ist die if-Abfrage falschrum wenn ich das richtig sehe. So bekommst du FALSE zurück wenn $row[] leer ist, und es wird der else Teil ausgeführt... Schreib mal nur empty() oder if($row['wgl'] == ''
 
Zuletzt bearbeitet:
Vielen Dank!

EDIT: Ein Problem noch: Die WHERE Abfrage funktioniert nicht. Die Struktur passt doch?! "WHERE Spalte=Wert".

Es funktioniert auch nicht, wenn ich einen festen Wert angebe, also z.B. "WHERE termin='12.32.' und dieser Wert in der Spalte vorhanden ist. Zudem kommt noch, dass er jedes mal eine neue Zeile anlegt, wobei er eigentlich zu full weiterleiten sollte :-P
 
Zuletzt bearbeitet:
Zurück