Ankündigung

Einklappen
Keine Ankündigung bisher.

Dropdown Liste um Daten zu ändern

Einklappen

Neue Werbung 2019

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

  • #16
    Einfach mal $_POST debuggen... so wie ich das sehe, gibt es kein Formelement mit dem Namen "rang".
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #17
      Hab ein wenig rum probiert.
      Die id wird nun ganz normal übertragen, der Rang jedoch noch nicht. Den hab ich als Test aber einfach mal in meiner Rang.php vorgegeben.

      PHP-Code:
      <?php
          
          
      require __DIR__.'/pdo.php';  
          
          
          
      $_POST['rang'] = 'Leader';
          
          
          if (isset(
      $_POST['rang']) and isset($_GET['id'])) { 
              
      $rang $_POST['rang']; 
              
      $id = (int) $_GET['id']; 

              
              
              
      $stmt $db->prepare('UPDATE member (id, rang) VALUES (?, ?)'); 
              
      $stmt->bindParam(1$id); 
              
      $stmt->bindParam(1$rang); 
              
      $stmt->execute(); 

              echo 
      'Update erfolgreich.'
          } else { 
              echo 
      'Ungueltiger Aufruf - Rang und ID muessen korrekt angegeben werden.'
          }
      ?>
      Da kommt nun folgende Meldung:

      Fatal error: Call to a member function prepare() on a non-object in /users/ddgamer/www/rang.php on line 15

      Ich hab mal Google gefragt und kam zu folgender Seite: http://www.homepage-forum.de/showthread.php?t=49853
      Das ganze einmal ausprobiert, nun jedoch sagt er mir:

      Fatal error: Call to a member function bindParam() on a non-object in /users/ddgamer/www/rang.php on line 19

      Hat das etwas mit pdo zutun?

      Kommentar


      • #18
        Änder mal $db in $dbh.

        PHP ist ein bisschen wie Mathe. Auch dort gibt es Variablen. Und auch dort kannst du nicht den Wert einer Variablen abfragen, die du vorher nicht definiert hast. In PHP kann das implizit erfolgen, indem du einer Variable etwas zu weißt. Wurde $db vor Zeile 15 in rang.php etwas zugewiesen? Nun innerhalb von rang.php nicht. Wie wäre es also mit pdo.php? In Zeile vier steht:
        PHP-Code:
        $dbh = new PDO('...'); 
        Richtig? $dbh, aber nicht $db. Also existiert $db nicht. Ändere also entweder $db in $dbh oder $dbh in $db.

        Weißt du, nur weil dir jemand Code schickt, muss der nicht richtig sein. Fehler passieren.

        Kommentar


        • #19
          Nein, deine SQL-Syntax ist falsch.
          http://www.peterkropff.de/site/mysql/aendern.htm

          Zitat von Tropi Beitrag anzeigen
          Das deine Eingabe nicht übernommen wird liegt übrigens daran, das dein Feld keinen Namen hat.
          [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
          [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

          Kommentar


          • #20
            Zitat von monolith Beitrag anzeigen
            Ich glaube hier reicht es, INSERT INTO durch UPDATE zu ersetzen (da du keine neuen Datensätze anlegen können musst) - das ändert aber den Aufbau des Statements. Deine Aufgabe ist nun, herauszufinden, wie du das SQL-Statement umbauen musst.
            ...

            Kommentar


            • #21
              Okay.. hab verstanden was du meinst mit Aufbau des Statements.

              PHP-Code:
                  if (isset($_POST['rang']) and isset($_GET['id'])) { 
                      
              $rang $_POST['rang']; 
                      
              $id = (int) $_GET['id']; 
                      
                      
              $stmt $dbh->prepare('UPDATE member SET rang = $rang WHERE id = $id'); 
                      
              $stmt->bindParam(1$id); 
                      
              $stmt->bindParam(1$rang); 
                      
              $stmt->execute(); 

                      echo 
              'Update erfolgreich.'
                  } else { 
                      echo 
              'Ungueltiger Aufruf - Rang und ID muessen korrekt angegeben werden.'
                  }
              ?> 
              Keine Fehlermeldungen mehr,
              wird aber trotzdem immer noch nicht in der Datenbank aktualisiert.

              Kommentar


              • #22
                VPh hat mich schon einmal, offenbar erfolglos, zitiert.

                Kommentar


                • #23
                  DD-Gamer, zwar hast du nun ein SQL-Statement erzeugt, dass der Struktur einer UPDATE-Operation entspricht. Aber dafür klappt das Parameter binden nicht mehr. Lektüre dazu: http://php.net/manual/de/pdo.prepared-statements.php

                  Kommentar


                  • #24
                    Fortschritt. Es wird nun nach meinen wünschen eingespeichert, nur der Rang wird noch nicht passend mit übertragen.

                    PHP-Code:
                    echo '<table border="1">';
                        while (
                    $zeile mysqli_fetch_array$db_ergMYSQL_ASSOC))
                        {
                          echo 
                    "<tr>";
                          echo 
                    "<td>"$zeile['id'] . "</td>";
                          echo 
                    "<td>"$zeile['vorname'] . "</td>";
                          echo 
                    "<td>"$zeile['nachname'] . "</td>";
                          echo 
                    "<td>"$zeile['geburtstag'] . "</td>";
                          echo 
                    "<td>"$zeile['email'] . "</td>";
                          echo 
                    "<td>"$zeile['nickname'] . "</td>";
                          echo 
                    "<td>"$zeile['anwerber'] . "</td>";
                          echo 
                    "<td>"$zeile['geschlecht'] . "</td>";
                          echo 
                    "<td>"$zeile['steamnick'] . "</td>";
                          echo 
                    "<td>"$zeile['handy'] . "</td>";
                          echo 
                    '<td><form action="rang.php?id='.$zeile['id'].'" method="post"><input type="text" value="'htmlentities($zeile['rang']) . '"><input type="submit"></form></td>';      
                          echo 
                    "</tr>";
                        }
                        echo 
                    "</table>";
                         
                        
                    mysqli_free_result$db_erg ); 
                    In meiner rang.php findet er die Variable rang nicht.

                    PHP-Code:
                    $rang $_POST['rang']; 

                    Kommentar


                    • #25
                      Zitat von lstegelitz Beitrag anzeigen
                      Einfach mal $_POST debuggen... so wie ich das sehe, gibt es kein Formelement mit dem Namen "rang".
                      *sigh*
                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar


                      • #26
                        wie wärs mal mit ner sinnvollen Antwort? Ich bekomme die ganze zeit nur Genörgel oder Falsche Tipps? Es hat schon nen Grund das ich im Bereich "PHP Anfänger" geschrieben habe! Wenn ich doch um Rat frage, dann hat das nen Grund weil ich was nicht verstanden hab oder noch nicht soweit bin. Vorallem wenn man sich klar ausdrückt was man will und dann einer meint "Nein nein das ist falsch mach das so: *zeile code*" und dann ankommt das kannst du so nicht machen weil bla bla.. Sag mir einfach wo der Fehler liegt, wie ich ihn behebe oder bei Ratschlägen einen etwas deutlicheren Hinnweis. Was weis ich wie man PHP debuggt?!

                        Kommentar


                        • #27
                          Mein Tipp ist weder Genörgel noch falsch.

                          Debuggen heisst für dich erstmal, Variableninhalte anschauen (aka auf dem Bildschirm ausgeben). var_dump() ist dein Freund.

                          Damit schaust du dir nun den Inhalt von $_POST an, nachdem du Daten eingegeben hast und du wirst feststellen, das dein Formular keine Daten unter dem Schlüssel "rang" sendet. Schlussfolgerung überlass ich jetzt wieder dir.

                          Und kein Grund gleich ausfallend zu werden...
                          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                          Kommentar


                          • #28
                            Er müsste ja jetzt eigentlich aus dem Array "zeile" dem rang übergeben. Die id wird übergeben mit <form action="rang.php?id='.$zeile['id'].'" method="post"> ist das method="post" denn jetzt auch wichtig beim Array oder ist das übergreifend? Andernfall kann ich zwischen
                            PHP-Code:
                            <input type="text" value="'. htmlentities($zeile['rang']) . '" method="post"
                            und
                            PHP-Code:
                            <input type="submit"></form></td>'; 
                            eine eigene neue Variable anlegen die dann senden kann?

                            Kommentar


                            • #29
                              Hm, ich verstehe nicht, warum hier zwingend mit Datenbanken gearbeitet werden muss, wenn HTML noch nicht mal sitzt,
                              Beschäftige dich mal bitte mit der korrekten Syntax für die Erstellung eines Formulars. Alles was innerhalb von
                              PHP-Code:
                              <form action="deinScript.php" method="post">
                              <
                              input name="keyName" type="text" required="required" placeholder="Hier muss was drin stehen!" />
                              </
                              form
                              Formularen als inputs, selects u. Ä. erstellt wird, wird in dem assoziativen Array $_POST/$_GET (hängt von der gewählten method ab) gespeichert. Dort kannst du mit dem Key (der dem Namen deines input-Elements entspicht) den Wert abrufen.
                              PHP-Code:
                              echo $_POST['keyName']; 
                              Übe das ein paar Mal, damit du das verinnerlicht hast. Anschließend ziehst du dir mal HeidiSQL o. Ä. und testest die SQL-Syntax dort.. Wenn das da nicht sitzt, brauchst du es auch nicht in PHP versuchen.

                              Beim Programmieren sollte man gemütlich schlendern, damit man möglichst viel sieht und lernt, und nicht sprinten.

                              Tante Edith:
                              Sehe jetzt erst, dass es der gleiche Foren-User mit 2x dem ähnlichen Problem wie im anderen Thread hier ist. Bekräftigt nochmal die Aussage: Basics lernen

                              Kommentar

                              Lädt...
                              X