PHP MYSQL Update Script problem

madirfan

Erfahrenes Mitglied
Hallo,

ich hab ein prob mit meinem update data script.
er sagt zwar dass die datn geupdated sind.. aber es aendert sich nichts..


$id = $_GET['id'];
das kann ich auch nicht auch nicht auslesen ABER


$von = $_GET['von'];
das kann ich schon..

<?php

$host = "***"; // Adresse des Datenbankservers, meistens localhost
$user = "***"; // Ihr MySQL Benutzername
$pass = "***"; // Ihr MySQL Passwort
$db = "***"; // Name der Datenbank
$id = $_GET['id'];
$von = $_GET['von'];
// Verbindung zum Datenbankserver herstellen
$link=mysql_pconnect($host, $user, $pass);
if ($link == FALSE)
{
echo "<p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden. Bitte
versuchen Sie es später noch einmal.\n";
echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
exit (); // PHP-Script beenden
}

// Datenbank auswaehlen
$dblink=mysql_select_db($db);
if ($dblink == FALSE)
{
echo "<p><b>Leider kann die Datenbank nicht geöffnet werden. Bitte
versuchen Sie es später noch einmal.\n";
echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
exit (); // PHP-Script beenden
}
$id=$_POST['id'];
$von=$_POST['von'];
$bis=$_POST['bis'];
$dauer=$_POST["dauer"];
$tm=$_POST["tm"];
$vorheriger_resturlaub=$_POST["vorheriger_resturlaub"];
$jetziger_urlaub=$_POST["jetziger_urlaub"];
$gesamt_urlaub=$_POST["gesamt_urlaub"];
$aktuell_beantragter_urlaub=$_POST["aktuell_beantragter_urlaub"];
$bereits_genommen=$_POST["bereits_genommen"];
$vorheriger_resturlaub=$_POST["vorheriger_resturlaub"];
$verfallen=$_POST["verfallen"];
$bemerkung=$_POST["bemerkung"];

$sql = "UPDATE urlaub
SET
id='$id',
von='$von',
bis='$bis',
tm='$tm',
vorheriger_resturlaub='$vorheriger_resturlaub',
jetziger_urlaub='$jetziger_urlaub',
gesamt_urlaub='$gesamt_urlaub',
aktuell_beantragter_urlaub='$aktuell_beantragter_urlaub',
jetziger_urlaub='$jetziger_urlaub',
gesamt_urlaub='$gesamt_urlaub',
aktuell_beantragter_urlaub='$aktuell_beantragter_urlaub',
bereits_genommen='$bereits_genommen',
vorheriger_resturlaub='$vorheriger_resturlaub',
verfallen='$verfallen',
bemerkung='$bemerkung'

where id='$id' AND von='$von';";

$result=mysql_query($sql);
mysql_close();

print"<p><blockquote>urlaub update: <b>$id</b> und <b>$von</b>wurde geändert.<p> </blockquote>";
?>
 
Wenn ich raten darf:
PHP:
$id = $_GET['id'];
$id=$_POST['id'];
$von = $_GET['von'];
$von = $_POST['von'];
$id und $von werden hier zweimal notiert.

//edit: Und "er" sagt, dass geupdated wurde, weil du diesen Teil:
PHP:
print"<p><blockquote>urlaub update: <b>$id</b> und <b>$von</b>wurde geändert.<p> </blockquote>";
ohne Bedinung ausführst, also nicht wie üblich nur im Erfolgsfall.

//edit2: Lass dir mal mir mysql_error() den Fehler ausgeben. Falls es einen gibt.
 
Zuletzt bearbeitet:
ja... es ist so.. ich hab ein suchscritp..
nach dem gesucht worden ist, gibts ein aendern button.. da benutze ich
eine parameteruebergabe..bzw 2 parameteruebergaben... darunter is auch $id.

wenn ich jetzt bzw ein parameter wie bis='$bis', updaten möchte, sagt der scip.. es ist DONE..aber die aenderung findet nicht statt..
 
Zeig doch mal die Teile, in denen $_GET['id'] und $_POST['id'] gefüllt werden (also die Formulare), denn wie ich schon gesagt habe:
Du weist deine Variable $id zweimal zu. Und das kann nicht funktionieren. Eine Lösung wäre du benennst einmal $id (und $von) um.
 
so fängts an..nach dem ich was gesucht habe.

show.php
<?php

$host = "++++"; // Adresse des Datenbankservers, meistens localhost
$user = "++++"; // Ihr MySQL Benutzername
$pass = "++++"; // Ihr MySQL Passwort
$db = "+++"; // Name der Datenbank
$id = $_POST['id'];

mysql_connect($host, $user, $pass);
mysql_select_db($db);

$sql = "SELECT * FROM urlaub WHERE id='$id' ";

$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}
echo '<form action=show_it.php method=post>';
echo '<table border="1">';
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
echo "<tr>";
echo "<td>". $zeile['id'] . "</td>";
echo "<td>". $zeile['von'] . "</td>";
echo "<td>". $zeile['bis'] . "</td>";
echo "<td>". $zeile['dauer'] . "</td>";
echo "<td>". $zeile['tm'] . "</td>";
echo "<td>". $zeile['vorheriger_resturlaub'] . "</td>";
echo "<td>". $zeile['jetziger_urlaub'] . "</td>";
echo "<td>". $zeile['gesamt_urlaub'] . "</td>";
echo "<td>". $zeile['bereits_genommen'] . "</td>";
echo "<td>". $zeile['verfallen'] . "</td>";
echo "<td>". $zeile['resturlaub'] . "</td>";
echo "<td>". $zeile['unterschrieft'] . "</td>";
echo "<td>". $zeile['bemerkung'] . "</td>";
echo "<td>".' <a href="show_it.php?id='.$zeile['id'].'&von='.$zeile['von'].'">Aendern</a>'. "</td>";

echo "<td>". test . "</td>";
echo "</tr>";
}
echo "</table>";
echo "</form>";
mysql_free_result( $db_erg );
?>

sobald du die ein datensatz ausgsucht auf den botton ändern geklickt hast bekommst du das:


<?php

$host = "++++"; // Adresse des Datenbankservers, meistens localhost
$user = "+++"; // Ihr MySQL Benutzername
$pass = "++++"; // Ihr MySQL Passwort
$db = "++++"; // Name der Datenbank
$id = $_GET['id'];
$von = $_GET['von'];
// Verbindung zum Datenbankserver herstellen
$link=mysql_pconnect($host, $user, $pass);
if ($link == FALSE)
{
echo "<p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden. Bitte
versuchen Sie es später noch einmal.\n";
echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
exit (); // PHP-Script beenden
}

// Datenbank auswaehlen
$dblink=mysql_select_db($db);
if ($dblink == FALSE)
{
echo "<p><b>Leider kann die Datenbank nicht geöffnet werden. Bitte
versuchen Sie es später noch einmal.\n";
echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
exit (); // PHP-Script beenden
}

$sql = "SELECT * FROM urlaub WHERE id='$id' AND von='$von';" ;
$result = mysql_query($sql);
$num = mysql_Num_Rows($result);

if ($num != 0):
?>

einige tables mit sochen parametern wie
<input type="text" name="von" value="<?php echo mysql_result($result, 0, "von");?>"
<input type="text" name="bis" value="<?php echo mysql_result($result, 0, "bis");?>" size = "13" />

sobald du ein parameter geaendert hast.. bekommt du den letzen scritp..den du oben achlesen kannst
 
Erstmal vorweg: Bitte benutz den PHP-Tag. Dann liest sich der Code gleich viel leichter.

Und wie Loomes schon gesagt hat, weist du zweimal die Variablen $id und $von zu. Einmal mit
PHP:
$id = $_GET['id'];
bzw.
PHP:
$von = $_GET['von'];
und dann kurz darauf nochmal mit
PHP:
$id = $_POST['id'];
bzw.
PHP:
$von = $_POST['von'];
.

Änder das mal ab. Denke mal das es dadran liegt.
 
Zurück