Nach UPDATE werden Einträge nicht mehr angezeigt

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

  • Nach UPDATE werden Einträge nicht mehr angezeigt

    Hallo Forum,

    ich habe ein Problem mit MS-SQL 2000 und PHP:
    Wenn ich aus einem "Bearbeiten"-Formular einen Datensatz aktualisiere und über die UPDATE-Anweisung den Kram wieder in die DB schiebe, wird bei einer Suchanfrage aus dem "suchen"-Formular dieser "geupdatete" Datensatz nicht mehr ausgegeben. Lustigerweise steht er aber (mit der Änderung) in der DB drin.
    Hier kommt der Code:
    PHP-Code:

    if ($sent==1){//Formular wurde abgeschickt


    // Fehlerprüfungen (unwichtig)

    //Fehlermeldung definieren

    if (count($fehler)){
        ?>
        <script language="Javascript">
        alert('<? foreach($fehler as $fehlername => $fehlertext) echo $fehlertext; ?>');
        </script>
        <?
        unset($sent);//Formular zurücksetzen
    }else{



    //Auslesen der Einträge für das Auswahl-Formular

    $sql = "SELECT * FROM tblStamm WHERE ";

    $sql.=" 1= 1 ORDER BY tblStamm.id";
    echo $sql;

    //Anzeige der Einträge in einer Tabelle

    $result=mssql_query($sql);
    for($i=0;$i<mssql_num_rows($result);$i++)
    {
    $ergebnis[$i]=mssql_fetch_array($result);
    }
    //Schleife für Treffercheck
    if($ergebnis>0){
        for($i=0;$i<count($ergebnis);$i++)
        {
        echo "<table border='0' frame='box' margin-top='100' rules='none' bgcolor='#E0E0E0'
                align='center' width='900' cellspacing='0' style='margin-bottom: 6px; border:thin solid blue'>
                <tr bgcolor='#999999' style='font-weight:bold'>
                    <td colspan='4' width='66%'>".$ergebnis[$i][gremium]."</td>
                    <td align='right'>".$ergebnis[$i][datum]."</td>
                </tr>
                <tr style='font-weight:bold'>
                    <td width='20%'>".$ergebnis[$i][fztyp]."</td>
                    <td width='15%'>".$ergebnis[$i][kategorie]."</td>
                    <td width='15%'>".$ergebnis[$i][stand]."</td>
                    <td>".$ergebnis[$i][fgruppe]."</td>
                    <td>".$ergebnis[$i][thema]."</td>
                </tr>
                <tr>
                    <td colspan='5'>".$ergebnis[$i][inhalt]."</td>
                </tr>
                <tr>
                    <td width='20%'><b>fällig am: </b>".$ergebnis[$i][faellig]."</td>
                    <td><b>erledigt: </b>    ".$ergebnis[$i][erledigt]."</td>
                    <td colspan='2'>".$ergebnis[$i][abt_name]."</td>
                    <td align='right'>".$ergebnis[$i][ma_name]."</td>
                </tr>
    <!--  Einfügen der Links für 'Löschen' und 'Bearbeiten' mit Setzen der verschiedenen 'sent'-Variablen-->
                <tr>
                    <td colspan='4'><a href='bearbeiten.php?id=".$ergebnis[$i][id]."&sent=2'>Löschen</a></td>
    <!-- '$sent==2' startet die DELETE-Schleife -->
                    <td align='right'><a href='bearbeiten.php?id=".$ergebnis[$i][id]."&sent=4'>Bearbeiten</a></td>
    <!-- '$sent==4' startet das 'Bearbeiten'-Formular mit übergebenen Daten -->
                </tr>
            </table>";
        }
        $weiter="<br><a href='suchen.php'>Neue Suche</a><br>";
        echo $weiter;
    //Anzeige bei null Treffern
    }else{
        echo "Sorry! Kein Ergebnis gefunden<br><a href='suchen.php'>Hier geht es weiter...<p></a>";
    }


    }

    }
    und hier kommt der UPDATE-Befehl:

    PHP-Code:
    //Speichern der bearbeiteten Datensätze

    if($sent==3){

    $sql "UPDATE tblStamm";
    $sql.= " SET ";
    $sql.= "gremium = '$gremium', ";
    $sql.= "datum = '$datum', ";
    $sql.= "nr = '$nr', ";
    $sql.= "fztyp = '$fztyp', ";
    $sql.= "kategorie = '$kategorie', ";
    $sql.= "stand = '$stand', ";
    $sql.= "fgruppe = '$fgruppe', ";
    $sql.= "thema = '$thema', ";
    $sql.= "zustaendig = '$zustaendig', ";
    $sql.= "erledigt = '$erledigt', ";
    $sql.= "faellig = '$faellig', ";
    $sql.= "inhalt = '$inhalt', ";
    $sql.= "ersteller = '$ersteller' ";
    $sql.= "WHERE tblStamm.id=";
    $sql.= $id;
    mssql_query($sql);

    Zur Erläuterung:
    In der Ergebnis-Tabelle des Suchformulars sind die beiden Links "Löschen" und "Bearbeiten" je mit einer Wertzuweisung für die Variable $sent.
    Mit der steuere ich dann die Aktion über eine if-Schleife, z. B. $sent==3 für UPDATE nachdem das Bearbeiten-Formular abgeschickt wurde.
    Was braucht ihr noch? Auch die Formulare?
    Übrigens: mssql_query nach dem UPDATE gibt eine einwandfreie Anweisung aus. Das funktioniert tadellos...

    Frage: warum werden die bearbeiteten Daten nach nochmaliger Suche nicht mehr angezeigt?

    Gruß!
    System:
    PHP 4.1.2
    MS SQL Server 2000
    Win NT4 SP 6 auf PIII

  • #2
    Re: Nach UPDATE werden Einträge nicht mehr angezeigt

    "SELECT * FROM tblStamm WHERE 1= 1 ORDER BY tblStamm.id";

    was hat diese where-bedingung mit einer _suche_ zu tun?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Nicht viel, ich gebe es zu.
      Sollte eine kleine Abkürzung sein. Da steht ein unheimlich langer string und dich denke, dass das für mein Problem nicht wichtig ist. DAS funktioniert ja. Aber wenn du willst, stelle ich den SELECT-String auch noch rein:
      PHP-Code:
      $sql "SELECT tblStamm.id, tblStamm.inhalt, tblStamm.faellig, tblStamm.datum, tblStamm.erledigt,
                      tblGremium.gremium, tblStand.stand, tblFgruppe.fgruppe, tblFztyp.fztyp,
                      tblThema.thema, tblKategorie.kategorie, tblAbteilung.abt_name,
                      tblMitarbeiter.ma_name
              FROM tblStamm
                  INNER JOIN tblGremium ON tblStamm.gremium = tblGremium.id
                  INNER JOIN tblStand ON tblStamm.stand = tblStand.id
                  INNER JOIN tblFgruppe ON tblStamm.fgruppe = tblFgruppe.id
                  INNER JOIN tblFztyp ON tblStamm.fztyp = tblFztyp.id
                  INNER JOIN tblThema ON tblStamm.thema = tblThema.id
                  INNER JOIN tblKategorie ON tblStamm.kategorie = tblKategorie.id
                  INNER JOIN tblAbteilung ON tblStamm.zustaendig = tblAbteilung.id
                  INNER JOIN tblMitarbeiter ON tblStamm.ersteller = tblMitarbeiter.id
              WHERE"
      ;

      //Unterabfragen der Auswahlfelder

      if($suche){$sql.=" tblStamm.inhalt LIKE '%$suche%' AND";}
      if(
      $gremium!="0"){$sql.=" tblStamm.gremium='$gremium' AND";}
      if(
      $stand!="0"){$sql.=" tblStamm.stand='$stand' AND";}
      if(
      $fgruppe!="0"){$sql.=" tblStamm.fgruppe='$fgruppe' AND";}
      if(
      $fztyp!="0"){$sql.=" tblStamm.fztyp='$fztyp' AND";}
      if(
      $thema!="0"){$sql.=" tblStamm.thema='$thema' AND";}
      if(
      $kategorie!="0"){$sql.=" tblStamm.kategorie='$kategorie' AND";}
      if(
      $zustaendig!="0"){$sql.=" tblStamm.zustaendig='$zustaendig' AND";}
      if(
      $erledigt!="2"){$sql.=" tblStamm.erledigt='$erledigt' AND";}
      if(
      $datumAb){$sql.=" tblStamm.datum>='$datumAb' AND";}
      if(
      $datumBis){$sql.=" tblStamm.datum<='$datumBis' AND";}
      if(
      $datumFaellig){$sql.=" tblStamm.faellig<='$datumFaellig' AND";}
      $sql.=" 1= 1 ORDER BY tblStamm.id"
      System:
      PHP 4.1.2
      MS SQL Server 2000
      Win NT4 SP 6 auf PIII

      Kommentar


      • #4
        und du bist dir sicher, dass der gerade eben geUPDATEte datensatz jetzt auch noch auf die von dir angegebenen suchparameter passt...?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          plazier den update-befehl mal VOR dem select

          wenn du die seite aufrufst mit dem sent-parameter wird
          erst der selct ausgeführt und dann das update. damit kann
          er die aktualisierung nicht anzeigen.
          Kissolino.com

          Kommentar


          • #6
            @wahsaga:
            Ich bin mir sicher, dass nach dem UPDATE alles da hinkommt, wo es hingehört. Das kann ich leicht überprüfen, in dem ich die Tabelle in der DB öffne und schaue, was drinsteht. Das klappt auch alles. Sieht nur ein bisschen unübersichtlich aus wegen der ganzen INNER JOINs - ist aber deshalb sehr flexibel.

            @Wurzel:
            Der SELECT-Befehl steht in einem anderem Script als der UPDATE-Befehl
            Daran dachte ich auch schon. Ich probiere auch mit den $sent rum, aber no chance.
            Ich verstehs nicht: in der DB steht alles drin!!! Warum nicht im Script? Argh!
            System:
            PHP 4.1.2
            MS SQL Server 2000
            Win NT4 SP 6 auf PIII

            Kommentar


            • #7
              Hallo?
              Noch jemand da?
              System:
              PHP 4.1.2
              MS SQL Server 2000
              Win NT4 SP 6 auf PIII

              Kommentar


              • #8
                Hallo,

                es wäre schön, wenn mir nochmal jemand einen Tipp geben könnte zu meinem Problem.
                Und wenn mir keiner einen Tipp geben kann, wäre eine Rückmeldung trotzdem nett - sonst sieht das so nach Hängenlassen aus.
                Tja, wenn keiner eine Idee hat, habe ich da vollstes Verständnis für - geht mir ja im Moment genauso. Außerdem arbeiten die meisten hier nicht mit MS SQL, oder?
                Also, freue mich über Meldungen...
                System:
                PHP 4.1.2
                MS SQL Server 2000
                Win NT4 SP 6 auf PIII

                Kommentar


                • #9
                  Original geschrieben von felix_a
                  Hallo?
                  Noch jemand da?
                  klar ist hier noch "jemand", nur wenn es keine antworten
                  auf deine frage gibt, ist entweder alles gesagt => siehe wahsagas
                  antworten oder es weiss niemand eine lösung für dein problem.

                  soll hier auch vorkommen
                  Kissolino.com

                  Kommentar


                  • #10
                    Na also, dann haben wir es ja!
                    Eine solche Antwort ist mir immer lieber als keine Antwort.
                    Wenn ich die Lösung gefunden habe, teile ich sie hier mit, für spätere ähnliche Fälle.
                    Bis dann also!
                    System:
                    PHP 4.1.2
                    MS SQL Server 2000
                    Win NT4 SP 6 auf PIII

                    Kommentar


                    • #11
                      Problem gelöst

                      Nur zur Info für alle, die irgendwann ein ähnliches Problem haben:

                      Meine Fehlersuche hat ergeben, dass ich im Formular, das den Datensatz bearbeitet, zwei Felder nicht berücksichtigt hatte, also auch keine neuen (oder die alten) Werte übergeben wurden.
                      Da die beiden Felder aber auch über den UPDATE-Befehl angesprochen wurden, hat dieser in die Tabelle in der Datenbank Nullen hineingeschrieben. Damit wurde der Datensatz bei der nächsten SELECT-Anweisung nicht mehr angezeigt.
                      Also:
                      immer darauf achten, dass alle Formularfelder die richtigen Werte übergebn und immer darauf achten, dass auch wirklich alle Felder im Formular auftauchen.

                      Diese Aktion hat mich einige Nerven gekostet. Aber was zählt, ist ja das Ergebnis!
                      In diesem Sinne - schönes WE zusammen!!!
                      System:
                      PHP 4.1.2
                      MS SQL Server 2000
                      Win NT4 SP 6 auf PIII

                      Kommentar

                      Lädt...
                      X