Nu ik rustig aan PHP aan het leren ben kom ik verschillende uitdagingen tegen die ik vrijwel altijd weet op te lossen door alle tutorials en reeds gestelde vragen. Nu kom ik iets tegen waar ik niet zo snel een oplossing voor weet. Dit komt uiteraard door mijn gebrek aan kennis omtrent de mogelijkheden, maar daar krijg ik hier vast antwoord op. Ik zal proberen zo duidelijk mogelijk uit te leggen:
Goed, stel je hebt een inlog systeem waarbij je in de database de volgende gegevens in een tabel opslaat: id, gebruikersnaam en e-mail. Vervolgens wil je de gebruikers een mogelijkheid geven om een profiel te creëren met bepaalde vaste waardes zoals: leeftijd, land van herkomst, hobby's etc. En daarnaast een vrij vlak waarbij iets kort kunnen neerzetten.
Mijn gedachten waren om een nieuwe tabel aan te maken waarin die waardes kunnen worden opgeslagen. Alleen hoe zorg je ervoor dat de juiste persoon ook de juiste waardes kan aanpassen. Omdat er in die nieuwe tabel geen id zit. Of is het verstandig om geen profiel tabel aan te maken, en gewoon nieuwe kolommen te creëren in de bestaande tabel? Lijkt mij op te duur wat onoverzichtelijk worden.
Bedankt voor de reacties. Ik zie al dat ik wat netter door mijn script heen moet. @frank bedankt voor je opmerkingen, ik heb zelf ook al wat slordige foutjes opgemerkt en aangepast. Ik zal inderdaad naar mijn foutafhandeling kijken.
Frank, ik heb me even verdiept in een juiste foutafhandeling alvorens ik verder probeer te gaan. er zijn veel tutorials die dit behandelen, maar ik zie door de bomen het bos niet meer. De ene is nog uitgebreider als de andere. Waar ik zelf aan dacht is wellicht wat te simpel maar ik wil dat toch even delen, alleen zo kom ik erachter of ik iets fout doe of niet.
if ($query === true){
echo('Opgeslagen!');
}else{
echo('Er is een fout!');
}
Door jullie hulp ben ik zeker verder gekomen! Heb ook al veel opmerkingen mee genomen die door verschillende mensen hier zijn aangekaart. Bedankt daarvoor.
Inmiddels heb ik een (nette)fouthandeling gemaakt waardoor ik achter het probleem ben gekomen, waardoor het script nu werkt.
Heb alleen een korte vraag, die ik naar veelvuldige proberen en zoeken nog niet heb kunnen beantwoorden.
Op dit moment kunnen mensen zich inloggen en komen op een beveiligde pagina. Daar hebben ze de optie op een profiel aan te maken. Deze kunnen ze vervolgens op een andere pagina raadplegen. Indien ze iets willen veranderen kunnen ze hun profiel updaten. Juist daar zit mijn probleem, want wanneer ze bijvoorbeeld alleen leeftijd willen updaten blijven de andere velden blanco (beschrijving, hobby etc.). Daardoor worden deze geupdate zonder waarde, en bestaande waardes worden vervangen met niks. Hoe kan ik er voor zorgen dat lege velden niet geupdate worden, maar enkel de velden waar wat is ingevuld?
Misschien een idee om de bestaande gegevens vanuit je database te laten echo-en in je input.
Bij een submit worden weer de zelfde gegevens terug gestuurd i.p.v lege waardes indien ze worden gewijzigd door de gebruiker zelf.
Meestal wordt het complete formulier getoond met alle velden direct ingevuld met de oude waarden (desnoods in een hidden input). Indien de gebruiker dan op update klikt worden alle velden weer opnieuw geschreven.
Als je echt alleen 1 veld wilt bijwerken dan wordt je update query stukken korter. bijv
UPDATE users SET name='Frank' WHERE id=26
En leeftijd updaten??? zou ik nooit doen hoor
1) Ik wordt al veel te snel oud
2) Dat kan makkelijk automatisch
3) ik vergeet dat / wil ik niet doen etc etc
[size=xsmall]Toevoeging op 30/11/2014 23:46:20:[/size]
Als je die leeftijd nou eens veranderd naar geboortedatum en je runt gewoon deze query om een kolom age in je resultaat erbij te krijgen waarin de actuele leeftijd staat:
SELECT *, TIMESTAMPDIFF(YEAR,geboortedatum,CURDATE()) AS age FROM profiel