Datenbankeintrag wenn Spalte leer da eintragen sonst eine andere waehlen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbankeintrag wenn Spalte leer da eintragen sonst eine andere waehlen

    Hallo Leute,

    ich habe ein ziemlich kniffliges Problem. Leider konnte mir dazu in einem anderen Forum niemand helfen.

    Also ...

    Ich uebergebe aus einem Formular folgende Werte: Vorname, Name (aus der Session) und aus einem drop down ein Thema.

    Dabei sollen Vorname und Name in einen SQL-Tabelle eingetragen werden und zwar da, wo das Thema uebereinstimmt.
    In dieser Tabelle gibt es die Spalten nrthema, thema, referent1vorname, referent1name, referent2vorname und referent2name. Damit soll die Anzahl der Referenten auf 2 limitiert werden.

    Ich habe das deshalb so gewaehlt, weil sich nrthema und thema aendern koennen.

    Nun suche ich eine Moeglichkeit bei der zuerst ermittelt wird, ob ein Eintrag unter referent1vorname vorliegt. Falls nicht dann sollen Vorname und Name aus der Session als referent1vorname und referent1name bei dem gewaehlten Thema eingetragen werden.
    Existiert bereist ein Eintrag dann sollen Vorname und Name aus der Session bei dem gewaehlten Thema als referent2vorname und referent2name eingetragen werden.

    Leider sind alle Versuche mit IF ELSE oder SWITCH fehlgeschlagen. Ich kann zwar eine Bedingung wie SELECT referent1vorname ... und true oder false (oder ='', !-'' bzw. ="", !="") festlegen. Dabei wird leider nur entweder referent1 oder referent2 aktualisiert.

    Mit reinem INSERT funktioniert es leider nicht, weil ich ja keinen neuen Tabelleneintrag machen moechte sondern den bei dem gewaehlten Thema nur ergaenzen.

    Der Sinn besteht darin, dass ich gleichzeitig eine Anzeige haben moechte, bei der nrthema, thema, (referent1vorname, referent1name), (referent2vorname, referent2name) vorhanden sind und dabei im Auswahlmenue der Themen das jeweilige mit bereits zwei eingetragenen Referenten nicht mehr erscheint. (das habe ich bereits alles)

    Lasse ich die Themen in einer neuen Tabelle speichern, bekomme ich bei der Ausgabe ja immer die doppelte Nennunng von nrthema und thema da OUTER JOIN leider nicht funktioniert.

    Ich habe jetzt Tage damit zugebracht das Problem zu loesen aber ich finde keinen funktionierenden Ansatz.

    Darum meine Bitte um jegliche hilfsbereite Ansaetze zur Loesung dieses Problems!

    Vielen Dank schon mal im voraus ...

    EDIT: noch der Code:

    PHP-Code:
    <?php
    $sql 
    "SELECT referent1vorname FROM seminarthemen WHERE thema='$Array[thema]'"
    $result mysql_query($sql) OR die(mysql_error()); 
        
    $row mysql_fetch_object($result); 
        
    if (
    $row '') { 

            
    // Eintrag Referent1 pruefen, wenn nicht vorhanden eintragen 
            
    $sql "UPDATE seminarthemen SET referent1vorname='$Array[referentvorname]', referent1nachname='$Array[referentnachname]' WHERE thema='$Array[thema]'"
            
    mysql_query($sql) OR die(mysql_error()); 
        } else { 
            
    // wenn Referent1 vorhanden dann Eintrag in Referent2  
            
    $sql "UPDATE seminarthemen SET referent2vorname='$Array[referentvorname]', referent2nachname='$Array[referentnachname]' WHERE thema='$Array[thema]'"
            
    mysql_query($sql) OR die(mysql_error()); 
        } 
       
    // Ergebnis ausgeben 
        
    $sql "SELECT * FROM seminarthemen WHERE thema='$Array[thema]'"
        
    $result mysql_query($sql) OR die(mysql_error()); 
        while(
    $row mysql_fetch_object($result)) 
       { 
       echo 
    "$row->nrthema$row->thema   | ($row->referent1vorname $row->referent1nachname), ($row->referent2vorname $row->referent2nachname)<br>"
       } 

    ?>
    $Array[thema] ist das aus dem Auswahlmenue gewaehlte Thema,
    $Array[referentvorname] ist der Vorname aus der Session,
    $Array[referentnachname] ist der Nachname aus der Session

    Fehlermeldungen bekomme ich keine.
    Nur wird eben immer nur bei Referent2 aktualisiert.
    Zuletzt geändert von schnuffel; 11.09.2008, 05:39.

  • #2
    if ($row = '') {
    sollte wohl

    PHP-Code:
    if ($row == '') { 
    lauten?

    Kommentar


    • #3
      Also ich kenne mysql_fetch_object nicht wirklich aber du musst schon auf ein Offset zurückgreifen wie es auch bei mysql_fetch_assoc der Fall ist.

      Mysql-Fetch-Assoc

      Dort siehst du u.A. auch das die Funktion im Falle wenn es keine Datensätze gibt FALSE zurückliefert

      Wenn du das verstanden hast solltest du dir noch den elementaren Unterschied den mein Vorredner schon angesprochen hat verinnerlichen....

      if($blubb = 5)

      ist generell immer TRUE. Da sich hierbei um eine Zuweisung handelt. Die Operatoren sollten im großen und ganzen analog zu Java/C++ sein.
      Weshalb dein gesuchter Operator schon mal == ist
      [color=blue]MfG Payne_of_Death[/color]

      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
      [color=red]Merke:[/color]
      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

      Murphy`s Importanst LAWS
      Jede Lösung bringt nur neue Probleme
      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

      Kommentar


      • #4
        Ok, Danke erstmal.

        Das hat mich jetzt zwar nicht wirklich weiter gebracht aber zumindest gibt es Reaktionen.

        Natuerlich habe ich mich durch diverse Seite ueber PHP und MYSQL gewuehlt. Aber ich bin bisher nie auf eine deratige Problematik gestossen. Ich meine, es kann doch nicht so schwer sein etwas dazu zu finden wie ... lies die bestimmte Spalte bei der bestimmten Zeile aus, wenn leer dann schreib dort das rein, wenn dort schon was steht, dann schreib in eine andere etwas rein.

        Leider habe ich mich dazu geirrt. Oder ich verwende einfach die falschen Suchwoerter. Das will ich gar nicht ausschliessen.

        Kommentar


        • #5
          Original geschrieben von schnuffel
          Ok, Danke erstmal.

          Natuerlich habe ich mich durch diverse Seite ueber PHP und MYSQL gewuehlt. Aber ich bin bisher nie auf eine deratige Problematik gestossen. Ich meine, es kann doch nicht so schwer sein etwas dazu zu finden wie ... lies die bestimmte Spalte bei der bestimmten Zeile aus, wenn leer dann schreib dort das rein, wenn dort schon was steht, dann schreib in eine andere etwas rein.

          Leider habe ich mich dazu geirrt. Oder ich verwende einfach die falschen Suchwoerter. Das will ich gar nicht ausschliessen.
          Man kann gutgläubig alle Unwahrheiten aus diversen Foren glauben oder man freundet sich mit dem PHP Manual an, wo auch der letzte PHP Workaround in den User Comments festgehalten worden ist.

          In deinem Fall wäre wohl sowas wie:

          PHP-Code:
          if($row->referent1vorname == ""
          ein Wink in die richtige Richtung.

          BTW: mein vorheriger Link ist eigentlich Mysql-Fetch-Objekt
          [color=blue]MfG Payne_of_Death[/color]

          [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
          [color=red]Merke:[/color]
          [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

          Murphy`s Importanst LAWS
          Jede Lösung bringt nur neue Probleme
          Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
          In jedem kleinen Problem steckt ein großes, das gern raus moechte.

          Kommentar

          Lädt...
          X