[Funktion] Habe ein Problem

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

  • [Funktion] Habe ein Problem

    Hallo,

    Ich möchte da was umcoden, aber irgendwie klappt das nicht. Und zwar ist das eine Tabelle wo Fahrer angezeigt werden. Ich möchte, aber das man die Fahrer namen auch ändern kann. Dazu habe ich jeden eine id verpasst. Im skript sollte eigentlich die ausgewählte id dessen Namen dann ändern aber irgendwie wird da nichts geändert.

    hier mal der skript
    PHP-Code:
    <?php         // DB NAMEN, BENUTZER UND PASSWORT MUSST DU NOCH ANGEBEN
    $db_benutzer"xxxx"//DB-Benutzer
    $db_passwort"x";    //DB-Passwort
    $db_name    "user1_1";    //DB-Name
    $table_name    "fahrer";    
    $thisfile    "fahrer.php";    
        
    $verb_fhr mysql_connect ("localhost"$db_benutzer$db_passwort);
        
    mysql_select_db ($db_name$verb_fhr);   
        
    $sql_query_fhr "SELECT id, fahrer FROM ".$table_name." ORDER BY fahrer 

    desc"
    ;
        
    $antwort_fhr mysql_query ($sql_query_fhr$verb_fhr); 
    if(isset(
    $_POST['name'])){
        foreach(
    $_POST['name'] as $name => $newfahrer){
        
    //echo "Neuer Fahrer: ".$new." |alter Fahrer: ".$id."<br>";
            
    mysql_query("UPDATE ".$table_name." SET fahrer='".$newfahrer."' WHERE 

    fahrer='"
    .$id."'");
        }
        
    header("location: ".$thisfile); exit();
    }
    else{
        echo(
    '<form method="post" action="">
            <table width=300 border=0 cellpadding=2 cellspacing=0>
            <tr>
            <td><b>id</b></td>
            <td><b>fahrer</b></td>
            </tr>'
    );             
        while(
    $zeile mysql_fetch_array($antwort_fhr)){
            
    $count $count+1;
                    
            echo(
    '<tr>
                <td>'
    .$zeile['id'].'</td>
                <td>
                <input type="text" name="fahrer['
    .$zeile['id'].']" 

    value="'
    .$zeile['fahrer'].'">
                </td>
                </tr>'
    );
        }
        
        echo(
    '
        <tr>
        <td colspan="2">
        <input type="submit" value="speichern">
        </td>
        </tr>
        </table>
        </form>'
    );
    }
    mysql_close($verb_fhr); 
    ?>
    Währe toll wenn einer den fehler findet.

    Danke im vorraus.

    Gruß Homer
    Zuletzt geändert von Wurzel; 01.11.2006, 22:48.

  • #2
    Bitte Regeln lesen und befolgen!

    Kommentar


    • #3
      Hi,
      Währe toll wenn einer den fehler findet.
      Wäre toll, wenn Du mal PHP-Tags benutzen, Fehler ausgeben und Testausgaben machen würdest.
      Vermute den Fehler in Deiner foreach-Schleife. Bereinige dort mal dieses Durcheinander an
      Variablennamen. Und zwar nachdem Du alles beseitigt hast, was Dir
      error_reporting(E_ALL)
      noch so bringt.

      LG

      Kommentar


      • #4
        ich vermisse sowas wie mysql_fetch_assoc()..
        PHP Forum
        Sessions in PHP
        Loginsystem mit PHP erstellen

        Kommentar


        • #5
          du meinst sowas wie

          while($zeile = mysql_fetch_array($antwort_fhr)){

          Kommentar


          • #6
            hm.. ja .. oder sowas ^^
            sry blind..
            ok, ab jetzt schau ich mir den Code au nur noch an, wenn er gescheit formatiert ist
            PHP Forum
            Sessions in PHP
            Loginsystem mit PHP erstellen

            Kommentar


            • #7
              sorry das ich nicht so schlau bin wie ihr. Aber ich bin leider ein newbee und kenn mich nicht so gut aus mit PHP ich hab nur mal versucht einen skript für meine bedürfnisse umzuändern.

              Nun so wie ich das sehen, werde ich wohl doch erst mal die nächsten wochen mit dem Thema befassen, vieleicht verstehe ich dann was ihr da schreibt.

              Danke für die Mühe und Entschuldigung das ich gleich gepostet habe bevor ich die REGELN gelesen habe!

              Kommentar


              • #8
                Hi,

                Du darfst auch durchaus Rückfragen zu unseren Antworten stellen, wenn Du die nicht verstehst.
                Da wir Dich nicht kennen, wissen wir nicht, was Du kannst.
                Schau Dir nochmal genau an, wie Du Dein Eingabefeld benennst, welches Feld Du im Gegensatz
                dazu aus $_POST verarbeiten willst und welche Variablen Du in das UPDATE-Statement einbindest
                (wo kommt z.B. $id her?). Mach Testausgaben (ein auskommentiertes echo hast Du ja schon drin).
                Wenn's noch an Wissen fehlt, kann ich Dir ein Tutorial empfehlen.

                LG

                Kommentar


                • #9
                  Wo kommt denn $id her?

                  Poste einfach mal die ausgabe von

                  PHP-Code:
                  echo "<pre>";
                  print_r($_POST);
                  echo 
                  "</pre>"
                  (am anfang des Scripts einbauen)
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    @ kuddeldaddeldu
                    erstmal danke für den Link zum Tutorial, da ist es mal besser beschrieben als in meinen komischen Buch!

                    @hhcm wenn ich das am anfang vom Skript einbaue kommt das dabei raus!

                    Array
                    (
                    )


                    Mein Problem ist das:
                    Ich möchte aus der Tabelle die Fahrer ID ($id) mit den Namen des Fahrers ($fahrer) anzeigen. So weit so gut, das spuckt er auch aus. Nun möchte ich aber den Namen ändern mit dem update befehl. Nur wird da nichts geändert, weil ich wohl irgendwo ein fehler drinn habe, den ich nicht alleine lösen kann, weil mir noch das wissen dazu fehlt. deswegen habe ich gedacht ich finde hier HILFE.
                    PHP-Code:
                     $verb_fhr mysql_connect ("localhost"$db_benutzer$db_passwort);
                        
                    mysql_select_db ($db_name$verb_fhr);   
                        
                    $sql_query_fhr "SELECT id, fahrer FROM ".$table_name." ORDER BY fahrer desc"
                    bis hier verstehe ich das so: ich wähle aus der Tabelle die id und fahrer und dann soll er den Fahrer reinschreiben ändern !
                    PHP-Code:
                        $antwort_fhr mysql_query ($sql_query_fhr$verb_fhr); 
                    if(isset(
                    $_POST['fahrer'])){
                        foreach(
                    $_POST['fahrer'] as $fahrer => $id){
                        
                    //echo "id: ".$id." | Fahrer: ".$fahrer."<br>";
                            
                    mysql_query("UPDATE ".$table_name." SET fahrer='".$fahrer."' WHERE fahrer='".$id."'");
                        }
                        
                    header("location: ".$thisfile); exit();

                    hier vermute ich irgend ein Fehler! Tabelle wird angezeigt mit ID und Name in der Spalte steht auch schon der alte name. Den möchte ich nun ändern. Das schaut dann z.B. So aus Tabellenkopf ID daneben Name. Zahl unter ID ist ne 12 Name = Michael den möchte ich ändern in z.B Sepp.
                    PHP-Code:
                    else{
                        echo(
                    '<form method="post" action="">
                            <table width=300 border=0 cellpadding=2 cellspacing=0>
                            <tr>
                            <td><b>Fahrer id</b></td>
                            <td><b>Fahrer Name</b></td>
                            </tr>'
                    );             
                        while(
                    $zeile mysql_fetch_array($antwort_fhr)){
                            
                    $count $count+1;
                                    
                            echo(
                    '<tr>
                                <td>'
                    .$zeile['id'].'</td>
                                <td>
                                <input type="text" name="name['
                    .$zeile['id'].']" value="'.$zeile['fahrer'].'">
                                </td>
                                </tr>'
                    );
                        }
                        
                        echo(
                    '
                        <tr>
                        <td colspan="2">
                        <input type="submit" value="speichern">
                        </td>
                        </tr>
                        </table>
                        </form>'
                    );
                    }
                    mysql_close($verb_fhr); 
                    ?> 
                    Ich hab jetzt mal so geschrieben wie ich das verstehe damit ihr euch ein Bild machen könnt wieviel ich nicht verstehe

                    Also bitte nur antworten wenn ihr mir auch wirklich helfen wollt.

                    Danke

                    Kommentar


                    • #11
                      Hi,

                      Du hast einige Fehler bzw. unsinniges Scriptdesign drin, die noch auf Verständnisproblemen deinerseits beruhen.
                      Wenn $_POST gesetzt ist, machst Du nach dem Update eine Umleitung auf das Script selbst und ein exit. Warum?
                      Das ist der Grund, warum Du mit print_r($_POST) nie etwas herausbekommst. Entferne den else-Block
                      um die Formularausgabe und verschiebe den mysql_query direkt davor (nein, vor dem UPDATE brauchst Du kein
                      SELECT, welche Datensätze Du ändern willst, bestimmst Du doch mit der WHERE-Klausel).
                      Und nicht vergessen, header(...) und exit herauszunehmen. Jetzt solltest Du nach Absenden des Formulars
                      auch eine Ausgabe für $_POST bekommen, bei der Dir sicherlich was auffällt?

                      LG

                      Kommentar


                      • #12
                        so habe ein kleinen Teilerfolg ich kann zumindest den namen mal ändern:

                        code ist nun so:

                        PHP-Code:
                            if(isset($_POST['name'])){
                            foreach(
                        $_POST['name'] as $name => $id){
                                    
                        mysql_query("UPDATE ".$table_name." SET fahrer='".$id."' WHERE id='".$name."'");
                            } 
                        Und so ist es dann in der Post action


                        PHP-Code:
                        echo('<form method="post" action="">
                                <table width=300 border=0 cellpadding=2 cellspacing=0>
                                <tr>
                                <td><b>ID</b></td>
                                <td><b>Fahrer</b></td>
                                </tr>'
                        );             
                            while(
                        $zeile mysql_fetch_array($antwort_fhr)){
                                
                        $count $count+1;
                                        
                                echo(
                        '<tr>
                                    <td>'
                        .$zeile['id'].'</td>
                                    <td>
                                    <input type="text" name="name['
                        .$zeile['id'].']" value="'.$zeile['fahrer'].'">
                                    </td>
                                    </tr>'
                        ); 
                        Bisher hat das auch geklappt mit den Namen ändern!

                        Nun möchte ich noch zusätzlich, das auch die Punkte mit Post action geänder werden.

                        Mein problem ist nun wie muss der script aussehen, das sowol der Name als auch die Punkte geändert werden. In update Wehre habe ich ja die id (Fahrer Ident Nummer), die unverändert bleiben muss.

                        Ich muss doch dann nur noch bei dem Skript Punkte miteinbauen?
                        PHP-Code:
                            if(isset($_POST['name'])){
                            foreach(
                        $_POST['name'] as $name => $id){
                                    
                        mysql_query("UPDATE ".$table_name." SET fahrer='".$id."', punkte='".$punkte."' WHERE id='".$name."'");
                            } 
                        Aber mit der mit dem post action habe ich probleme da hab ich einiges versucht aber ohne Erfolg.

                        Eigentlich sollten ja auch noch andere sachen geändert werden, aber ich schaffe das ja nicht mal mit 2 sachen .

                        Freue mich über jede Hilfe die ich bekommen kann!
                        Zuletzt geändert von Homer75; 05.11.2006, 20:12.

                        Kommentar


                        • #13
                          Re: [Funktion] Habe ein Problem

                          Original geschrieben von Homer75

                          Währe toll wenn einer den fehler findet.

                          Danke im vorraus.
                          gerne doch. voraus wird mit einem r geschrieben.
                          mission accomplished

                          greets
                          (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                          Kommentar


                          • #14
                            Re: Re: [Funktion] Habe ein Problem

                            Original geschrieben von closure
                            gerne doch. voraus wird mit einem r geschrieben.
                            mission accomplished

                            greets
                            nicht ganz, weil "wäre" wird in diesem fall ohne h geschrieben, aber er sprach ja auch nur von einem fehler

                            Kommentar


                            • #15
                              bitte nur antworten wenn auch geholfen werden kann.

                              Ich denke das Spam hier nicht angebraucht ist!

                              Kommentar

                              Lädt...
                              X