PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: selbstüberschreibendes UPDATE


ooAlbert
2006-12-05, 15:17:47
Hi,

ich hab hier ein problem mit einer update funktion im SQL. Das Programm sucht nach einem bestimmten kriterium einen datensatz aus der Datenbank danach soll der komplette datensatz überschrieben werden mit neuen daten. aber irgendwie hab ich da einen denkfehler.

Ich dachte erst ich mach inerhalb der While schleife das update, da dort ja die korrekten daten schon im speicher sind aber das produziert nur einen fehler.




//Datenbank auslesen
$sql = "SELECT $_SESSION[tabelle].lehrgang_id, lehrgang_titel,
ort, termin_id, datum1, datum2
FROM $_SESSION[tabelle] JOIN $_SESSION[tabelle2]
ON ( $_SESSION[tabelle].lehrgang_id = $_SESSION[tabelle2].lehrgang_id )
ORDER BY $_SESSION[tabelle].lehrgang_id;";

$result = mysql_query($sql) OR die(mysql_error());

$i = 0;
while ($row = mysql_fetch_assoc($result)) //Hier wird der Datensatz ermittelt
{
if (($lehrgang_id == $row['lehrgang_id']) )
{
$i++;
if ($Auswahl == $i)
{
$Alt_termin_id == $row['termin_id'];
$Alt_datum1 == $row['datum1'];
$Alt_datum2 == $row['datum2'];
}
}
}

//Hier soll der Datensatz ein Update erfahren
$sql="UPDATE $_SESSION[tabelle2]
SET termin_id = '$_POST[termin_id]',
datum1 = '$_POST[datum1]',
datum2 = '$_POST[datum2]'
WHERE lehrgang_id = '.$lehrgang_id.';";

$result = mysql_query($sql) OR die(mysql_error());
?>

darph
2006-12-05, 15:59:00
Eh... mach mal eher so:

$sql = "SELECT ".$_SESSION["tabelle"].".lehrgang_id, lehrgang_titel,
ort, termin_id, datum1, datum2
FROM ".$_SESSION["tabelle"]." JOIN ".$_SESSION["tabelle2"]".
ON ( ".$_SESSION[tabelle].".lehrgang_id = ."$_SESSION["tabelle2"].".lehrgang_id )
ORDER BY ".$_SESSION["tabelle"].".lehrgang_id;";



Arrays in Strings = Schlechte Idee. Zumal du hier irgendwelche (höchstwahrscheinlich undefinierten) Konstanten als Feldnamen für das Array angibst. ;(


aber das produziert nur einen fehler Sei doch bitte ein wenig unspezifischer, das Raten macht so viel Spaß. ;(


Schöner

ooAlbert
2006-12-05, 16:21:23
das war derf ehler wenn man das sql statment für update in die whileschleife legt...

"mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ..."

ooAlbert
2006-12-06, 20:41:52
hat noch jemand eine idee zur problematik ?

darph
2006-12-07, 10:56:13
Hast du denn zwischenzeitlich deine Querystrings repariert?

Und warum kein WHERE im Query?

ooAlbert
2006-12-07, 11:05:48
deine notation ist nicht tonwendig und hat auch nichts verändert... ich würd ja gerne noch bedingungen ins das sql einfügen aber alles was greifbar ist wird ja vorher überschreiben. außer ich versteh das falsch.

Weil ich hab ja die alten werte in "$ALT ..." gespeichert... somit hätte ich ja die genauen vergleichsdaten...

darph
2006-12-07, 11:46:56
das war derf ehler wenn man das sql statment für update in die whileschleife legt...

"mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ..."
Du rufst mysql_fetch_assoc() auf einem Result Set auf, das du von einer Update-Query bekommen hast? Wie soll das gehen?

ooAlbert
2006-12-07, 12:55:51
das mußt du mal näher erklären ... scheinbar hab ich ein verständnisproblem

ne0
2006-12-07, 13:05:29
habs nur überflogen aber

if ($Auswahl == $i)
{
$Alt_termin_id == $row['termin_id'];
$Alt_datum1 == $row['datum1'];
$Alt_datum2 == $row['datum2'];
}

soll das nicht eher ne zuweisung als ein vergleich sein? = statt ==

ooAlbert
2006-12-07, 13:09:40
ja das stimmt :) irgendwie bin ichs chon betriebsblind ...