Finde Fehler einfach nicht :(

PsychoSam

Mitglied
hier de Code
PHP:
<?php
include "CheckUser.php";
$Userdaten["Firma"] = $HTTP_POST_VARS["Firma"];
$Userdaten["Name"] = $HTTP_POST_VARS["Name"];
$Userdaten["Telefon"] = $HTTP_POST_VARS["Telefon"];
$Userdaten["Fax"] = $HTTP_POST_VARS["Fax"];
$Userdaten["Email"] = $HTTP_POST_VARS["Email"];
$Userdaten["Straße"] = $HTTP_POST_VARS["Straße"];
$Userdaten[""] = $HTTP_POST_VARS[""];
$Userdaten["Pw"] = $HTTP_POST_VARS["Pw"];
$Userdaten["Pw2"] = $HTTP_POST_VARS["Pw2"];


if ($Userdaten["Pw"] != $Userdaten["Pw2"]) die ("blabla");


$Password = $Userdaten["Pw"];

foreach($Userdaten as $key=>$value)
{

if ($key == "Pw") break;


$abfrage = "UPDATE adressdaten Set $key = $value WHERE UserID = $UserId";

echo $abfrage. "\n";
mysql_query($abfrage);
}

$abfrage = "UPDATE account Set Password = $Password WHERE UserID = $UserId";
mysql_query($abfrage);
?>


und zwar finden sich in dem Userdaten array die richtigen angaben wieder, auch die $abfrage ist richtig, aber er will das einfach nciht in die DB schreibe..
in der checkuser.php wird die DB verbidung aufgebaut



$abfrage = "UPDATE account Set Password = $Password WHERE UserID = $UserId";
mysql_query($abfrage);

das allerdings funktioniert


und nochwas:
was einer von euch wie man eine Seite per PHP oder anderer Scriptsprachen aufrufen kann?
ich will halt nach ausführung des scripts auf die ursprüngliche site wieder zurück


danke im voraus
 
Also:
- Was ist das? $Userdaten[""] = $HTTP_POST_VARS[""];
- if ($Userdaten["Pw"] != $Userdaten["Pw2"]) die ("blabla"); hier vielleicht ein echo statt dem die reinbringen.
- if ($key == "Pw") break; Den Sinn davon versteh ich nicht ganz :rolleyes:
- du musst nach der Fehlermeldung, dass die Pws nicht gleich sind, ein else einfügen, sonst wird der Query auch ausgeführt, wenn sie nicht gleich sind!
- In beiden MySQL-Queries: Werte müssen in Sunglequotes geschrieben werden.
- Jetzt versteh ich den Sinn if ($key == "Pw") break;

Du könntest es so machen:
PHP:
<?php
include "CheckUser.php";

$Userdaten["Firma"] = $HTTP_POST_VARS["Firma"];
$Userdaten["Name"] = $HTTP_POST_VARS["Name"];
$Userdaten["Telefon"] = $HTTP_POST_VARS["Telefon"];
$Userdaten["Fax"] = $HTTP_POST_VARS["Fax"];
$Userdaten["Email"] = $HTTP_POST_VARS["Email"];
$Userdaten["Straße"] = $HTTP_POST_VARS["Straße"];
$Userdaten["Pw"] = $HTTP_POST_VARS["Pw"];
$Userdaten["Pw2"] = $HTTP_POST_VARS["Pw2"];


if ($Userdaten["Pw"] != $Userdaten["Pw2"]) {
    echo "Fehler: Passwörter nicht gleich!";
} else {
    $Password = $Userdaten["Pw"];
    foreach($Userdaten as $key=>$value) {
    if ($key != "Pw") {
        $abfrage = "UPDATE adressdaten Set $key = '$value' WHERE UserID = '$UserId'";
        echo $abfrage. "\n";
        mysql_query($abfrage);
    }
}

mysql_query("UPDATE account Set Password = '$Password' WHERE UserID = '$UserId'");
?>

Zur 2. Frage: Ja, indem du die HTTP-Header manipulierst:
PHP:
header("Location: zielurl.php");
Solche funtkionen müsste es eigentlich auch in anderen Serverseitigen Programmiersprachen geben.
 
$Userdaten[""] = $HTTP_POST_VARS[""];

Was bezweckst du damit?

$Userdaten["Firma"] = $HTTP_POST_VARS["Firma"];
$Userdaten["Name"] = $HTTP_POST_VARS["Name"];
$Userdaten["Telefon"] = $HTTP_POST_VARS["Telefon"];
$Userdaten["Fax"] = $HTTP_POST_VARS["Fax"];
$Userdaten["Email"] = $HTTP_POST_VARS["Email"];
$Userdaten["Straße"] = $HTTP_POST_VARS["Straße"];
$Userdaten[""] = $HTTP_POST_VARS[""];
$Userdaten["Pw"] = $HTTP_POST_VARS["Pw"];
$Userdaten["Pw2"] = $HTTP_POST_VARS["Pw2"];

Ist grässlicher Stil
bessere möglichkeit:

Code:
$userdata = $HTT_POST_VARS;
foreach($userdata as $k => $v) {
 $validata = {'Firma','Name',Fax','Email','Straße','Telefon','Fax'} ;
 if(!in_array ($v, $vaildata)  
                                   continue;
 $sql = "update adressen set $k = $v  where  UserId = $userid";
 $query = mysql_query($sql);
 if(!$query)  {
     // Fehlerbehandlung hier. Hilfreich ist es hier den generierten Query auszugeben-
     echo $sql;
 }
}

anderes Script aufrufen:

Eine andere PHP seit:
A) Setze eine header auf die seite, dies muss aber geschehen bevor Parts des Bodys gesendet werden.
B) Rufe über socket funktionalität innerhalb des Scripts dieses auf, ist meist weniger Praktikabel ;)

Anderes Script:
Liegt es als executeable auf dem Webserver und apache user hat das ausführ recht so kannst du ohne probleme mit exec() arbeiten
 
Hallo
Danke jetzt
Ich bin immer total verwirrt wann ' ', " " oder gar nihcts hinkommt :(

@Nuinmundo
sorry deine version habe ich nicht ganz verstanden und auch nicht zum laufe gebracht
aber da der still wirklich grässlich ist (bin nub) hab ich staat dessen das ganze mit ner foreach schleife gelöst..

foreach ($HTTP_POST_VARS as $key=>$value)
{
$Userdaten["$key"] = $value;
}
 
Original geschrieben von PsychoSam
Hallo
Danke jetzt
Ich bin immer total verwirrt wann ' ', " " oder gar nihcts hinkommt :(

@Nuinmundo
sorry deine version habe ich nicht ganz verstanden und auch nicht zum laufe gebracht
aber da der still wirklich grässlich ist (bin nub) hab ich staat dessen das ganze mit ner foreach schleife gelöst..

Genau und grade als Anfänger ist es der beste Zeitraum sich guten Stil angewöhnen. :)
Und mein Kommentar wegen schlechten Stil war ja nicht negativ gemeint, sondern konstruktiv :)
Schau mal in meinem Beispiel nutze ich ebenso eine foreach schleife, das ist auch vollkommen ok.
Aber ich kopiere das ganz $HTTP_POST_VARS Array. Und innerhalb der Schleife überprüf ich ob das aktuelle Array Item erwünscht ist oder nicht.
Das hat den Vorteil, du kannst sowas dynamischer machen, und das Array $validdata aus einem Konfigurationsfile einbinden.

Bei deinem Abfrageproblem hilft die ausgabe von
mysql_query($sql) or die(mysql_error());
Dies ermöglicht dir das du die Fehlermeldung die SQL zurückliefert in der Webseite auszugeben.

Andere möglichkeit ist den generierten SQLQuery per echo auszugeben und per copy und paste über phpMyAdmin zu prüfen
 
Zurück