Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Datensatzänderung mit PHP funktioiniert nicht [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Datensatzänderung mit PHP funktioiniert nicht


 
Kirsten281178
15-06-2007, 08:42 
 
Hallo, ich habe ein PHP Skript, dass Daten in einer Datenbank ändern soll, nachdem ich den Datensatz zurvor in einer Tabelle ausgewählt habe. Leider funktioniert es nicht ganz, wenn ich im Datensatz bin und dort auf ändern klicke wird immer angezeigt "Der Datensatz wurde nicht geändert". Hat jemand eine Idee wo es dran liegen könnte?

Hier die 3 Skripte:


<html>
<body>
Wählen Sie aus, welcher Datensatz geändert werden soll:<p>
<form action = "change_b.php" method = "post">
<?php
$db = mysql_connect("localhost", "root", "root");
$res = mysql_db_query("flatbed_rate",
"select * from mileage");
$num = mysql_num_rows($res);

// Tabellenbeginn
echo "<table border>";

// Überschrift
echo "<tr><td>Auswahl</td><td>Customer Name</td>";
echo "<td>Postal Code</td> <td>State</td>";
echo "<td>Country</td> <td>OZK</td>";
echo "<td>LAC</td> <td>MGT</td>";
echo "<td>HCK</td> <td>CHS</td></tr>";


for ($i=0; $i<$num; $i++)
{
$Customer_No = mysql_result($res, $i, "Customer_No");
$Customer_Name = mysql_result($res, $i, "Customer_Name");
$ZIP = mysql_result($res, $i, "ZIP");
$State = mysql_result($res, $i, "State");
$Country = mysql_result($res, $i, "Country");
$OZK = mysql_result($res, $i, "OZK");
$LAC = mysql_result($res, $i, "LAC");
$MGT = mysql_result($res, $i, "MGT");
$HCK = mysql_result($res, $i, "HCK");
$CHS = mysql_result($res, $i, "CHS");



// Tabellenzeile mit -zellen
echo "<tr> <td><input type='radio' name='auswahl'";
echo " value='$Customer_No'></td> <td>$Customer_Name</td> <td>$ZIP</td>";
echo "<td>$State</td> <td>$Country</td> <td>$OZK</td>";
echo "<td>$LAC</td><td>$MGT</td><td>$HCK</td><td>$CHS</td></tr>";
}

// Tabellenende
echo "</table>";

mysql_close($db);
?>
<p>
<input type="submit" value="Show Dataset">
</form>
</body>
</html>

---------------------------------------------------------------------------


<html>
<body>
<?php
if ($auswahl)
{
$db = mysql_connect("localhost", "root", "root");
$sqlab = "select * from mileage where";
$sqlab .= " Customer_No = '$auswahl'";

$res = mysql_db_query("flatbed_rate", $sqlab);

$alt_Customer_Name = mysql_result($res, 0, "Customer_Name");
$alt_ZIP = mysql_result($res, 0, "ZIP");
$alt_State = mysql_result($res, 0, "State");
$alt_Country = mysql_result($res, 0, "Country");
$alt_OZK = mysql_result($res, 0, "OZK");
$alt_LAC = mysql_result($res, 0, "LAC");
$alt_MGT = mysql_result($res, 0, "MGT");
$alt_HCK = mysql_result($res, 0, "HCK");
$alt_CHS = mysql_result($res, 0, "CHS");


echo "Führen Sie die Änderungen durch,<p>";
echo "betätigen Sie anschließend den Button<p>";

echo "<form action = 'change_c.php' ";
echo " method = 'post'>";

echo "<input name='neu_Customer_Name' value='$alt_Customer_Name'> ";
echo " Customer Name<p>";
echo "<input name='neu_ZIP' value='$alt_ZIP'>";
echo " Postal Code<p>";
echo "<input name='neu_State' value='$alt_State'>";
echo " State<p>";
echo "<input name='neu_Country' value='$alt_Country'>";
echo " Country<p>";
echo "<input name='neu_OZK' value='$alt_OZK'>";
echo " OZK<p>";
echo "<input name='neu_LAC' value='$alt_LAC'>";
echo " LAC<p>";
echo "<input name='neu_MGT' value='$alt_MGT'>";
echo " MGT<p>";
echo "<input name='neu_HCK' value='$alt_HCK'>";
echo " HCK<p>";
echo "<input name='neu_CHS' value='$alt_CHS'>";
echo " CHS<p>";


echo "<input type='hidden' name='original_Customer_No' ";
echo " value='$auswahl'>";

echo "<input type='submit' ";
echo " value='Änderungen in DB speichern'><p>";
echo "<input type='reset'>";
echo "</form>";

mysql_close($db);
}

else
echo "Es wurde kein Datensatz ausgewählt<p>";
?>
</body>
</html>

-------------------------------------------------------------------


<html>
<body>
<?php
$db = mysql_connect("localhost", "root", "root");

$sqlab = "update mileage set Customer_Name = '$neu_Customer_Name',";
$sqlab .= "ZIP = '$neu_ZIP',";
$sqlab .= "State = '$neu_State',";
$sqlab .= "Country = '$neu_Country'";
$sqlab .= "OZK = '$neu_OZK'";
$sqlab .= "LAC = '$neu_LAC'";
$sqlab .= "MGT = '$neu_MGT'";
$sqlab .= "HCK = '$neu_HCK'";
$sqlab .= "CHS = '$neu_CHS'";
$sqlab .= "where Customer_No == '$original_Customer_No'";

mysql_db_query("flatbed_rate", $sqlab);

$num = mysql_affected_rows();
if ($num>0)
echo "Der Datensatz wurde geändert<p>";
else
echo "Der Datensatz wurde nicht geändert<p>";

mysql_close($db);
?>
Zurück zur <a href="change_a.php">Auswahl</a>

</body>
</html>

 
eintrachtemil
15-06-2007, 08:47 
 
$sqlab .= "where Customer_No == '$original_Customer_No'";

Syntaxfehler!

 
Kirsten281178
15-06-2007, 08:49 
 
Danke, aber daran lag es leider nicht.

 
Koala
15-06-2007, 08:57 
 
poste mal die Fehlermeldung:

mysql_db_query("flatbed_rate", $sqlab) or die(mysql_error());

 
Kirsten281178
15-06-2007, 09:01 
 
Die Fehlermeldung lautet:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OZK = '5'LAC = '5'MGT = '5'HCK = '5'CHS = '5'where Customer_No = '5'' at line 1


(Die 5en stehen überall für die Testeinträge)

 
jahlives
15-06-2007, 09:04 
 
Du solltest schleunigst mit Debugging anfangen. Also hinter jeder mysql_query oder sonstige MySql Fkt mal

mysql_db_query() OR die(mysql_error().'<br />'.$sqlab);

schreiben und dein Error Reporting schärfer einstellen

error_reporting(E_ALL);

als erste Zeile deines Codes.
Und Vergleiche werden in Mysql mit = und nicht mit == gemacht.

Gruss

tobi

p.s. ich würde dir allgemein empfehlen mal ins Manual zum Thema MySql reinzuschmöckern. Wieso verwendest du eigentlich mysql_num_rows() und eine for Schleife ?

$sql = "SELECT * from table";
$res = mysql_query($sql);
$ret = array();
while($re=mysql_fetch_array($res,MYSQL_ASSOC){
$ret[] = $re;
}

p.s.2. Kennst du && zum Verknüpfen mehrer Bedingungen ???

 
Kirsten281178
15-06-2007, 09:17 
 
Hallo Tobi,

ich habe jetzt das debugging mit meinen queeries und funktionen gemacht. Leider kommt keine andere Fehlermeldung. Immer du die eine, die ich schon gepostet habe.


Zu deiner Frage:
Ich habe mysql_num_rows() und eine for Schleife verwendet, weil es so in meinem Buch drin stand (ähnliches Beispiel).

Gruß,
Kirsten

 
jahlives
15-06-2007, 09:36 
 
Zu deiner Fehlermeldung siehe mein p.s.2 und ab und zu ein Leerzeichen ist auch nicht schlecht ;)

Gruss

tobi

 
Husti
15-06-2007, 10:10 
 
$sqlab = "update mileage set Customer_Name = '$neu_Customer_Name',";
$sqlab .= "ZIP = '$neu_ZIP',";
$sqlab .= "State = '$neu_State',";
$sqlab .= "Country = '$neu_Country'";
$sqlab .= "OZK = '$neu_OZK'";
$sqlab .= "LAC = '$neu_LAC'";
$sqlab .= "MGT = '$neu_MGT'";
$sqlab .= "HCK = '$neu_HCK'";
$sqlab .= "CHS = '$neu_CHS'";
$sqlab .= "where Customer_No == '$original_Customer_No'";


$qlab mal komplett anzeigen lassen hätte gezeigt, dass ab der 3. Zuweisung das Komma fehlt.
Beispiel: $sqlab .= "Country = '$neu_Country', ";
(lvorletzte und letzte natürlich ohne Komma)

 
Kirsten281178
15-06-2007, 10:45 
 
@Husti & Tobi

Vielen Dank für eure Hilfe. Es funktioniert jetzt.

Grüße,

Kirsten

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:43 Uhr.