Meerdere rijen in een database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ruben Portier

Ruben Portier

21/07/2010 12:04:38
Quote Anchor link
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!
 
PHP hulp

PHP hulp

21/11/2024 13:48:36
 
- SanThe -

- SanThe -

21/07/2010 12:08:02
Quote Anchor link
INSERT/UPDATE .... SET veld1='...', veld2='...', veld3='...' ....
 
Ruben Portier

Ruben Portier

21/07/2010 12:10:25
Quote Anchor link
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?
 
- SanThe -

- SanThe -

21/07/2010 12:12:10
Quote Anchor link
INSERT/UPDATE .... website_settings SET name='...', title='...', slogan='...' (WHERE ....)
Gewijzigd op 21/07/2010 12:39:05 door - SanThe -
 
Ruben Portier

Ruben Portier

21/07/2010 12:21:53
Quote Anchor link
ok
 
Joren de Wit

Joren de Wit

21/07/2010 12:36:14
Quote Anchor link
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.
 
- SanThe -

- SanThe -

21/07/2010 12:39:43
Quote Anchor link
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.
 
Ruben Portier

Ruben Portier

21/07/2010 21:34:22
Quote Anchor link
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.
 
Mark PHP

Mark PHP

21/07/2010 21:52:30
Quote Anchor link
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.
Gewijzigd op 21/07/2010 21:53:25 door Mark PHP
 
Ruben Portier

Ruben Portier

21/07/2010 21:55:51
Quote Anchor link
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."");
}
 
Mark PHP

Mark PHP

21/07/2010 22:00:59
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.