tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
14
ZUGRIFFE
2127
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Fabian Frank
    Fabian Frank Fabian Frank ist offline Mitglied Brokat
    Registriert seit
    Oct 2005
    Beiträge
    288
    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-Code:
    <?


    $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-Code:
    <?


    $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
     

  2. #2
    xlanhackerx xlanhackerx ist offline Mitglied Silber
    Registriert seit
    Jun 2007
    Beiträge
    73
    Hi schonmal

    PHP-Code:
    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-Code:
    else {
    //Mach was anderes
     

    dahinter..

    Hoffe das hilf dir.

    Mfg Oliver
     

  3. #3
    Avatar von Fabian Frank
    Fabian Frank Fabian Frank ist offline Mitglied Brokat
    Registriert seit
    Oct 2005
    Beiträge
    288
    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
     

  4. #4
    Avatar von Fabian Frank
    Fabian Frank Fabian Frank ist offline Mitglied Brokat
    Registriert seit
    Oct 2005
    Beiträge
    288
    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-Code:
    <?


    $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!
     

  5. #5
    SimonErich SimonErich ist offline Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    303
    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
     

  6. #6
    Avatar von Fabian Frank
    Fabian Frank Fabian Frank ist offline Mitglied Brokat
    Registriert seit
    Oct 2005
    Beiträge
    288
    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 ?
     

  7. #7
    SimonErich SimonErich ist offline Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    303
    @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
     

  8. #8
    Avatar von Fabian Frank
    Fabian Frank Fabian Frank ist offline Mitglied Brokat
    Registriert seit
    Oct 2005
    Beiträge
    288
    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 :

    PHP-Code:
    $tag $_POST['tag']; 
    $mysql "SELECT wg1 from wachplan WHERE termin=$tag";
    $row mysql_fetch_array($mysqlMYSQL_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"); 
      } 
     

  9. #9
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    $row ist ein array. Also solltest du es auch so Abfragen...

    PHP-Code:
    $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'] == ''
    Geändert von Loomis (08.04.08 um 11:53 Uhr) Grund: edit -_-
     

  10. #10
    Avatar von Fabian Frank
    Fabian Frank Fabian Frank ist offline Mitglied Brokat
    Registriert seit
    Oct 2005
    Beiträge
    288
    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
    Geändert von Fabian Frank (08.04.08 um 12:20 Uhr)
     

  11. #11
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    PHP-Code:
    $mysql 'SELECT wg1 FROM wachplan WHERE termin = "' .$tag'"';
    $result mysql_query($mysql);
    $row mysql_fetch_array($resultMYSQL_BOTH); 
    Versuch mal das.
     

  12. #12
    Avatar von Fabian Frank
    Fabian Frank Fabian Frank ist offline Mitglied Brokat
    Registriert seit
    Oct 2005
    Beiträge
    288
    funktioniert auch nicht :-P

    Er erstellt immer wieder eine neue Zeile in der DB...


    Muss evtl. hier noch eine WHERE-Abfrage rein?

    PHP-Code:
    $benutzer $_POST['newusr'];

    $sql "INSERT INTO wachplan
                    (wg1)
                VALUES
                   ('"
    .$benutzer."')
    /* WHERE termin='...' /*
    "
    ;
    $eintragen mysql_query($sql);
            
    header ("Location: wachplan.php?done=1"); 
    Geändert von Fabian Frank (08.04.08 um 14:24 Uhr)
     

  13. #13
    Avatar von tobee
    tobee tobee ist offline Grolba.com media
    Registriert seit
    Jul 2005
    Ort
    Karlsruhe
    Beiträge
    1.700
    Blog-Einträge
    131
    Zitat Zitat von Fabian Frank Beitrag anzeigen
    funktioniert auch nicht :-P
    Geb einfach mal den mysql_error aus.
    PHP-Code:
    $sql "SELECT `wg1` FROM `wachplan` WHERE `termin` = '$tag'";
    $result mysql_query($sql);
    $row mysql_fetch_assoc($result);
    echo 
    mysql_error(); 
    Und stelle mal den error_reporting auf E_ALL
    PHP-Code:
    error_reporting(E_ALL); 
    Er erstellt immer wieder eine neue Zeile in der DB...
    Der INSERT INTO Befehl erstellt immer eine neue neue Zeile.
    Zum aktualisieren einer Zeile musst du UDPATE benutzen.
     

  14. #14
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    // edit: Der über mir war schneller
    Geändert von Loomis (08.04.08 um 14:27 Uhr) Grund: edit
     

  15. #15
    Avatar von Fabian Frank
    Fabian Frank Fabian Frank ist offline Mitglied Brokat
    Registriert seit
    Oct 2005
    Beiträge
    288
    Zitat Zitat von tobee Beitrag anzeigen
    Der INSERT INTO Befehl erstellt immer eine neue neue Zeile.
    Zum aktualisieren einer Zeile musst du UDPATE benutzen.
    Hi Tobee.

    Danke für deine Antwort. Das war der entscheidende Hinweis, jetzt funktioniert es

    grüße, fabian
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 22.03.08, 20:35
  2. OPC-Server auslesen und in MySQL-Datenbank eintragen
    Von helene1 im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 12.03.08, 16:33
  3. MySQL: bei leerem Wert in Spalte Ersatzwert eintragen - wie?
    Von Kryptaesthesie im Forum Relationale Datenbanksysteme
    Antworten: 17
    Letzter Beitrag: 05.03.08, 14:17
  4. Antworten: 2
    Letzter Beitrag: 06.04.04, 12:43
  5. Antworten: 8
    Letzter Beitrag: 07.03.04, 12:35