thyphoon Posted September 21, 2004 Report Share Posted September 21, 2004 Hallo, habe gerade angefangen PHP zu lernen und habe mir hierf?r das Buch "Einstieg in PHP 5" gekauft. Kann ich nur jedem Empfehlen der mit PHP anfangen will. Naja jetzt kommt mein Problem. Ich habe angefangen mir ein Formular zu erstellen, mit dem es leichter ist die Preise und den Status der Produkte im XTC Shop zu ?berarbeiten. Da ich erst mal ausprobieren wollte ob es funktioniert, um nicht die SQL Datenbank von XTC zu zerlegen, habe ich das ganze an einer einfachen Datenbank mit Adressdaten ausprobiert. Hier funktioniert das Ganze. Aber wenn ich das Ganze jetzt auf die XTC Datenbank umschreibe und anwende werden die ?nderungen nicht gespeicht. Noch eins zur Funktion man soll die M?glichkeit haben erst die ?nderungen zu machen und dann am schluss alles auf einmal zu speichern und nicht jeden Artikel einzeln wie im XTC Shop (Dies ist n?mlich sehr l??tig, wenn man viele Artikel auf einmal ?ndern muss). Der PHP Code sieht wie folg aus. <?php // Verbindung $host = "localhost"; $user = "admin"; $pass = ""; mysql_connect($host,$user,$pass); mysql_select_db("shop"); /* Datens?tze ?ndern */ $res = mysql_query("select * from products"); while ($dsatz = mysql_fetch_assoc($res)) { $id = $dsatz["products_id"]; $sqlab = "update products set products_price = '$pr[$id]', "; $sqlab .= " products_status = '$st[$id]',"; $sqlab .= " where products_id = $id"; mysql_query($sqlab); } /* Formular-Beginn */ echo "<form action='xtc_update.php' method='post'>"; /* Tabellen-Beginn */ echo "<table>"; echo "<tr><td>Produkt ID</td><td>Artnr.</td>"; echo "<td>Preis</td><td>Status</td></tr>"; /* Anzeigen */ $res = mysql_query("select * from products order by products_model asc"); /* Alle vorhandenen Datens?tze */ while ($dsatz = mysql_fetch_assoc($res)) { $id = $dsatz["products_id"]; echo "<tr>"; echo "<td>$id</td>"; echo "<td>". $dsatz["products_model"] . "</td>"; echo "<td><input name='pr[$id]' value='" . $dsatz["products_price"] . "' size='10'></td>"; echo "<td><input name='st[$id]' value='" . $dsatz["products_status"] . "' size='10'></td>"; echo "</tr>"; } echo "<tr>"; echo "<td><input type='submit' value='Speichern'></td>"; echo "<td><input type='reset'></td>"; echo "</tr>"; echo "</table></form>"; ?> An was kann das Ganze liegen, dass die Daten nicht gespeichert werden? Oder hat jemand eine andere L?sung? Vielen Dank im Voraus f?r eure Hilfe. Gruss thyphoon Link to comment Share on other sites More sharing options...
manicon Posted September 21, 2004 Report Share Posted September 21, 2004 bin mir zwar nicht sicher aber k?nnte daran liegen: $sqlab .= " where products_id = $id"; -----------------------------------^ muss entweder "==" oder sowas stehen, oder? Link to comment Share on other sites More sharing options...
manicon Posted September 21, 2004 Report Share Posted September 21, 2004 oh, nein, da hab ich doch was bl?des geschrieben :pst: :abgelehnt: Link to comment Share on other sites More sharing options...
manicon Posted September 21, 2004 Report Share Posted September 21, 2004 und ich w?rde dir das while ($dsatz = mysql_fetch_assoc($res)) { $id = $dsatz["products_id"]; $sqlab = "update products set products_price = '$pr[$id]', "; $sqlab .= " products_status = '$st[$id]',"; $sqlab .= " where products_id = $id"; mysql_query($sqlab); } nur dann ausf?hren, wenn du auch die daten vom formular abgeschickt hast, also ung. so: if($_REAQUEST["Speichern"]) while ($dsatz = mysql_fetch_assoc($res)) { $id = $dsatz["products_id"]; $sqlab = "update products set products_price = '$pr[$id]', "; $sqlab .= " products_status = '$st[$id]',"; $sqlab .= " where products_id = $id"; mysql_query($sqlab); } Link to comment Share on other sites More sharing options...
thyphoon Posted September 21, 2004 Author Report Share Posted September 21, 2004 Hallo, danke f?r die schnelle Antwort. Habe es mal so ?bernommen aber das eigentliche Problem hat ich immer noch. Kann es vieleicht mit der Datenbank zusammen h?ngen, dass man vieleicht bei der XTC Datenbank das nicht so einfach ?ber externen Zugriff ?ndern kann? Hab n?mlich auch schon mehrere Wege probiert. Leider kenn ich mich aber nicht ganz so gut mit Datenbankstruktur von XTC aus. Aber wenn jemand eine L?sung hat w?re ich sehr dankbar. Gruss thyphoon Link to comment Share on other sites More sharing options...
manicon Posted September 21, 2004 Report Share Posted September 21, 2004 mh, denke nicht, dass das mit der datenbank zu tun hat... probiere einfach ein query im phpmyadmin auszuf?hren: update products set products_price = 1, products_status = 1 where products_id = 1; und gucke, ob fehlermeldung ausgespuckt wird... Link to comment Share on other sites More sharing options...
thyphoon Posted September 21, 2004 Author Report Share Posted September 21, 2004 Hallo, ich hab den Fehler selbst gefunden. Und zwar hab ich in der Variable $sqlab ein Komma zu viel gemacht. Die funktionsf?hige Datei sieht wie folgt aus. <?php // Verbindung $host = "localhost"; $user = ""; $pass = ""; mysql_connect($host,$user,$pass); mysql_select_db("shop"); /* Datens?tze ?ndern */ $res = mysql_query("select * from products order by products_model asc"); while ($dsatz = mysql_fetch_assoc($res)) { $id = $dsatz["products_id"]; $sqlab = "update products set products_price = $pr[$id], "; $sqlab .= " products_status = $st[$id]"; $sqlab .= " where products_id = $id"; mysql_query($sqlab); } /* Formular-Beginn */ echo "<form action='xtc_update.php' method='post'>"; /* Tabellen-Beginn */ echo "<table>"; echo "<tr><td>Produkt ID</td><td>Artnr.</td>"; echo "<td>Preis</td><td>Status</td></tr>"; /* Anzeigen */ $res = mysql_query("select * from products order by products_model asc"); /* Alle vorhandenen Datens?tze */ while ($dsatz = mysql_fetch_assoc($res)) { $id = $dsatz["products_id"]; echo "<tr>"; echo "<td>$id</td>"; echo "<td>". $dsatz["products_model"] . "</td>"; echo "<td><input name='pr[$id]' value='" . $dsatz["products_price"] . "' size='10'></td>"; echo "<td><input name='st[$id]' value='" . $dsatz["products_status"] . "' size='10'></td>"; echo "</tr>"; } echo "<tr>"; echo "<td><input type='submit' value='Speichern'></td>"; echo "<td><input type='reset'></td>"; echo "</tr>"; echo "</table></form>"; ?> Ich hofe irgendjemand kann es gebrauchen. Man kann damit nat?rlich alle anderen Daten auch pflegen. Bitte nicht vergessen die Zugangsdaten f?r die mysql Datenbank zu ?ndern oder ein "include" Verweis ein zu bauen. Gruss thyphoon Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.