PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   [Funktion] Habe ein Problem (https://www.php-resource.de/forum/php-developer-forum/77528-funktion-habe-ein-problem.html)

Homer75 01-11-2006 15:37

[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

TobiaZ 01-11-2006 15:41

Bitte Regeln lesen und befolgen! :teach:

kuddeldaddeldu 01-11-2006 15:54

Hi,
Zitat:

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

Hirnhamster 01-11-2006 18:15

ich vermisse sowas wie mysql_fetch_assoc()..

TobiaZ 01-11-2006 19:20

du meinst sowas wie

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

;)

Hirnhamster 01-11-2006 19:55

hm.. ja .. oder sowas ^^
sry blind..
ok, ab jetzt schau ich mir den Code au nur noch an, wenn er gescheit formatiert ist ;)

Homer75 01-11-2006 20:15

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!

kuddeldaddeldu 01-11-2006 21:10

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

hhcm 02-11-2006 09:10

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)

Homer75 02-11-2006 15:50

@ 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

kuddeldaddeldu 02-11-2006 16:16

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

Homer75 05-11-2006 19:43

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!

closure 05-11-2006 19:54

Re: [Funktion] Habe ein Problem
 
Zitat:

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 :D

greets

3DMax 05-11-2006 20:07

Re: Re: [Funktion] Habe ein Problem
 
Zitat:

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

greets

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

Homer75 05-11-2006 20:08

bitte nur antworten wenn auch geholfen werden kann.

Ich denke das Spam hier nicht angebraucht ist!


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:26 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG