Übergabe von Ds über drei Seiten

uwee

Erfahrenes Mitglied
Hallo zum letzten mal heute, versprochen ;)

dies ist ein älteres Problem, was mich beschäftigt:
Szenario:
Ich möchte Ds in meiner MySQL-Db über die Eingabe von Formularen ändern. Als erstes lasse ich in einem DropDown-Feld (Kombinationsfeld) alle Titel meiner Db auflisten.
Danach wird per OK-button eine andere Seite geöffnet, auf der dann ein Formular zu sehen ist. Dieses Formular beinhaltet alle Daten des Ds in INPUT-Feldern. Geholt wurden die Daten unter dem Kriterium, dass ich mit dem DropDown-Feld auf der Seite davor ausgewählt habe.
Nun kann man in diesem Formular die Einträge umschreiben. Bis dahin funktioniert alles tadellos.Doch wenn ich dann auf OK klicke, sollten die Daten per UPDATE geändert werden. Die Bestätigungsseite geht auf, es kommt keine Fehlermeldung, aber die Daten sind NCIHT geändert worden. Ich habe versucht mit echo $sql (Da steht der UPDATE-Befehl drin) mir diesen anzeigen zu lassen: Es wird NICHTS ausgegeben.

Soweit die beschreibung meines Vorhabens...
Nun noch die Auszüge der Quelltexte, die interessant für diese Operationen sind:

Auswahl des Titels (aenderung.php):
PHP:
[-]
<form method="post" action="aenderung_2.php">
<p>geben Sie die Informationen ein, die sie geändert haben möchten:</p>
<table border=0 cellpading=2>
<tr>
<td>
[-]
$sql="";
$result="";
$sql="SELECT id,name FROM dvd_uebersicht ".
 "WHERE name LIKE'%%%' " .
"ORDER BY name";
echo $sql;
$result=mysql_query($sql);
?>
<html><body><title>
<?php
if(!$result or !mysql_num_rows($result))
echo "Keine Ergebnisse</title></head><body link=blue vlink=blue alink=blue bgcolor=#CCCCCC><p>Keine Ergebnisse vorhanden</p>";
else {
echo "Wählen Sie den Titel aus, dessen Informationen geändert werden sollen: <select name=name>\n";
while ($row=mysql_fetch_object($result)){
echo "<option value=",$row->id," name=name>",$row->name,"</option>\n";
}
}
?>
</td>
</tr>
</table>
<input type="submit" value="Eingeben" name="eingeben"></input>
<input type="reset" value="Eingaben löschen" name="loeschen"></input>
</form>
[-]

Formular für die Änderungen (aenderung_2.php):
PHP:
[-]
<form method="post" action="aenderung_fertig.php">
<p>geben Sie die Informationen ein, die sie geändert haben möchten:</p>
<table border=0 cellpading=2>
<?php
[-]
$name=($_POST['name']);
$sql="";
$result="";
$sql="SELECT id,name,original_name,jahr,version,fsk,cat,kommentar,info,actors,quelle,fsk2,version2 FROM dvd_uebersicht ".
 "WHERE id LIKE'" .($name). "' " .
"ORDER BY id";
echo $sql;
$result=mysql_query($sql);
?>
<html><body><title>
<?php
if(!$result or !mysql_num_rows($result))
echo "Keine Ergebnisse</title></head><body link=blue vlink=blue alink=blue bgcolor=#CCCCCC><p>Keine Ergebnisse vorhanden</p>";
else {
echo "<tr><td colspan=3>Änderungen bitte in die Felder eingeben!:</td></tr>\n";
while ($row=mysql_fetch_object($result)){
echo "<tr><td><b>Name:</b></td><td><input name='id' size=50 maxLength=50 value=",$row->id," disabled>",$row->id,"</input></td></tr>
<tr><td><b>Name:</b></td><td><input name='name' size=50 maxLength=50 value='",$row->name,"'>",$row->name,"</input></td></tr>
<tr><td><b>Original-Name:</b> 	</td><td><input name='original_name' size=50 maxLength=50 value='",$row->original_name,"'>",$row->original_name,"</input></td></tr>
<tr><td><b>Jahr:</b></td><td><input name='jahr' size=50 maxLength=50 value='",$row->jahr,"'>",$row->jahr,"</input></td></tr>
<tr><td><b>Version:</b></td><td><input name='version' size=50 maxLength=50 value='",$row->version,"'>",$row->version,"</input></td></tr>
<tr><td><b>FSK:</b></td><td><input name='fsk' size=50 maxLength=50 value='",$row->fsk,"'>",$row->fsk,"</input></td></tr>
<tr><td><b>Kategorie:</b></td><td><input name='cat' size=50 maxLength=50 value='",$row->cat,"'>",$row->cat,"</input></td></tr>
<tr><td><b>Kommentar (Info):</b></td><td><input name='kommentar' size=50 maxLength=50 value='",$row->kommentar,"'>",$row->kommentar,"</input></td></tr>
<tr><td><b>Filminfo:</b></td><td><textarea name='info' cols=100 rows=15 wrap=physical>",$row->info,"</textarea></td></tr>
<tr><td><b>Quelle:</b></td><td><input name='quelle' size=50 maxLength=50 value='",$row->quelle,"'>",$row->quelle,"</input></td></tr>
<tr><td><b>Schauspieler:</b></td><td><input name='actors' size=50 maxLength=50 value='",$row->actors,"'>",$row->actors,"</input></td></tr>
<tr><td><i>FSK2:</i></td><td><input name='fsk2' size=50 maxLength=50 value='",$row->fsk2,"'>",$row->fsk2,"</input></td></tr>
<tr><td><i>Version2:</i></td><td><input name='version2' size=50 maxLength=50 value='",$row->version2,"'>",$row->version2,"</input></td></tr>\n";
}
}
?>
</td>
</tr>
</table>
<input type="submit" value="Eingeben" name="eingeben"></input>
<input type="reset" value="Eingaben löschen" name="loeschen"></input>
</form>

Übergabe der Daten an die Tabelle (aenderung_fertig.php):
PHP:
[-]
$change_id=($_POST['id']);
$change_name=($_POST['name']);
$change_original_name=$_POST['original_name'];
$change_jahr=$_POST['jahr'];
$change_version=$_POST['version'];
$change_fsk=$_POST['fsk'];
$change_cat=$_POST['cat'];
$change_kommentar=$_POST['kommentar'];
$change_info=$_POST['info'];
$change_quelle=$_POST['quelle'];
$change_actors=$_POST['actors'];
$change_fsk2=$_POST['fsk2'];
$change_version2=$_POST['version2'];
$sql="";
$result="";
if ($id!=""){
echo"<p>Es wurde soeben die von Ihnen geänderten Daten aktualisiert</p>\n";
$sql="update dvd_uebersicht set name='($change_name)' where id='($change_id)'";
}
echo $sql;
$result=mysql_query($sql);
?>
Momentan wird NUR der NAME geändert. die anderen Felder wollte ich dann per AND hinzufügen, etwa so:
PHP:
update dvd_uebersicht set name='($change_name)' AND original_name='($change_original_name)' where id='($change_id)

So, nun habt ihr alle Informationen, die ich vorliegen habe.

Das Problem habe ich auch noch bei anderen Sachen, aber das ist mein aktuelles Projekt!

UweE
 
Hast Du in der aenderung_fertig.php mal ein echo $change_id; und ein echo $change_name; gemacht? Steht da also überhaupt was drin?

redlama
 
seltsamerweise steht in der $change_id nichts drin( was sein MUSS), aber in der $change_name steht das eingegebene... dann stimmt was mit der abfrage nicht.

ich frage mich dennoch, warum $sql nicht angezeit wird..
 
in diesem teil wird geprüft, ob die $change_id leer ist:
PHP:
if ($id!=""){ 
echo"<p>Es wurde soeben die von Ihnen geänderten Daten aktualisiert</p>\n"; 
$sql="update dvd_uebersicht set name='($change_name)' where id='($change_id)'"; 
}
ich hab das jezt um dies erweitert:
PHP:
else {echo "Fehlgeschlagen";}

und siehe da - als Ausgabe kommt "Fehlgeschlagen" raus. also steht in der $change_id nichts drin, also wurde der Wert der Id nicht von aenderung_2.php übergeben. nur warum nciht?
 
wenn du in Mysql einen query absetzt dann hast du gleichzeitig die möglichkeit mit die() bei einem vorhandenen Fehler dir diesen auszugeben

am besten ziehste das mal in deinem Script nach
entweder du bekommst keinen Fehler dann werd ich nochmal genauer reinschauen
falls du einen bekommst weißte auch wo der Fehler ist :-)


bs:
PHP:
result=mysql_query($sql) or die("SQL_ERROR:<br>SELECT fehlgeschlagen<br>".mysql_error());

$result=mysql_query($sql) or die("SQL_ERROR:<br>UPDATE fehlgeschlagen<br>".mysql_error());


ich frag mich aber wieso du die werde in klammern schreibst
PHP:
$sql="update dvd_uebersicht set name='($change_name)' where id='($change_id)'";
 
Zuletzt bearbeitet:
Kann es sein, dass Du in der aenderung_2.php was vergessen hast?
Schau mal auf das <input name='id' ...
Ich wette, Du entdeckst den Fehler von selbst.

redlama
 
Die Antwort des Servers:

SQL_ERROR:
UPDATE fehlgeschlagen
Query was empty

So, was sagt mir das jetzt?

Anweisungen sind leer. Also wird die SQL-Anweisung mit Update nicht ausgeführt:

PHP:
$sql="update dvd_uebersicht set name='($change_name)' where id='($change_id)'";

WO ist denn da der Fehler?!
 
hab den fehler gefunden, auf den redlama mich hingewiesen hat. leider wird die id trotz alledem nicht ausgegeben (@redlama: in der pn isses falsch, hab mich verguckt!)

da steht jetzt:

Fehlgeschlagen
testwert2
SQL_ERROR:
SELECT fehlgeschlagen
Query was empty


stehen müsste aber:

Fehlgeschlagen
SQL-Anweisung
251
testwert2

und das nicht:
SQL_ERROR:
SELECT fehlgeschlagen
Query was empty
 
Zuletzt bearbeitet:
uwee hat gesagt.:
PHP:
$sql="update dvd_uebersicht set name='($change_name)' where id='($change_id)'";
Das würde ich so schreiben:
PHP:
$sql="update dvd_uebersicht set name='".$change_name."' where id='".$change_id."'";

redlama
 
Zurück