UPDATE Befehl in PHP

  • #1
K

Kuese

Aktives Mitglied
Themenersteller
Dabei seit
06.11.2002
Beiträge
30
Reaktionspunkte
0
Hallo Zame

Habe eine Abfrage einer MySql DB erstellt wo alle Einträge aufgelistet werden. Dabei ist ein Feld als Aktiv oder Passiv eingerichtet, je nachdem ob ich es in der Anzeigeseite ausgeben lassen will oder nich (logischerweise werde dort also nur alle Aktiv gestellten Einträge angezeigt). Nun bastle ich an der Adminoberfläche....wo ich wiederum erst alle Einträge anzeige (diesmal auch die Passiv gestellten) und springe dann mittels Link auf die Detailseite des betr. Datansatzes. Hier sollte man nun die Felder aus der Tabelle adressen anpassen können (auch das Feld Aktiv oder Passiv) und spinge dann retour zur vorigen Seite. Obwohl ich keine Fehlermeldung erhalte wird kein Entrag verändert...was mach ich falsch? Anbei der Codeteil(die DB Connction wird mittels Include gelöst)....Danke für Eure Hilfe

<?
$res = mysql_query(SELECT * FROM adressen, branchen, firmen, orte, images WHERE adr_ort_id=ort_id AND adr_fir_id=fir_id AND bra_id=fir_bra_id AND fir_img_id=img_id AND adr_id='$_GET[adr_id]' AND adr_status=adr_status);
$row = mysql_fetch_array($res);

if (count($_POST)>0) {
mysql_query(UPDATE adressen, firmen SET adr_status='.$row['adr_status'].', adr_name='.$row['adr_name'].', adr_vorname='.$row['adr_vorname'].', adr_tel='.$row[adr_tel].', adr_fax='.$row['adr_fax'].', adr_email='.$row['adr_email'].', adr_url='.$row['adr_url'].' WHERE adr_id='.$row['adr_id'].');
header(Location: master.php\n);
}
?>

im Body hast ein Form das mittels self_php aufgerufen wird und dort drin hats zur Abfrage passend folgende Zeilen...Beispiel:<?= $row[adr_name]; ?>
 
  • #2
Hi

Zuallererst solltest du deine MySQL Abfrage überarbeiten, die ist erheblich unperformant.
Siehe dazu die Verbindung mehrerer Tabellen über Left Joins



Dein Update Befehl bezieht sich auf mehrere Tabellen, das geht nur in MySQL 4.x und ist nicht empfehlenswert, mach lieber für jede Tabelle einen eigenen Befehl.

Nun zu deinem Problem, dass sich nichts verändert, du trägst beim Update ja auch die alten Daten die du vorher abgefragt hast wieder ein.
Du musst es natürlich mit den werten aus den Input Feldern deiner Form füllen, die bekommst du über $_POST[feldname].
Weiterhin musst du dann aber noch Sonderzeichen der Eingaben maskieren lassen, es sei denn dein PHP ist so eingestellt, dass es das automatisch macht (magig_quotes ist das glaube). Manuell ist aber besser, man weiß ja nie wie der Server eingestellt ist wo es mal läuft.
Auch gilt es jede Eingabe von außen vorher auf Korrektheit zu überprüfen.

PS: Was ich auch noch gerade sehe, &lt;? ?> solltest du auch nicht benutzen, sondern &lt;?php ?>, das ist die einzige XML konforme Schreibweise und wenn du später mal XHTML benutzen willst brauchst du nichts umschreiben.

Gruß, Michael
 
  • #3
ok...ich werde das mal ausprobieren. Was mir aber noch nicht ganz klar ist ist deine Antwort betreffend $_POST.....ich habe ja eine Seite auf der alle Datensätze aufgelistet werden und ich mittels Klick auf den Link mutieren auf die besagte Update-Seite gelange...dort lese ich alle Felder mittels <?= $row[feld_name]; ?> in ein Inputfeld...so das ich den Wert dann auch ändern kann (ueberschreiben) und mittels Klick auf den Button Aendern (name=save) wird das Form ausgeführt <?= $PHP_SELF?>....wo und wie meinst Du das mit dem $_POST[feldname]? also anstelle von SET adr_status='.$row['adr_status'].', adr_name='.$row['adr_name'].....SET adr_status='.$_POST['adr_status'].......etc..?

Danke auch für die uebrigen Tipps...werde das zu Herzen nehmen.

cu Kuese
 
  • #4
Hi

Ja so wie du es meinst muss es sein.

Gruß, Michael
 
  • #5
Hallo Michael

hmmm..hab ich...stimmt aber wohl doch noch nicht ganz alles..ich vermute die WHERE-Klausel stimmt noch nicht. Muss ich dort alle Felder angeben die ich unter SET aufgeführt habe? Wenn Ja...mit adr_id=' .$row['adr_id'].-> oder auch mit $_POST ?? Wie wird denn die ID ueberhaupt unter der WHERE angabe angegeben? Muss ich die uebrhaupt angeben? Glaube schon oder...sonst wird ja nicht der richtige Datensatz geändert.

Thx Kuese
 
  • #6
habs rausgefunden:

Habe den Fehler gefunden. War mir doch als würde etwas nicht übergeben. So wars dann auch. Obschon ich mittels mysql_query (SELECT.....erst die Feldnamen auslese und sie mittels &lt;?php echo [feldname];
?> ins Textfeld schreibe....muss auch die adr_id noch ausgegeben werden (mittels hidden feld) und dann nicht mit $row sondern ebenfalls mit $_POST der WHERE-klausel anfügen.....somit funzt es
wunderbar...;-)))
Danke dennoch für Eure Hilfe..vorallem Michael für die anderen wertvollen Tipps
 
Thema:

UPDATE Befehl in PHP

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben