[PHP][SQL] Date-field, Textarea, SELECT * EXCLUDE Password
Hallo,
Ik heb 3 select inputs waarin je je geboortedatum kunt invoeren (dag:int, maand:int (index van array, januari == 0, december == 11), jaar:int).
Hoe kan ik dit naar een DATE field vertalen voor in de database?
Ook: hoe kan ik hier de dag en maand uit halen, zodat ik op een verjaardag kan controleren?
Ik heb een TEXTAREA field waarin je een persoonlijk bericht in kunt voeren. Als ik hierin op enter druk, krijg ik een enter te zien. Als ik dan dit verstuur naar de database, krijg ik daarna in de TEXTAREA ook de enters weer te zien. Echter als ik de text uit de database haal en als string laat zien, krijg ik geen enters.
Heeft iemand hier een oplossing voor?
Ook in de database (phpmyadmin) zie ik netjes de enters staan (veld ziet er ook uit als een TEXTAREA, je kunt de rechterkant en onderkant verschuiven zoals bij een TEXTAREA)
Ik heb op mijn profielpagina een enorme hoeveelheid velden uit de database nodig. Laten we zeggen, alles behalve het wachtwoord en de index; en ik erger me eigenlijk aan de enorm lange regel die daarvoor nodig is. Kan ik ook een query maken met dit idee?
Alvast bedankt
Ik heb 3 select inputs waarin je je geboortedatum kunt invoeren (dag:int, maand:int (index van array, januari == 0, december == 11), jaar:int).
Hoe kan ik dit naar een DATE field vertalen voor in de database?
Ook: hoe kan ik hier de dag en maand uit halen, zodat ik op een verjaardag kan controleren?
Ik heb een TEXTAREA field waarin je een persoonlijk bericht in kunt voeren. Als ik hierin op enter druk, krijg ik een enter te zien. Als ik dan dit verstuur naar de database, krijg ik daarna in de TEXTAREA ook de enters weer te zien. Echter als ik de text uit de database haal en als string laat zien, krijg ik geen enters.
Heeft iemand hier een oplossing voor?
Ook in de database (phpmyadmin) zie ik netjes de enters staan (veld ziet er ook uit als een TEXTAREA, je kunt de rechterkant en onderkant verschuiven zoals bij een TEXTAREA)
Ik heb op mijn profielpagina een enorme hoeveelheid velden uit de database nodig. Laten we zeggen, alles behalve het wachtwoord en de index; en ik erger me eigenlijk aan de enorm lange regel die daarvoor nodig is. Kan ik ook een query maken met dit idee?
Alvast bedankt
Kijk eens naar nl2br().
En waar is de beveiliging?
... WHERE Username = '".$_GET['u']."' .... is lek.
En waar is de beveiliging?
... WHERE Username = '".$_GET['u']."' .... is lek.
Niet helemaal lek, ik controleer daarvoor, aan het begin van het script, of de gebruiker 'u' ook echt bestaat. Zo niet, dan gooi ik 'm ergens anders heen (volgens mij vorige pagina).
Ik heb echter al uitgevogeld hoe ik de datum goed in de database krijg, ik was de enkele aanhalingstekens vergeten *facepalm*
Als ik dan de dag en maand wil hebben, gebruik ik dan explode("-") ? (er moet daar ergens nog de variabele meegegeven worden, I know)
EDIT: nl2br() doet exact wat ik wil. Bedankt!
MOAR EDIT: explode werkt ook.
Note to self: jmd als mdj interpreteren gaat enorm kapot (iemand in 1985 is schijnbaar 44jaar oud?)
Ik heb echter al uitgevogeld hoe ik de datum goed in de database krijg, ik was de enkele aanhalingstekens vergeten *facepalm*
Als ik dan de dag en maand wil hebben, gebruik ik dan explode("-") ? (er moet daar ergens nog de variabele meegegeven worden, I know)
EDIT: nl2br() doet exact wat ik wil. Bedankt!
MOAR EDIT: explode werkt ook.
Note to self: jmd als mdj interpreteren gaat enorm kapot (iemand in 1985 is schijnbaar 44jaar oud?)
Gewijzigd op 23/07/2014 14:56:00 door Kevin Zegikniet
Kevin Zegikniet op 23/07/2014 14:05:12:
en ik erger me eigenlijk aan de enorm lange regel die daarvoor nodig is.
Wat let je om het over meerdere regels te verdelen? Een php script schrijf je ook niet op 1 regel.
@Erwin, klopt. Maar om nou al die velden behalve 3 ofzo te fetchen, vind ik wel heel veel informatie.
En qua schoonheid van het script, lijkt het me ook mooier om een paar velden te excluden, als alles te includen (wat je normaal doet).
En qua schoonheid van het script, lijkt het me ook mooier om een paar velden te excluden, als alles te includen (wat je normaal doet).
"Mooi" heb ik persoonlijk niets mee, een script moet werken en toekomstvast zijn. De meeste redenen waarom je geen * in je query moet gebruiken zouden ook nog gelden als je opeens * EXCLUDE of iets dergelijks zou kunnen gebruiken. Dus zelfs als die optie er is (wat volgens mij niet het geval is), zou ik het nog steeds afraden om te gebruiken.
Erwin H op 23/07/2014 15:04:49:
"Mooi" heb ik persoonlijk niets mee, een script moet werken en toekomstvast zijn. De meeste redenen waarom je geen * in je query moet gebruiken zouden ook nog gelden als je opeens * EXCLUDE of iets dergelijks zou kunnen gebruiken. Dus zelfs als die optie er is (wat volgens mij niet het geval is), zou ik het nog steeds afraden om te gebruiken.
Oke, blijkbaar is * gebruiken totaal not done.
In dat geval zijn al mn vragen beantwoord, en kan er een slotje op.
Voor toekomstige bekijkers zal ik even mijn oplossingen hier neerzetten:
Date-field: zorg dat je de datum (in de goede format) wel tussen aanhalingstekens zet:
'1985-05-14'
is niet hetzelfde als
1985-05-14 (wat wordt verbeterd naar 0000-00-00).
Dag (en maand) eruit halen:
Code (php)
1
2
3
4
2
3
4
$birthday = "1985-05-14";
$birthday = explode( "-", $birthday);
$dag = $birthday[2];
$maand = $birthday[1];
$birthday = explode( "-", $birthday);
$dag = $birthday[2];
$maand = $birthday[1];
TEXTAREA enters zien bij een String echo:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$voorbeeld = "Administrators
Gotta
Administrate";
echo $voorbeeld;
echo "<br> --- <br>";
echo nl2br($voorbeeld);
Gotta
Administrate";
echo $voorbeeld;
echo "<br> --- <br>";
echo nl2br($voorbeeld);
print:
EXCLUDE:
Het gebruiken van de asterix (*) in SQL-queries wordt ten zeerste afgeraden.
Kevin Zegikniet op 23/07/2014 15:47:37:
Of MySQL functies ervoor gebruiken:
Kevin Zegikniet op 23/07/2014 15:47:37:
Date-field: zorg dat je de datum (in de goede format) wel tussen aanhalingstekens zet:
'1985-05-14'
is niet hetzelfde als
1985-05-14 (wat wordt verbeterd naar 0000-00-00).
'1985-05-14'
is niet hetzelfde als
1985-05-14 (wat wordt verbeterd naar 0000-00-00).
Logisch.
Zonder de aanhalingstekens zijn het getallen.
En 1985-05-14 is dan voor mysql gewoon 1966 en dat is geen datum.
Erwin H op 23/07/2014 16:07:13:
DAY i.p.v DATE
of php's datetime gebruiken
aangenomen dat je ergens $row = ...fetch_assoc() gebruikt:
aangenomen dat je ergens $row = ...fetch_assoc() gebruikt:
Code (php)
1
2
3
4
5
2
3
4
5
<?php $datum = new datetime($row['geboortedatum']);
echo 'de maand is '. $datum->format('m');
?>
echo 'de maand is '. $datum->format('m');
?>




