Meerdere rijen in een database
Beste
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!
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!
Gesponsorde koppelingen:
INSERT/UPDATE .... SET veld1='...', veld2='...', veld3='...' ....
Neen, het is dus allemaal veld1 die ik wil updaten.
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?
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?
INSERT/UPDATE .... website_settings SET name='...', title='...', slogan='...' (WHERE ....)
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.
Wat jullie tonen is niet wat ik wil.
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.
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.
Natuurlijk is die niet juist. Twee keer een WHERE? Raadpleeg de handleiding voor de juiste syntax.
In dit geval zul je drie verschillende UPDATE queries moeten uitvoeren, aangezien het om meerdere rijen gaat.
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
Ja, maar het wil niet werken. Ik probeer met een for command.
$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."");
}
$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."");
}
Volgens mij pak je het helemaal verkeerd aan. Sowieso vind ik een database niet echt geschikt om instellingen in op te slaan, dat doe ik liever in PHP zelf.
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.
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.



