Door
koen willemen
op 21-01-2013 07:43
gewijzigd op 21-01-2013 07:48
1.218 views
Ik ben bezig aan een transfer stukje, dat je een auto kan verplaatsen naar een ander land.
De opmaak, een lijst met jou auto's, met de gegevens, waarde, schade en als laatste, verkoop/crush en TRANSFER optie.
Nu heb ik dit staan in de opmaak (maar 2 omdat ik het eerst werkend wil krijgen)
En dit als er gedrukt word op de pagina om ALLE auto's te transferen
$query = "SELECT * FROM garage WHERE `Gebruiker`='{$data->Gebruiker}'";
$info = mysql_query($query) or die(mysql_error());
$count = 0;
while ($gegeven = mysql_fetch_array($info)) {
$auto = mysql_fetch_object(mysql_query("SELECT * FROM `garage` WHERE `ID`='{$gegeven["ID"]}'"));
$car = mysql_query("SELECT * FROM `autos` WHERE `ID`='{$auto->IDautotype}'");
$garage = mysql_fetch_object($car);if(isset($_POST['trans']))
{$land = $_POST['land'];
mysql_query("UPDATE `garage` SET `Land`='$land' WHERE `ID`='$auto->ID'");}
Als je 1auto hebt, en je selecteerd het land en drukt op transfer, werkt dit.
Heb je meerdere auto's in je garage, update hij ALLE auto's naar het land wat je hebt geselecteerd bij de 1ste auto in je garage.
Als je andere landen aanvinkt bij andere auto's doet hij niks, enkel bij de laatste, en dan update hij ineens alles naar dat land, wat niet goed is.
Als je op transfer klikt, moet het script kijken welk land er bij welke auto geselecteerd is en dan naar daar verplaatsen.
Waarom ga je uberhaupt gegevens selecteren, als je alleen wilt updaten? Als het goed is krijg je het id van de auto die moet worden geupdate via een GET of POST variabele van de pagina waarop de gebruiker heeft aangegeven een auto te willen updaten. Dat id moet je dus gebruiken voor het updaten, de rest is allemaal overbodig.
En dan nog een vraag die eigenlijk overbodig is als je vraag 1 goed afhandelt, maar omdat ik denk dat je dezelfde constructie ook op andere plaatsen zult gebruiken:
Waarom eerst alle gegevens uit 1 tabel halen, en dan in een while loop andere gegevens erbij selecteren uit andere tabellen? Daar kennen we joins voor in SQL.
Als je de andere gegevens ook nog nodig hebt dat zal je in elk geval eerst de update moeten uitvoeren, dan pas de gegevens ophalen. Anders ziet de gebruiker de wijzigingen die hij heeft doorgevoerd niet terug op het scherm.
Hoe je het moet doen via GET, je moet zorgen dat het id van de auto dat wordt geupdate in je parameters terecht komt. Ik weet niet hoe je verdere pagina eruitziet, dus kan je niet de handigste manier geven. Meestal is het ofwel zorgen dat de link waarop geklikt wordt de parameter bevat (ik neem aan dat je wel weet hoe je een parameter in een url zet), ofwel via een hidden input in het form.
/// Einde uitvoer van query
$query = "SELECT * FROM garage WHERE `Gebruiker`='{$data->Gebruiker}'";
$info = mysql_query($query) or die(mysql_error());
$count = 0;
while ($gegeven = mysql_fetch_array($info)) {
$auto = mysql_fetch_object(mysql_query("SELECT * FROM `garage` WHERE `ID`='{$gegeven["ID"]}'"));
$car = mysql_query("SELECT * FROM `autos` WHERE `ID`='{$auto->IDautotype}'");
$garage = mysql_fetch_object($car);
if(isset($_POST["trans"])) {
$land = $_POST["land"];
$id = $gegeven["ID"];
mysql_query("UPDATE `garage` SET `Land`='$land' WHERE `ID`='$id'")
;
Alleen nu zou ik verwachten dat ergens een form staat met een submit erin om het form naar de server te sturen zodat er iets kan gebeuren. Ik zie wel een select, maar geen form en geen submit.
Hoe moet ik dat dat juist doen?
Ik heb er dit van gemaakt
<form method='trans'>
<select name='land'>
<option value='Colombia'>Colombia</option>
<option value='Cuba'>Cuba</option>
</select>
</form>
En dit er een beejte boven
if(isset($_POST["trans"])) {
$land = $_POST["land"];
$id = $_GET["ID"];
mysql_query("UPDATE `garage` SET `Land`='$land' WHERE `ID`='$id'")
;
}
Maar als hij update, zet hij een lege waarde in de DB, dus geen land?
Snap het ff niet helemaal meer..
Ik heb nu dit
if(isset($_POST["trans"])) {
$land = $_POST["land"];
$id = $_POST["auto_id"];
mysql_query("UPDATE `garage` SET `Land`='$land' WHERE `ID`='$id'")
;