Formular Update in MySQL

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

  • Formular Update in MySQL

    Hallo, ich komme da nicht ganz weiter, ich hoffe Ihr helft mir, das wäre sehr nett:

    Und zwar möchte ich einen Datenstz aus einer HTML-Tabelle auswählen, in einem Formular (Textfelder) ändern und in der Datenbank Updaten.

    Das auswählen und in in das Formular übertragen klappt prima.
    Nur die Änderungen in MySQL zu speichern (also Updaten) klappt noch nicht so richtig.

    Hir mal das wesentliche aus meinem Script:

    PHP-Code:
    <form action="del_user.php?mode=update&id=<?php echo $_GET['id']; ?>" method="POST">
    <table width="50%"  border="0">
      <tr>
        <td width="3%">&nbsp;</td>
        <td width="36%" bgcolor="#006699" class="Stil2"><div align="right">Benutzer-ID:</div></td>
        <td colspan="2" bgcolor="#CCCCCC"><input name="ID" type="text" size="5" maxlength="2" value="<?php echo $result['UserId']; ?>"></td>
        <td width="12%">&nbsp;</td>
    // ....usw
    Dieses Formular bezieht also die Inhalte aus $Variablen. Die Änderungen sollen an die Datei del_user.php übergeben werden und dort in MySQL updatet werden.

    Hier die del_user.php (Hier wird gelöscht und updatet)



    PHP-Code:
        include("../connect2db.inc.php");
        
        if(
    $_GET['mode'] == "update") {
            
    $strSQL "SELECT * FROM AdminUser WHERE id = ".$_GET['id']."";
            
    $data   mysql_query($strSQL);
            
    $strSQL "UPDATE AdminUser SET UserId='$ID', Name='$Nachname', Vorname='$Vorname', UserName='$UserName', UserPasswd='$passw', url='$url' WHERE id='$id'";
            
    $data   mysql_query($strSQL);
            
    // datensatz anzeigen lassen
            
    header("Location: [url]http://localhost/MySite/index.php?open=admin/admin_usermanag[/url]");

        } elseif (
    $_GET['mode'] == "delete") { //usw. 
    Ich weiss jetzt nicht ob die SELECT-ANweisung sogar überflüssig ist!

    Auf jeden Fall gibts keinen Fehler o.ä., aber der Update in der Tabelle erfolgt nicht, bleiben alte Daten drin?

    Was mache ich falsch??

    Mfg

    Piumer

  • #2
    Also:


    1. Select ist überflüssig, du verwendest das Ergebnis ja gar nicht...

    2. Hast du $id irgendwo definiert?

    3. Schalt mal das automatische Umwandeln der URL aus
    PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

    Kommentar


    • #3
      Moin,
      ich kann mich zwar irren, aber was mir aufgefallen ist.
      Deine Formular - Methode lautet "method="POST">"
      sollte dann nicht auch der Abruf eher mit:
      PHP-Code:
      if($_POST['mode'] == "update") { 
      erfolgen?? Mach doch in der Routine mal nen Echo oder Print rein und lasse Dir was Ausgeben was nur aus dieser Routine her kommen könnte. Wenn Du nix siehst, dann stimmt was mit deiner Abfrage genau hier nicht

      Desweiteren sieht mir das mit der header() -Anweisung komisch aus,
      also ich nutze das meistens so:

      PHP-Code:
      // datensatz anzeigen lassen
             
      $url="http://localhost/MySite/index.php?open=admin/admin_usermanag";
              
      header("Location: $url"
      Wie gesagt ist nur son Gedankengang den ich gerade durchlaufe.
      Grüsse Murray

      Kommentar


      • #4
        @piumer, du hängst immer noch hier fest , na siehst du endlich ein, dass
        man doch Grundlagen braucht

        Nun, zur Sache:
        1. wie @Floriam scho sagte

        2. name als Spaltenname ist böse, weil reserviertes Wort, also packt mal in
        `rein, d.h. mit `name`ansprechen, oder besser umbenennen. Zukünftig
        benennst du besser Spaltennamen gemäß Benamsungskonvention
        (strName, intID...) das hat den Vorteil, dass du sofort weisst, wasfür ein
        Typ die Spalte ist und entsprechende Werte übergeben.

        3. id ist eine Zahl also weg mit umklammernden ' und du musst per $_GET['id'] noch holen

        4. jeder DB-Operation sollst du den eventuell auftretenden Fehler
        abfangen, z.B. mysql ...(...) or die(mysql_error());, somit weisst du,
        was gemeckert wird.

        @murray, Augen auf form ist von method=post aber mode und id sind
        per querystring im url übergeben Argument von header wurde
        wahrscheinlich durch das Forum verfälscht, kein Fehler von piumer.

        BTW @piumer: ich gehe davon aus, dass du von selbst weisst, die
        restlichen Variablen per $_POST['varname'] zu holen
        EDIT:
        habe grad gesehen, dass du einmal id im url und einmal im form, entscheide dich mal für ein
        Zuletzt geändert von asp2php; 16.04.2004, 21:04.

        Kommentar


        • #5
          Es fuuuuuunnnnzzztttt YUHU

          Hi,

          Vielen Dank erstmal an alle.

          @ asp2php: Ja ich hing immer noch fest. Ich glaube das selbst nicht!!!

          Tja, habe jetzt mal Name in SQL unbenannt und alle Datenbankabfragen entsprechend abgeändert.

          Dass ich Grundkenntnisse brauche, habe ich nie bestritten. Aus meinen Fragen und eurer Hilfe lerne ich ja auch nur, und so werden meine Grundkenntnisse immer besser. Es ist aber so, dass ich auch selbst versuche erstmal ne Lösung zu finden. Wenn mir das nicht weiterhilft, frage ich euch halt.

          Dass ich erst alle Variablen per $_POST holen muss, verstehe ich nicht. Ich dachte, dass passiert automatisch mit dem Formular. Habe es doch auch bei anderen Formularen so gesehen, dass bei einer SQL Abfrage dass PHP einfach aus dem Namen zum Bsp eines Textfeldes als Variable macht. Oder nicht?

          Aber auf jeden Fall funzt es jetzt eeeeeendlich!!!!!!!!
          Das mit dem or die(mysql_error()); hätte ich mal früher machen müssen, dann hätte er mir das schon gesagt, und ich hätte euch nicht nerven müssen.

          Also, ich danke euch vielmals, endlich komme ich ein ganzes Stück weiter.

          Aber ich hoffe, Ihr könnt mir das nochmal erklären mit den $_POST!

          Und dann bis bald, ich komme sicher noch mal wieder mit meinen Fragen.





          Gruß (Ein sehr zufriedener) Piumer

          Kommentar


          • #6
            Antwort zu deiner Frage.

            PS. bitte zukünftig selbst dafür sorgen, dass die Zeile nicht zu lang werden,
            so dass man deine Postings auch ohne Scrollen lesen kann, auch bei
            Posten von Code. Danke.

            Kommentar

            Lädt...
            X