UPDATE über Link

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

  • UPDATE über Link

    Hallöchen..


    Ich bin gerade dabei einem Projekt den letzten schliff zu geben und dabei will -wie solls auch anders sein- etwas nicht so wie ich es mir wünsche.

    Folgendes:
    Ich habe in einer Seite einen Link eingebaut der beim anklicken dann ein UPDATE des gewünschten Datensatzes erwirken soll - es soll nur ein Teil des Datensatzes geändert werden ("perm" nennt sich dieser)

    Und so schauts aus...
    Link:
    PHP-Code:
    echo " | <A HREF=\"user.php?UserId=".$row['UserId']."&perm=lock\">Nick perm. Gesperrt</A>"
    Ausführung dazu:
    PHP-Code:
        if (isset($_GET['perm']) == "lock") {
        
    $aendern "UPDATE fallnames SET perm = '1' WHERE UserId = '"$Id ."'";
        
    $update mysql_query($aendern);
        echo 
    "".$row['UserName']." wird nun als permanent gesperrt geführt.";
        } 

    error_reporting(E_ALL); habe ich bereits eingefügt doch diese/r gibt keine Meldung diesbezüglich aus. Wo liegt also mein Fehler? Datenbankverbindung steht, etc..


    MfG

    medium22

  • #2
    Re: UPDATE über Link

    Original geschrieben von medium22
    PHP-Code:
    $aendern "UPDATE fallnames SET perm = '1' WHERE UserId = '"$Id ."'"
    Wo soll $Id herkommen, und warum machst du keine Kontrollausgabe der Query und nutzt kein mysql_error()?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hi,
      PHP-Code:
      if (isset($_GET['perm']) == "lock") {
          
      $aendern "UPDATE fallnames SET perm = '1' WHERE UserId = '"$Id ."'";
          
      $update mysql_query($aendern);
          echo 
      "".$row['UserName']." wird nun als permanent gesperrt geführt.";
          } 
      Hast Du mal kontrolliert, ob die Bedingung überhaupt erfüllt ist (seit wann gibt isset den Inhalt
      einer Variablen zurück...?)?

      LG

      Kommentar


      • #4
        Hallöchen..


        @kuddeldaddeldu
        Geht doch beides, oder nicht? Jedenfalls ändert sich nichts daran ob ich es nun in einem "normalen" if oder einem mit isset schreibe.

        @wahsaga
        Die $Id bekommt das Script von "weiter ob" - sie funktioniert auch in der Schleife zuvor, warum als hier nicht auch?



        Gäbe es denn eine andere -vll. bessere- Lösung ein Update mit einem Klick durchzuführen und wenn ja, wie?


        medium22

        Kommentar


        • #5
          Es ist wundervoll von dir, dass du auf einen Teilaspekt meiner Rückfrage eingegangen bist.

          Und jetzt holst du das mit dem restlichen Teil bitte nach.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Original geschrieben von kuddeldaddeldu
            seit wann gibt isset den Inhalt
            einer Variablen zurück...?
            Das ist der interessante Teil...

            isset liefert zurück, ob eine Variable vorhanden ist, d. h. entweder true oder false

            Was du suchst, istvermutlich:
            PHP-Code:
            if (isset($_GET['perm']) and $_GET['perm'] == 'lock'

            btw:
            Du solltest Änderungen an der Datenbank nach Möglichkeit über HTTP POST machen. Gibt ja schließlich genug Browser, die Zwecks schnellerem Laden der Seiten allen gefunden Links folgen.

            Folge: Du hättest wirklich viele gesperrte User
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Hab' ich doch, wahsaga

              Schaut nun so aus:

              PHP-Code:
                  if ($_GET['perm'] == "lock") {
              error_reporting(E_ALL);
                  
              $aendern "UPDATE fallnames SET perm = '1' WHERE UserId = '"$Id ."'";
                  
              $update mysql_query($aendern) or die(mysql_error().'<hr />'$aendern .'<hr />');
                      echo 
              "".$row['UserName']." wird nun als permanent gesperrt geführt.";
                  } 
              0 Fehlermeldung sowohl vor als auch nach dem Absenden.

              Kommentar


              • #8
                Was wahsaga dir sagen wollte:
                PHP-Code:
                $aendern "UPDATE fallnames SET perm = '1' WHERE UserId = '"$Id ."'"
                wird zu
                PHP-Code:
                $aendern "UPDATE fallnames SET perm = '1' WHERE UserId = '"$Id ."'";
                die(
                $aendern); 
                Ausgabe?
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Nun so..

                  PHP-Code:
                      if (isset($_POST['perm']) and $_POST['perm'] == 'lock') {
                  error_reporting(E_ALL);
                      
                  $aendern "UPDATE fallnames SET perm = '1' WHERE UserId = '"$Id ."'";
                      die(
                  $aendern);
                      
                  $update mysql_query($aendern) or die(mysql_error().'<hr />'$aendern .'<hr />');
                          echo 
                  "".$row['UserName']." wird nun als permanent gesperrt geführt.";
                      } 
                  Noch mehr Fehlersucher geht wohl kaum <g>

                  Nun.. Wie dem auch sei.. Bekomme weiterhin keinen einzigen Fehler ausgegeben - weder vor noch nach dem Klick.

                  Sag' mir ich bin dumm oder "es" will mich verarschen.
                  Vielleicht kann die $Id doch nicht soo weit mitgereicht werden? - kA - auch wenn sie eigentlich da sein müsste <denk>


                  medium22

                  Kommentar


                  • #10
                    Original geschrieben von medium22
                    Noch mehr Fehlersucher geht wohl kaum
                    Sinnvoller geht auf jeden Fall.

                    Beispielsweise mal eine einfache Kontrollausgabe um zu sehen, ob in deinen If-Anweisungszweig überhaupt reingesprungen wird.

                    Kontrollausgabe der $_GET/$_POST-Inhalte über print_r().


                    Und da du jetzt $_POST verwendet hast, nochmal die explizite Nachfrage: Hast du denn jetzt auch vom Link auf ein Formular umgestellt?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      öhm..

                      wie mache ich denn einen einfachen Link in einem Forumlar - vor allem wenn dieser PHP beinhaltet? <dumm frag>

                      Momentan schaut der noch so aus:
                      PHP-Code:
                          echo " | <A HREF=\"user.php?UserId=".$row['UserId']."&perm=lock\">Nick perm. Gesperrt</A>"
                      Aber ganz richtig - den habe ich vergessen.

                      Kommentar


                      • #12
                        wie mache ich denn einen einfachen Link in einem Forumlar...
                        Genauso wie ausserhalb eines Formulars, aber das löst Dein Problem nicht. Du sollst das von dem Link
                        (GET) auf ein Formular (POST) umstellen. D.h. Formular mit den beiden Feldern basteln (können ja
                        auch hidden sein) und das dann per Submit-Button absenden.

                        Kommentar


                        • #13
                          Hm...

                          Irgendwie steh' ich grad' total aufm Schlauch - ob das an der Frühschicht (sprich; Schlafmangel) liegt? :|

                          Kannst mir bitte ein Bsp. "zeigen" ?



                          medium22

                          PS: Bis Morgen.

                          Kommentar


                          • #14
                            Hi,

                            wie Du in HTML ein Formular machst, findest Du bitte selbst heraus. Habe den Eindruck, dass Dir der
                            Unterschied zwischen GET und POST überhaupt nicht klar ist, also informier Dich auch darüber.
                            Wenn Du einfach Deinen Link mit angehängten URL-Parametern verwendet hast, wie soll denn
                            da was in $_POST angekommen sein? Fange mal an, wahsagas wiederholte Hinweise zu befolgen
                            und richtig zu debuggen. Wenn die echos innerhalb des IFs nicht erscheinen, war natürlich die Bedingung
                            nicht erfüllt, was sonst? Also mach endlich mal Testausgaben von den relevanten Variablen.

                            LG

                            Kommentar


                            • #15
                              Es liess mich nicht schlafen <gg>

                              Habs nun etwas anders gelöst. Der Link führt nun zu einer neuen Seite in der man dann nochmal bestätigen muss (hat auch seinen Vorteil)

                              Die Seite schaut dann nun so aus (das wichtigste davon):
                              PHP-Code:
                                  <FORM ACTION="perm.php?UserId=<? echo $UserId;?>" METHOD="post">
                                  <TABLE WIDTH="80%" HEIGHT="60%" CELLPADDING="0" CELLSPACING="0" BORDER="0">
                                  <TR><TD><B>Nick:</B></TD><TD><INPUT TYPE="text" NAME="nick" SIZE="20" VALUE="<?
                                  $sql = "SELECT UserName FROM fallnames WHERE UserId = '". $UserId ."'";
                                  $result = mysql_query($sql);
                                  $row = mysql_fetch_array($result);
                                  echo $row['UserName']; ?>" READONLY>
                                  </TD></TR>
                                  <TR><TD><INPUT TYPE="hidden" NAME="perm" VALUE="1"</TD></TR>
                                  </TABLE>
                                  <INPUT TYPE="submit" VALUE="Bestätigen..." NAME="sent">
                                  </FORM>
                              So klappts dann auch mit dem restlichen..

                              Danke für eure Geduld.


                              medium22

                              Kommentar

                              Lädt...
                              X