Meerdere rijen in een database
Ik heb een pagina waar je 3 website-instellingen kan wijzigen. Het zijn tekst vakken.
Je hebt bv. title, slogan en maxregisterusers.
Hoe kan ik nu als ik bij de form op Opslaan klik alle 3 die instellingen laten opslaan door middel van 1 enkele query?
Of kan dat niet? En hoe zal ik het dan doen?
Alle 3 de instellingen zitten in 1 tabel genaamd website_settings.
Bedankt!
INSERT/UPDATE .... SET veld1='...', veld2='...', veld3='...' ....
Dus ik heb bv in die tabel staan:
name value
title websitenaam
slogan the best site!
En hoe kan ik nu als ik op Opslaan druk de value van bijde (title en slogan) updaten door middel van 1 query? Ik zag al op een site met een for en dan een mysql_num_rows doen om te kijken hoeveel je moet doen. Maar hoe krijg ik dan de juiste $_POST door?
Gewijzigd op 21/07/2010 12:39:05 door - SanThe -
ok
Let op dat je wel een WHERE clausule gebruikt waarin je het record specificeert dat geupdate moet worden. Doe je dat niet, dan krijgen alle records de nieuwe waarde.
Blanche PHP op 21/07/2010 12:36:14:
Let op dat je wel een WHERE clausule gebruikt waarin je het record specificeert dat geupdate moet worden. Doe je dat niet, dan krijgen alle records de nieuwe waarde.
Je hebt gelijk. ;-)
Aangepast.
Dit is het:
mysql_query("UPDATE website_settings SET value = ".$_POST['website_title']." WHERE name = website_title AND value = ".$_POST['website_slogan']." WHERE name = website_slogan");
Ik krijg helaas wel een foutmelding dat de syntax niet juist is.
handleiding voor de juiste syntax.
In dit geval zul je drie verschillende UPDATE queries moeten uitvoeren, aangezien het om meerdere rijen gaat.
Natuurlijk is die niet juist. Twee keer een WHERE? Raadpleeg de In dit geval zul je drie verschillende UPDATE queries moeten uitvoeren, aangezien het om meerdere rijen gaat.
Gewijzigd op 21/07/2010 21:53:25 door Mark PHP
$count = mysql_num_rows(mysql_query("SELECT id FROM website_settings"));
for($i = 0; $i <= $count; $i++)
{
mysql_query("UPDATE website_settings SET value = ".$_POST[$count]." WHERE id = ".$count."");
}
Als ik naar bovenstaande code kijkt vallen me een aantal dingen op:
- ID begint bij 0, dit zou in een normale database toch minimaal 1 moeten zijn,
- SQL injection,
- wat hier het nut van mysql_num_rows is ontgaat me,
- met een beetje pech worden de naam van de instelling en de waarde door elkaar gehusseld.
Kortom, ga even goed nadenken hoe dit nou precies moet en of je dat wel wil. Tip; begin bij het opbouwen van een duidelijke POST array, zodat je precies weet welke naam bij welke waarde hoort.