Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Datensätze von Mysqltabelle bearbeiten

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Datensätze von Mysqltabelle bearbeiten

    Hallo, ich hab folgenden Script bis jetzt geschrieben.
    Er gibt mir alle Werte von meiner Tabelle aus, jedoch jetzt will ich sie bearbeiten, doch des klappt irgendwie nicht. Ich kann zwar felder bearbeiten, doch wenn ich dann auf den submit button drÜcken werden wieder die alte Werte angezeigt.
    Zur Info ich weiss das ich php nicht wieder aufmachen und schliessen sollte, jedoch hatte ich ein problem das Überhaupt anzuzeigen wegen den " ``.
    Danke im Vorraus (Hab shcon error report etc versucht scheint wohl ein Logik Fehler zu sein
    )
    form action="edit.php" method="POST">
    <?php
    $con = new mysqli("localhost","ech","lool","ech");
    $sql = "select * from user";
    $result = $con->query($sql);
    if ($result->num_rows > 0){
    while($row = $result->fetch_assoc()){
    ?>
    <input name="foranzahl1" type="text" value="<?php echo $row['user_id']?>">
    <input name="foranzahl2" type="text" value="<?php echo $row['user_name']?>">
    <input name="foranzahl3" type="text" value="<?php echo $row['user_email']?>">
    <input name="foranzahl4" type="text" value="<?php echo $row['user_level']?>">
    <input name="foranzahl5" type="text" value="<?php echo $row['user_pass']?>">
    <input type="submit" name="submit" value="Diesen Datensatz so speichern">
    <br>

    <?php }

    $con2 =mysqli("localhost","ech","lool","ech");
    $aktuelle_id=$_POST['user_id'];
    $anlass=$_POST['user_name'];
    $ort=$_POST["user_email"];
    $datum=$_POST["user_level"];
    $pass=$_POST["user_pass"];

    $query = "UPDATE user
    SET user_name='$anlass',
    user_email='$ort',
    user_level='$datum'
    user_pass='$pass'
    WHERE user_id = '$aktuelle_id' ";


    $result = mysql_query($query) or die(mysql_error());
    ?>
    <?php

    ;

    }
    else {
    echo "0 results";
    }
    echo "</form>";
    ?>


  • #2
    Zu deinem " Problem da hilft es die Zeichen entsprechend zu escapen. Innerhalb eines Strings schreibst du also \" statt " und dann funktioniert das. Alternativ kannst dustatt " auch ' verwenden. Zum Posten von PHP Code verwende bitte die hier verfügbaren PHP Tags wegen der Formatierung.

    Warum jagst du eigentlich immer wenn du das Formular anzeigst ein SQL auf die Datenbank los? Ich meine da du ja immer die Alten Daten als VALUE übergibst solltest du eigentlich auch immer die alten Daten wieder in die Datenbank speichern.
    Wenn du VALUE jetzt abänderst und das Formular absendest überleg mal was passiert. 1. Er ruft das Script neu auf und holt sich die ALTEN Daten aus der Datenbank und setzt sie ins Formular ein.
    2. Er speichert die neuen Daten in die Datenbank
    3. du klickst wieder auf Absenden er holt sich die neuen Daten aus der Datenbank und setzt sie ins Formular ein
    4. Er speichert die alten Daten (Die noch in der Post stehen) wieder in die Datenbank.

    Kommentar


    • #3
      Bitte die BBCodes nutzen.
      PHP-Code:
      form action="edit.php" method="POST">
      <?php
      $con 
      = new mysqli("localhost","ech","lool","ech");
      $sql "select * from user";
      $result $con->query($sql);
      if (
      $result->num_rows 0){
      while(
      $row $result->fetch_assoc()){
      ?>
      <input name="foranzahl1" type="text" value="<?php echo $row['user_id']?>">
      <input name="foranzahl2" type="text" value="<?php echo $row['user_name']?>">
      <input name="foranzahl3" type="text" value="<?php echo $row['user_email']?>">
      <input name="foranzahl4" type="text" value="<?php echo $row['user_level']?>">
      <input name="foranzahl5" type="text" value="<?php echo $row['user_pass']?>">
      <input type="submit" name="submit" value="Diesen Datensatz so speichern">
      <br>

      <?php }

      $con2 =mysqli("localhost","ech","lool","ech");
      $aktuelle_id=$_POST['user_id'];
      $anlass=$_POST['user_name'];
      $ort=$_POST["user_email"];
      $datum=$_POST["user_level"];
      $pass=$_POST["user_pass"];

      $query "UPDATE user
      SET user_name='
      $anlass',
      user_email='
      $ort',
      user_level='
      $datum'
      user_pass='
      $pass'
      WHERE user_id = '
      $aktuelle_id' ";


      $result mysql_query($query) or die(mysql_error());
      ?>
      <?php
      //???
      ;

      }
      else {
      echo 
      "0 results";
      }
      echo 
      "</form>";
      ?>
      Zur Info ich weiss das ich php nicht wieder aufmachen und schliessen sollte,
      Da hast du ne falsche Information, wie du es hast ist es - oben bei der Ausgabe - in Ordnung.
      Weiter unten ist aber ne ... seltsame Stelle...

      Ist das eigentlich aus einer Datei oder hast du eine für's Formular und eine für die Verarbeitung?
      Falls 1 Datei:
      Die Verarbeitung muss vor die Ausgabe.
      - Frag ab, ob per Post Werte übertragen wurden, falls ja führ dein Update durch.
      - Rest wie gehabt, Datensätze selektieren und anzeigen lassen

      Dein Problem: Du nutzt beim Update mysql_query();
      Weiteres Problem: Du beachtest nichts von dem, was in diesen Artikeln beschrieben wird: http://php-de.github.io/#security


      Fazit: Script nochmal genau ansehen, Flüchtigkeitsfehler beheben und Sicherheitslücken schließen.
      Relax, you're doing fine.
      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

      Kommentar


      • #4
        Ok danke merk ich mir aber wollte jetzt eigentlich das richtige Problem lösen also das der Script Überhaupt läuft.

        Kommentar


        • #5
          Zitat von VPh Beitrag anzeigen
          Bitte die BBCodes nutzen.
          PHP-Code:
          form action="edit.php" method="POST">
          <?php
          $con 
          = new mysqli("localhost","ech","lool","ech");
          $sql "select * from user";
          $result $con->query($sql);
          if (
          $result->num_rows 0){
          while(
          $row $result->fetch_assoc()){
          ?>
          <input name="foranzahl1" type="text" value="<?php echo $row['user_id']?>">
          <input name="foranzahl2" type="text" value="<?php echo $row['user_name']?>">
          <input name="foranzahl3" type="text" value="<?php echo $row['user_email']?>">
          <input name="foranzahl4" type="text" value="<?php echo $row['user_level']?>">
          <input name="foranzahl5" type="text" value="<?php echo $row['user_pass']?>">
          <input type="submit" name="submit" value="Diesen Datensatz so speichern">
          <br>

          <?php }

          $con2 =mysqli("localhost","ech","lool","ech");
          $aktuelle_id=$_POST['user_id'];
          $anlass=$_POST['user_name'];
          $ort=$_POST["user_email"];
          $datum=$_POST["user_level"];
          $pass=$_POST["user_pass"];

          $query "UPDATE user
          SET user_name='
          $anlass',
          user_email='
          $ort',
          user_level='
          $datum'
          user_pass='
          $pass'
          WHERE user_id = '
          $aktuelle_id' ";


          $result mysql_query($query) or die(mysql_error());
          ?>
          <?php
          //???
          ;

          }
          else {
          echo 
          "0 results";
          }
          echo 
          "</form>";
          ?>
          Da hast du ne falsche Information, wie du es hast ist es - oben bei der Ausgabe - in Ordnung.
          Weiter unten ist aber ne ... seltsame Stelle...

          Ist das eigentlich aus einer Datei oder hast du eine für's Formular und eine für die Verarbeitung?
          Falls 1 Datei:
          Die Verarbeitung muss vor die Ausgabe.
          - Frag ab, ob per Post Werte übertragen wurden, falls ja führ dein Update durch.
          - Rest wie gehabt, Datensätze selektieren und anzeigen lassen

          Dein Problem: Du nutzt beim Update mysql_query();
          Weiteres Problem: Du beachtest nichts von dem, was in diesen Artikeln beschrieben wird: http://php-de.github.io/#security



          Fazit: Script nochmal genau ansehen, Flüchtigkeitsfehler beheben und Sicherheitslücken schließen.
          Danke schonmal fÜr die Antwort.
          1. Das ist alles aus 1 Datei. (edit.php)
          2. wie kann ich das genau abfragen? ( If isset"button" so? )
          3. hmm das klappt ja schon bei mir
          4. Irgendwie hab ich probleme sobald ich mysqli benutzen, ist komisch ist aber so.
          5. Danke

          Kommentar


          • #6
            Zitat von Prestino Beitrag anzeigen
            Danke schonmal fÜr die Antwort.
            1. Das ist alles aus 1 Datei. (edit.php)
            2. wie kann ich das genau abfragen? ( If isset"button" so? )
            3. hmm das klappt ja schon bei mir
            4. Irgendwie hab ich probleme sobald ich mysqli benutze, ist komisch ist aber so.
            5. Danke

            Kommentar


            • #7
              Du mischt mysql_ und mysqli_

              Und wieso 2 Verbindungen - du greifst ja auch die selbe DB/Tabelle zu.

              Wenn man sich den Code so ansieht muss man dir nochmals Grundlagen ans Herz legen, da sind einige Unsauberkeiten und Sicherheitslücken drinnen.

              Wenn was nicht funktioniert -> Debugging: http://php-de.github.io/jumpto/leitfaden/

              Ansonsten:

              Grundlagen: http://www.php.de/php-einsteiger/489...rundlagen.html

              Sicherheit: http://php-de.github.io/#security
              zB mysqli_real_escape_string() oder Prepared Statments

              Formularverarbeitung: http://php-de.github.io/#form

              EVA-Prinzip: http://php-de.github.io/jumpto/eva-prinzip/

              LG
              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                [QUOTE=TessaKavanagh;832775]Zu deinem " Problem da hilft es die Zeichen entsprechend zu escapen. Innerhalb eines Strings schreibst du also \" statt " und dann funktioniert das. Alternativ kannst dustatt " auch ' verwenden. Zum Posten von PHP Code verwende bitte die hier verfügbaren PHP Tags wegen der Formatierung.

                Warum jagst du eigentlich immer wenn du das Formular anzeigst ein SQL auf die Datenbank los? Ich meine da du ja immer die Alten Daten als VALUE übergibst solltest du eigentlich auch immer die alten Daten wieder in die Datenbank speichern.
                Wenn du VALUE jetzt abänderst und das Formular absendest überleg mal was passiert. 1. Er ruft das Script neu auf und holt sich die ALTEN Daten aus der Datenbank und setzt sie ins Formular ein.
                2. Er speichert die neuen Daten in die Datenbank
                3. du klickst wieder auf Absenden er holt sich die neuen Daten aus der Datenbank und setzt sie ins Formular ein
                4. Er speichert die alten Daten (Die noch in der Post stehen) wieder in die Datenbank.[/QUOTE
                danke hab das jetzt wegetan aber tuhen tut sich noch immer nicht viel beziehungsweise nichts

                Kommentar


                • #9
                  Abfragen kannst du das über.
                  PHP-Code:
                  if(isset($_POST['submit'])) 
                  Das er nichts macht liegt an fehlerhaftem Code, was er bei richtigem Code machen würde an der fehlerhaften Programmlogik Aber die lässt sich insoweit durch eine Fallunterscheidung zügig korrigieren.

                  Kommentar


                  • #10
                    Zitat von hausl Beitrag anzeigen
                    Du mischt mysql_ und mysqli_

                    Und wieso 2 Verbindungen - du greifst ja auch die selbe DB/Tabelle zu.

                    Wenn man sich den Code so ansieht muss man dir nochmals Grundlagen ans Herz legen, da sind einige Unsauberkeiten und Sicherheitslücken drinnen.

                    1. das Problem ist das ich iregendwie immer so ne Fehlermeldung bekommen habe die irgendwie garnicht sein konnte "XXUSER ät no Permission" obwohl ich nie den xxuser verwendet habe(den gibt es garnicht) , deshalb hab ich eine neue verbindung gemacht um zu defenieren mti welchen daten er sich einloggen soll. Wenn ich des wegmache kommt wieder das gleiche Problem,.

                    2. Hab alles auf mysqli geändert.


                    3. Das ist mir schon klar, ist ein Schulprojekt fÜr die schule will erstmals das alles irgendwie "Überhaupt" läuft und falls dan noch zeit bleibt alles " sauber " zu machen.

                    4. Danke

                    Kommentar


                    • #11
                      Ist das eigentlich nur ein Kopierfehler oder fehlt vor dem FORM tatsächlich ein öffnendes < . Frage nur zur Sicherheit.

                      Kommentar


                      • #12
                        Du mischt ja zB auch bei mysqli_ in der OOP und der prozedualen Variante, warum? Bleib bei einer, das kann leicht ein Grund für den Fehler sein.

                        Funktionert das überhaupt? Das fehlt doch ein "new" oder prozedual mysqli_connect() Je nachdem was du unten dann machst.

                        PHP-Code:
                        $con2 =mysqli("localhost","ech","lool","ech"); 
                        Und genau das ist das Problem, wenn man auch die Schnelle was schlampig hinrotzt, dann passiert das genau das da Fehler enthalten sind und man sich herrlich selbst verarscht. Und der Code wimmelt nur so vor unsauberen Schlamperein.
                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Zitat von TessaKavanagh Beitrag anzeigen
                          Ist das eigentlich nur ein Kopierfehler oder fehlt vor dem FORM tatsächlich ein öffnendes < . Frage nur zur Sicherheit.
                          Das ist ist ein Kopierfehler.

                          Kommentar


                          • #14
                            Zitat von Prestino Beitrag anzeigen
                            Das ist ist ein Kopierfehler.
                            Zitat von hausl
                            Und der Code wimmelt nur so vor unsauberen Schlamperein
                            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                            PHP.de Wissenssammlung | Kein Support per PN

                            Kommentar


                            • #15
                              Zitat von hausl Beitrag anzeigen
                              Du mischt ja zB auch bei mysqli_ in der OOP und der prozedualen Variante, warum? Bleib bei einer, das kann leicht ein Grund für den Fehler sein.

                              Funktionert das überhaupt? Das fehlt doch ein new oder prozedual mysqli_connect() Je nachdem was du unten dann machst.



                              Und genau das ist das Problem, wenn man auch die Schnelle was schlampig hinrotzt, dann passiert das genau das da Fehler enthalten sind und man sich herrlich selbst verarscht. Und der Code wimmelt nur so vor unsauberen Schlamperein.
                              Wie meinste des , check ich nicht genau was misch ich da mit mit mysqli.
                              Ja das ist mir schon klar, aber will des einfach mal zum funktionieren bringen danach "Verfeinungen erledigen"

                              Hatte nicht gesehen das du was kopiert hast, ja das mit dem new hat mir vorhin irgendne fehlermeldung gegeben, ohne hat es irgendwie geklappt, ich weiss jetzt nicht genau was ich jetzt gemacht habe aber jetzt brauch ich die 2 verbindung nicht mehr und habe sie gelÖscht(danke für den zeitaufwand)

                              Kommentar

                              Lädt...
                              X