[PHP5] Newssystem - Probleme mit Editieren der Daten

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

  • [PHP5] Newssystem - Probleme mit Editieren der Daten

    Hallo erst mal...ich bin der neue in der Straße..:-)

    Habe vor 4 Wochen mit PHP begonnen. Habe bis letzte Woche brav viele der Übungsaufgaben aus meinem PHP-Buch gemacht (EINSTIEG IN PHP 5 von THOMAS THEIS). Jetzt wollte ich etwas eigenes machen. Da ich auf meiner Webseite auch News habe wollte ich mir dafür ein News-System aufbauen (per PHP und MySQL).

    Im Grunde funzt das ganze auch (Eingabe und schreiben in die DB sowie Abfragen und Ausgabe). Auch anfängliche Probleme wurden gelöst (wie z.B. das Beibehalten des Zeilenumbruches oder das automatische Erhöhen der ID mit jedem Eintrag per AUTO_INCREMENT).

    Nur 2 Probleme habe ich noch:

    1.
    Anscheinend wird schon etwas an die DB gesendet wenn ich nur die Eingabeseite aufrufe. Denn wenn ich die DB abfrage ist die ID wieder um 1 erhöht, obwohl nichts abgeschickt wurde. Hat jemand eine Idee ???

    2.
    Im mom sitze ich an einer Seite zum editieren und ändern der Daten. Habe es auch geschafft das die Daten aus der Datenbank ausgelesen und direkt im TEXTAREA-Feld ausgegeben werden. Nur werden diese dann nicht wieder in die DB geschrieben. Kennt jemand eine Anleitung oder irgendetwas mit dem ich mich näher damit befassen kann (brauche keine fertige Lösung)...

    Und zu guter letzt noch die Scripte der Seiten...vielleicht sind sie ja wichtig..


    EINGABE
    PHP-Code:

    <body>
    <?php

    // Verbindung mit MySQL wird hergestellt
    mysql_connect();

    // Verbindung mit der Datenbank "Fanclub" wird hergestellt
    mysql_select_db("fanclub");

    // Anweisung zum Schreiben von Datum und Nachricht in die DB 
    $sqlab "INSERT news";
    $sqlab.= "(datum, nachricht)";

    // Schreiben von Datum und Nachricht in die Datenbank. "nl2br($nachricht)" 
    wandelt Zeilenumbruch in <brum
    $sqlab
    .= "VALUES ('$datum', '".nl2br($nachricht)."')";

    //Abfrage (Schreiben) wird ausgeführt (wie in INSERT... festgelegt)
    mysql_query($sqlab);

    // Anzahl der Datensätze werden ermittelt
    $num mysql_affected_rows();

    ?>

    Bitte Datensatz eingeben:


    <!-- Eingabefelder -->
    <form action = "eingabe.php"method = "post">
        <b>Datum </b><br><input name="datum"><p>
        <b>Nachrichten </b><br><textarea name="nachricht" cols="19" rows="15"
     wrap="virtual" class="textarea"></textarea><br>
        <input type="submit" name= "Senden">
        <input type="reset" name = "Zurücksetzen">
    </form>
    </body>

    AUSGABE
    PHP-Code:
    <body>

    <?php
    // Überschrift
    echo "Abfrage Datenbank<br><br>";

    // Verbindung mit MySQL wird hergestellt
    mysql_connect();

    // Verbindung mit Datenbank "Fanclub" wird hergestellt
    mysql_select_db("fanclub");

    // Abfrage Datenbank
    $res mysql_query ("SELECT * FROM news ORDER BY id DESC");

    // Ermittlung Anzahl Datensätze
    $num mysql_num_rows($res);

    // Ausgabe Anzahl Datensätze
    echo "$num Datensätze gefunden<br>";

    // Ausgabe des Datensatzes
    while ($dsatz mysql_fetch_assoc($res))
    {
        echo 
    "ID: " $dsatz["id"] . "<br>"
           
    "<b>"  $dsatz["datum"] . "</b><br>"
           
    $dsatz["nachricht"] . "<br>";
        echo 
    '<img height=3 src="strich.gif" width=600 br><br>';
        
    }
    ?>
    </body>

    ÄNDERN/EDITIEREN (noch nicht fertig)
    PHP-Code:

    <body>

    <?php
    // Überschrift
    echo "Abfrage Datenbank<br><br>";

    // Verbindung mit MySQL wird hergestellt
    mysql_connect();

    // Verbindung mit Datenbank "Fanclub" wird hergestellt
    mysql_select_db("fanclub");

    // Abfrage Datenbank
    $res mysql_query ("SELECT * FROM news WHERE ID =35 ORDER BY id DESC");

    // Ermittlung Anzahl Datensätze
    $num mysql_num_rows($res);

    // Ausgabe Anzahl Datensätze
    echo "$num Datensätze gefunden<br>";

    // Ausgabe des Datensatzes
    while ($dsatz mysql_fetch_assoc($res))
    {
        echo 
    "ID: " $dsatz["id"] . "<br>"
           
    "<b>"  $dsatz["datum"] . "</b><br>"
           
    '<textarea name="nachricht" cols="19" rows="15" wrap="virtual" class="textarea">'
     
    $dsatz["nachricht"] . '</textarea><br>';
        echo 
    '<img height=3 src="strich.gif" width=600 br><br>';
        
    }

    $sqlab "UPDATE news SET nachricht = $dsatz["nachricht"] WHERE ID=35';
    $sqlab.= "(datumnachricht)";

    // Schreiben von Datum und Nachricht in die Datenbank. "
    nl2br($nachricht)
    wandelt Zeilenumbruch in <br> um
    $sqlab.= "VALUES ('$datum''".nl2br($nachricht)."')";

    //Abfrage (Schreiben) wird ausgeführt (wie in INSERT... festgelegt)
    mysql_query(
    $sqlab);

    // Anzahl der Datensätze werden ermittelt
    $num = mysql_affected_rows();
    ?>

    <form action = "
    eingabe.php"method = "post">
        
        <input type="
    submit" name= "Senden">
        <input type="
    reset" name = "Zurücksetzen">
    </form>
    </body>

    besten dank schon mal für eure Hilfe

    sagt artig

    der Lapje
    Zuletzt geändert von Lapje; 04.01.2005, 15:49.

  • #2
    http://www.php-resource.de/forum/sho...threadid=47906
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      bitte lesen


      und dann ... beim eintragen machst du immer eine query ... daher auch immer die leereinträge ...

      beim ändern musst du die WHERE clauses entsprechend variablel machen. im moment sehe ich nur, dass du die id 35 änderst.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Hallo

        Dein
        Code:
        mysql_query($sqlab);
        wird ja bei jedem Seitenaufruf von "EINGABE" ausgeführt.

        Du müsstest das mit einer If Abfrage abgrenzen, ob überhaupt das
        Code:
        mysql_query($sqlab);
        ausgeführt werden soll.....


        Gruß

        Peacie

        Kommentar


        • #5
          Erst mal danke..:-)

          @abraxax
          Die 35 hab ich jetzt erst mal eingebaut damit immer der gleiche Beitrag aufgerufen wird...wenn der erst richtig in die Datenbank
          geschrieben wird weiss ich das es funzt und kann das ganze ausweiten...

          @Peacie
          Ich glaube ich habe irgendwo eine Ahnung was Du meinst, aber ehrlich gesagt keine Ahnung wie ich das ändern kann...

          Worauf soll sich die IF-Abfrage denn beziehen ?
          Zuletzt geändert von Lapje; 04.01.2005, 15:46.

          Kommentar


          • #6
            Ein Ansatz wäre
            PHP-Code:
            if ($Hat_der_man_auf_absenden_geklickt == "ja")
            {
            mach Db_krams

            oder auch


            PHP-Code:
            if(is_set($_POST['Senden']) )
            {
            mach Db_krams



            OffTopic:

            Du solltest aber mal die beiden links durchlesen, die Dir die netten Moderatoren dagelassen haben....

            Dann sieht dein Post auch so hübsch Bunt und sortiert aus
            Zuletzt geändert von ; 04.01.2005, 15:42.

            Kommentar


            • #7
              Und wenn du vollständig gelesen hast, dann haben user mit standard-auflösung auch keine horizontalen scrollbalken mehr...

              Kommentar


              • #8
                Besser ? :-)

                @Peacie
                Mmmhh...ich glaube ich verstehe das richtig...also:

                Wenn ich die Seite aufrufe wird das ganze Script durchgelaufen...das heisst es wird auch etwas geschickt ohne das etwas abgeschickt wurde....mit der If-Anweisung wird nur was abgeschickt wenn auch etwas abgeschickt werden soll ???

                So in etwas richtig ?

                Kommentar


                • #9
                  Ganz genau.

                  Der Code wird ja bei jedem Seitenaufruf ausgeführt:



                  PHP-Code:
                  <?php

                  // Verbindung mit MySQL wird hergestellt
                  mysql_connect();

                  // Verbindung mit der Datenbank "Fanclub" wird hergestellt
                  mysql_select_db("fanclub");

                  // Anweisung zum Schreiben von Datum und Nachricht in die DB 
                  $sqlab "INSERT news";
                  $sqlab.= "(datum, nachricht)";

                  // Schreiben von Datum und Nachricht in die Datenbank. "nl2br($nachricht)" 
                  wandelt Zeilenumbruch in <brum
                  $sqlab
                  .= "VALUES ('$datum', '".nl2br($nachricht)."')";

                  //Abfrage (Schreiben) wird ausgeführt (wie in INSERT... festgelegt)
                  mysql_query($sqlab);

                  // Anzahl der Datensätze werden ermittelt
                  $num mysql_affected_rows();

                  ?>
                  Den musst du halt nur dann ausführen, wenn das Formular tatsächlich auch benutzt wurde.
                  Alse:

                  Wenn (formular benutzt) {dann schreibe in die db}

                  Kommentar


                  • #10
                    Irgendwie funzt das nicht...liegt das vielleicht daran das ich kein $_POST benutze ???

                    Vielleicht habe ich das doch noch nicht so verstanden..,.:-(

                    Kommentar


                    • #11
                      Sollte das...
                      PHP-Code:
                      if(is_set($_POST['Senden']) ) 
                      nicht

                      PHP-Code:
                      if(isset($_POST['Senden']) ) 
                      heissen?

                      Mit dem solltest du dein Problem eigentlich lösen können.

                      Kommentar


                      • #12
                        Das habe ich gerade auch bemerkt...vorher habe ich eine Fehlermeldung bekommen, jetzt nicht mehr...nur geändert hat sich am PRoblem selber nichts...wenn die Seite geladen oder aktualisiert wird wird trotzdem in die DB geschrieben

                        Kommentar


                        • #13
                          Poste mal den Code vom Eingabescript.

                          Kommentar


                          • #14
                            @Powerplay
                            Huch, sorry

                            natürlich isset

                            Wie komm ich auf den "_"


                            Nun ja.
                            Wie Powerplay schon sagte, poste doch mal den code, wie du ihn jetzt hast

                            Kommentar

                            Lädt...
                            X