[PostgreSQL] zusammenbasteln eines statement

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

  • [PostgreSQL] zusammenbasteln eines statement

    guten morgen zusammen.

    also, ich hab in php ein formluar das ausgefüllt werden kann, die daten die eingetragen wurden in das formular, sollen dann in die postgres db eingetragen werden. (update)
    die anderen daten werden nicht verändert.

    jetzt hab ich es soweit, dass die daten die vom formular kommen erkannt
    werden dann sollten sie eingetragen werden.

    das problem ist ich habe 5 felder, von denen midestens eines vollgeschrieben sein soll aber auch alle 5 verändert werden können.

    meine frage ist nun wie setze ich diese statement zusammen ohne riesige schleifen und kruscht zu machen?

    denn mein problem ist,

    1. der erste datensatz bekommt kein komma vorangestellt,
    die nachfolgenden schon.
    2. ich weiss nicht welches feld als erstes befüllt wurde.


    PHP-Code:
    ///////////////////////////////////////////////////////////////////////////////
    $sqlgesamt="UPDATE $tabelle SET";
    ///////////////////////////////////////kommas einsetzen??-------------------

    if(empty($pwd1)){ 
       echo
    "passwortleer";
    }
    else {
       
    $sql2 ='pwd='."'$secure'"$sqlgesamt$sqlgesamt .' '$sql2;
    }
        
    if(empty(
    $login)){
       echo
    "loginleer";
    }
    else {
       
    $sql2 ='login='."'$login'"$sqlgesamt$sqlgesamt .' '$sql2;
    }

    if(empty(
    $benutzer)){
       echo
    "nameleer";
    }
    else {
      
    $sql2 ='name='."'$benutzer'"$sqlgesamt$sqlgesamt .' '$sql2;
    }
        
    if(empty(
    $dezernat)){
       echo
    "dezernatleer";
    }
    else{
      
    $sql2 ='dezernat='."'$dezernat'"$sqlgesamt$sqlgesamt .' '$sql2;
    }
    //////////////////////////////////////////////////////////////////////////////// 


    okist eigentlich eine php-frage, denke aber hier ist diese am richtigen platz.

    ich hoffe ihr könnt mir helfen.
    blunaluder
    www.flyer4fun.de

  • #2
    - du benennst HTML-seitig die Felder genauso wie die Spaltennamen der Tabelle
    - mit foreach das Array $_POST durchlaufen, Inhalt der Felder prüfen und ein Array ($arrInput) für dein Update zusammen bauen
    - mit implode(',',$arrInput) zu String umwandeln
    - mit $sqlgesamt zusammenführen und das Ergebnis bewundern

    Kommentar


    • #3
      ist das nicht genau das problem, das ich meinte?

      einkorrekter aufruf würde doch so aussehen:

      UPDATE $tabelle SET pwd='xyz', login="abc";

      wenn ich das jetzt mit dem implode vorschlag von dir mache, würde die so lauten:

      UPDATE $tabelle SET[COLOR=red],[/COLOR] pwd='xyz', login="abc";

      und das komma ist falsch.
      www.flyer4fun.de

      Kommentar


      • #4
        Original geschrieben von blunaluder

        wenn ich das jetzt mit dem implode vorschlag von dir mache, würde die so lauten:

        UPDATE $tabelle SET[COLOR=red],[/COLOR] pwd='xyz', login="abc";

        und das komma ist falsch.
        du hast noch garnicht probiert woher also diese Behauptung

        Kommentar


        • #5
          thx

          ok sorry, ich habe mal einen kelinen test gemacht und ich muss sagen du hast wie immer recht
          danke
          www.flyer4fun.de

          Kommentar


          • #6
            - mit foreach das Array $_POST durchlaufen, Inhalt der Felder prüfen und ein Array ($arrInput) für dein Update zusammen bauen
            da liegt ja mein problem,
            da ich nicht genau weiss wie ich am effektivsten das statement zusammensetzen kann.
            ich habe 4 variable die gestzt sein können
            oder auch nicht, das wird doch eine unmögliche riesenschleife.
            mit welchem befehl kann man das hier schön auswerten?

            weil ich weiss ja nicht welches feld als erstes beschrieben wurde,
            und wieviele. also weiss ich nicht an welche stelle das komma
            muss und wohin nicht.
            wenn ich es schaffe das array zusammen zu bekommen,
            ist es ja auch kein problem das statement zusammen
            zu schreiben.
            aber für mein bisheriges wissen fehlt mir da der einfache ansatz.


            PHP-Code:

            foreach($_POST as $element)//foreach-Schleife
            {
              
            $i++;
              
              echo 
            '<br>wert des ausgelesenen elementes : --'.$element.'--';
              
              if (!empty(
            $element))
                {
                  echo
            '<br>I S S E T<br>'
                    
            #$ai[$i]=$element; 
                    #echo "ai=> $ai[$i]";
                  
                  
            if($i==2) {$a[0]="login='$element' "; }
                  if(
            $i==3) {$a[1]="benutzer='$element' ";}
                  if(
            $i==4) {$a[2]="dezernat='$element' ";}
                  if(
            $i==5) {$a[3]="pwd='$element' ";}
                    
                }
              

            Zuletzt geändert von blunaluder; 20.12.2004, 07:41.
            www.flyer4fun.de

            Kommentar


            • #7
              wenn dein formular nur aus den zu setzenden feldern und dem submitbutton besteht, hilft dir das hier weiter:
              PHP-Code:
              $werte = array();
              foreach(
              $_POST as $key => $value)
                if (
              $key != 'name des submitbuttons' and !empty($value))
                  
              $werte[] = "key = '".$value."'";
              if (
              count($werte) > 0)
                echo 
              'Verändert: '.implode(', '$werte);
              else
                echo 
              'Wird nix verändert.'
              wenn du deinem submitbutton keinen namen gibst, sparst du dir den ersten teil der if-bedingung in der foreach-schleife

              btw: um einen datensatz ändernzu können, musst du ihn ja vorher auslesen; warum belegst du also nicht die formularfelder mit den momentanen werten vor?
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                hallo ich danke dir für deine schnelle antwort.

                btw: um einen datensatz ändernzu können, musst du ihn
                ja vorher auslesen; warum belegst du also nicht die formularfelder
                mit den momentanen werten vor?
                ich weiss ja nochnicht im vorhinein welcher datensatz, bzw. welche personendaten geändert werden sollen.

                aber evtl. könnte ich das ja davor abfragen.
                aufjedenfall ist das eine gute möglichkeit mein problem von davor zu umgehen. thx
                Zuletzt geändert von blunaluder; 20.12.2004, 08:02.
                www.flyer4fun.de

                Kommentar

                Lädt...
                X