abonnement Unibet Coolblue Bitvavo
pi_154655976
quote:
0s.gif Op zondag 26 juli 2015 16:45 schreef mstx het volgende:
Ik doe nu ook een projectje in Laravel. :P
Ben op basis van een bestaand stuk code bezig, zitten wel wat domme dingen in maargoed
[ afbeelding ]
:')
:P Ik haat die $_GET['page'] of varianten daarvan mensen.. gebruik gvd gewoon een router functionaliteit.
pi_154669565
quote:
14s.gif Op zondag 26 juli 2015 15:55 schreef Qunix het volgende:

[..]

Al een keuze gemaakt?
Keuzes, keuzes...

Ik werk nu met Laravel wat wel lekker gaat... Lumen is een afgeslankte versie van Laravel.

Django wil ik ook wat mee doen. Misschien het volgende project. Zoek nog wel een goeie framework in node.
Jup ik heb een keuze gemaakt en ben er tevreden over. Het is Python + Django geworden. Een verademing als je gewend bent te programmeren in PHP, want Python is naar mijn mening wel echt een betere taal ;)

Zie bijvoorbeeld code die ik voor Models heb moeten gebruiken.

DIG / [PHP/(My)SQL] voor dummies #121 Symfony yo
  dinsdag 28 juli 2015 @ 11:28:51 #253
37634 wobbel
Da WoBBeL King
pi_154699111
Ik ben nu al een tijdje aan het denken hoe ik aan de juiste start- en einddatum van een week kom. Er zijn hiervoor allerlei functies en die werken allemaal prima totdat je rond de jaarwisseling komt.

Zo is 1-1-2015 namelijk volgens het ISO 8601 formaat nog week 52 van 2014, en daar gaan alle functies dan weer mis die ik kan vinden.

Het weeknummer van de week bepaal ik in de SQL query op de volgende manier (Waarin WeekDatum een "DATE" field is met bijvoorbeeld de waarde 2015-01-01)

1
2
3
SELECT *, WEEK(WeekDatum, 3) as WeekNummer
FROM marketingtaken 
ORDER BY WeekDatum DESC
pi_154699600
quote:
0s.gif Op dinsdag 28 juli 2015 11:28 schreef wobbel het volgende:
Ik ben nu al een tijdje aan het denken hoe ik aan de juiste start- en einddatum van een week kom. Er zijn hiervoor allerlei functies en die werken allemaal prima totdat je rond de jaarwisseling komt.

Zo is 1-1-2015 namelijk volgens het ISO 8601 formaat nog week 52 van 2014, en daar gaan alle functies dan weer mis die ik kan vinden.
Als ISO 8601 niet geschikt is, welke definitie van weeknummers wil je dan wel gebruiken?

ISO 8601 zegt namelijk dat weken op maandag beginnen en dat week 1 de week is die 4 januari bevat.
1-1-2015 valt volgens die definitie wel in week 1.

Die sql functie die noemt (ik ga er even voor het gemak vanuit dat dat mysql is, week() bestaat niet in standaard sql)) zegt ook dat 1-1-2015 in week 1 valt en volgens deze vraag+antwoord op stackoverflow is dat ook precies volgens ISO 8601.
  dinsdag 28 juli 2015 @ 11:55:17 #255
37634 wobbel
Da WoBBeL King
pi_154699725
Ik krijg op 1-1-2015 echt weeknummer 52, ik gebruik dan mode 3 bij WEEK
  dinsdag 28 juli 2015 @ 11:56:26 #256
37634 wobbel
Da WoBBeL King
pi_154699751
Of houd ik mij niet goed aan de standaarden en is 1-1-2015 wel week 1?
pi_154699979
quote:
0s.gif Op dinsdag 28 juli 2015 11:55 schreef wobbel het volgende:
Ik krijg op 1-1-2015 echt weeknummer 52, ik gebruik dan mode 3 bij WEEK
Ik heb het niet uitgeprobeerd, maar als ik de documentatie van mysql lees staat er over mode 3 dit:

• First day of week: Monday
• Range: 1-53
• Week 1 is the first week with 4 or more days this year

Week beginnend op maandag zit je dan met 29, 30 en 31 december + 1, 2, 3 en 4 januari in dezelfde week: 4 of meer dagen januari, dus is dit week 1.
Weet je zeker dat mysql daar 52 uit laat komen?
  dinsdag 28 juli 2015 @ 12:52:08 #258
37634 wobbel
Da WoBBeL King
pi_154700831
quote:
0s.gif Op dinsdag 28 juli 2015 12:08 schreef Scarlet_Dragonfly het volgende:

[..]

Ik heb het niet uitgeprobeerd, maar als ik de documentatie van mysql lees staat er over mode 3 dit:

• First day of week: Monday
• Range: 1-53
• Week 1 is the first week with 4 or more days this year

Week beginnend op maandag zit je dan met 29, 30 en 31 december + 1, 2, 3 en 4 januari in dezelfde week: 4 of meer dagen januari, dus is dit week 1.
Weet je zeker dat mysql daar 52 uit laat komen?
Dat ligt dus aan de modus waarin je dat opvraagt. 1-1-2015 hoort week 1 te zijn en 1-1-2016 week 53, ik heb nu de juiste modus en dan kom ik er samen met DateTime() wel.
  dinsdag 28 juli 2015 @ 12:58:17 #259
37634 wobbel
Da WoBBeL King
pi_154700957
En nog even de code voor wie daar interesse in heeft:

Query

1
2
3
SELECT *, YEAR(WeekDatum) as WeekJaar, WEEK(WeekDatum, 3) as WeekNummer
FROM marketingtaken 
ORDER BY WeekDatum DESC

PHP code
1
2
3
4
5
6
7
8
9
<?php
$week_begin                                            
= new DateTime();
$week_begin->setISODate                                $MySQL_Taken_Assoc['WeekJaar'], $MySQL_Taken_Assoc['WeekNummer'] );
$week_eind                                             = new DateTime();
$week_eind->setISODate                                $MySQL_Taken_Assoc['WeekJaar'], $MySQL_Taken_Assoc['WeekNummer'], );        

echo 
$week_begin->format"d-m-Y" );
echo 
$week_eind->format"d-m-Y" );
?>

So far so good, lijkt allemaal te kloppen :)
pi_154710581
Ik heb nu toch wat ruzie met Symfony en ben benieuwd of iemand een oplossing heeft.

Sommige dingen zijn best tricky als je niet met Doctrine werkt. Zo heb ik bijvoorbeeld een connectie met een SAP-database, maar deze wil ik niet via een ORM doen. Vooral omdat er absoluut geen wijzigingen gedaan mogen worden aan de database, enkel het ophalen (ja, ik weet dat je dat ook met rechten kan doen, maar helaas heb ik niet de mogelijkheid dat te doen). Daarnaast is de database niet zo goed ingericht en heb ik dus niet echt de vrijheid om het goed in te richten. Dus een ORM valt af.

Nu zit ik met het volgende probleem. Ik heb een form en daarin wil ik keuzes weergeven die in de SAP-database staan. Appeltje eitje zou je zeggen, maar de 'entity' type werkt alleen op Doctrine-entities.

Daarom heb ik gebruik gemaakt van choices.

Daarin is er een optie genaamd choice_list. Helaas is dit deprecated, maar zie ik niet zo snel een alternatief. https://github.com/symfon(...)ObjectChoiceList.php

Deze kun je makkelijk een object geven en de velden die moeten worden gebruikt worden als 'value' en als tekst. Precies wat ik wil.

Nu heb ik het probleem dat als het form wordt gesubmit, dat dan vergeten wordt welke keuze is geselecteerd. Dat is dus het probleem. Hij kan de 'value' die in de SAP-database staan niet koppelen aan de tekst.
pi_154710766
quote:
0s.gif Op dinsdag 28 juli 2015 19:47 schreef robin007bond het volgende:
Nu heb ik het probleem dat als het form wordt gesubmit, dat dan vergeten wordt welke keuze is geselecteerd. Dat is dus het probleem. Hij kan de 'value' die in de SAP-database staan niet koppelen aan de tekst.
Word die value wel meegezonden als het formulier gepost wordt?
pi_154710897
quote:
2s.gif Op dinsdag 28 juli 2015 19:54 schreef Nemephis het volgende:

[..]

Word die value wel meegezonden als het formulier gepost wordt?
Jup. Die komt ook gewoon in de database terecht.

Die value is dus een foreign key die verwijst naar projecten die in SAP staan. :P De projecten haal ik wel op uit SAP, omdat daar tekst bijstaat, omdat het recent moet zijn en omdat bepaalde werknemers gekoppeld zijn aan bepaalde projecten.

[ Bericht 24% gewijzigd door #ANONIEM op 28-07-2015 20:03:01 ]
pi_154711849
quote:
1s.gif Op dinsdag 28 juli 2015 20:01 schreef robin007bond het volgende:

[..]

Jup. Die komt ook gewoon in de database terecht.

Die value is dus een foreign key die verwijst naar projecten die in SAP staan. :P De projecten haal ik wel op uit SAP, omdat daar tekst bijstaat, omdat het recent moet zijn en omdat bepaalde werknemers gekoppeld zijn aan bepaalde projecten.
Apart. Dus je hebt je value, maar de database zegt 'nee' als je de bijbehorende tekst eruit wilt trekken.
Zou het toch met die choice_list te maken hebben?
pi_154711984
quote:
2s.gif Op dinsdag 28 juli 2015 20:32 schreef Nemephis het volgende:

[..]

Apart. Dus je hebt je value, maar de database zegt 'nee' als je de bijbehorende tekst eruit wilt trekken.
Zou het toch met die choice_list te maken hebben?
Bedankt voor het meedenken. :)

Nou, die tekst haalt hij ook gewoon op de database en die wordt dus in die choice_list gestopt. Alleen als van te voren het id al is ingevuld weet hij dus niet welke van die choices is geselecteerd.

Om het te verduidelijken, de twee tabellen waar het om gaat:

de sap tabel:

- projectcode (varchar ;()
- projectbeschrijving
- etc.
- etc.

mijn urenregistratietabel:

- starttijd
- pauze
- eindttijd
- project_id -> deze verwijst naar SAP projectcode (varchar dus ;()
- etc. etc.

In mijn model van TimeRegistration is projectId dus een varchar veld, deze verwijst gewoon naar de desbetreffende kolom in de registratietabel (dus die heeft in mijn model geen relatie met de SAP-tabel, gezien deze geen Doctrine-entiteit is). Het SAP-project is een aparte entiteit maar zonder ORM-annotations. Omdat dat dus veel werk zou zijn en niet nodig is.

De desbetreffende choice_list vul ik met een array van SAP-projects om het zo maar even te zeggen. :P

Overigens weet ik ook geen goed alternatief op die ObjectChoiceList. Deze wordt deprecated, maar ik zie nergens een goede vervanger. ;(
Hij haalt alle data uit deze tabellen goed op. Ook de projectId

[ Bericht 2% gewijzigd door #ANONIEM op 28-07-2015 20:53:55 ]
pi_154715973
Ik heb een simpele vraag, mis niet relevant hier maar achja. Ik heb Zend Server om mijn php file te testen, maar kan niet in htdocs opslaan via DW. Geeft aan dat ik geen toestemming heb, kan ook niks wijzigen in de map zelf via rechtermuisknop en permissie, ik ben gewoon admin en heb gewoon alle rechten volgens mijn map. Maar ik kan wel bestanden erin zetten maar niet via DW.. Iemand een idee hoe?
pi_154716063
quote:
14s.gif Op dinsdag 28 juli 2015 22:24 schreef Doublepain het volgende:
Ik heb een simpele vraag, mis niet relevant hier maar achja. Ik heb Zend Server om mijn php file te testen, maar kan niet in htdocs opslaan via DW. Geeft aan dat ik geen toestemming heb, kan ook niks wijzigen in de map zelf via rechtermuisknop en permissie, ik ben gewoon admin en heb gewoon alle rechten volgens mijn map. Maar ik kan wel bestanden erin zetten maar niet via DW.. Iemand een idee hoe?
DW wel als administrator opgestart?
pi_154716279
quote:
1s.gif Op dinsdag 28 juli 2015 22:26 schreef Scorpie het volgende:

[..]

DW wel als administrator opgestart?
Helemaal niet over nagedacht, thx ^O^
  woensdag 29 juli 2015 @ 08:18:42 #268
37634 wobbel
Da WoBBeL King
pi_154724333
Ik heb een checkbox en een textarea, en ik wil het volgende checken: de checkbox mag aangevinkt zijn en er mag een bericht in de textarea staan, alleen de checkbox mag aangevinkt zijn of alleen de textarea mag een bericht hebben, maar helemaal leeg mag niet.

Hoe check ik dit? Met && en || kom ik er niet volgens mij. De checkbox heeft als value "yes" als hij gecheckt is.

1
2
3
<?php
!empty($_POST['bericht']) || $_POST['afgerond'] != "yes"
?>

Deze in een if-else laat mij gewoon alles leeg posten

1
2
3
<?php
!empty($_POST['bericht']) || $_POST['afgerond'] == "yes"
?>
Deze checkbox moet altijd aangevinkt zijn, ongeacht of er een bericht in staat.

1
2
3
<?php
!empty($_POST['bericht']) || !empty($_POST['afgerond'])
?>
Werkt ook niet

[ Bericht 35% gewijzigd door wobbel op 29-07-2015 08:25:49 ]
  woensdag 29 juli 2015 @ 08:35:31 #269
37634 wobbel
Da WoBBeL King
pi_154724492
Oops, ik had een tikfout, de || werkt gewoon :')
pi_154744255
Pfff nog een probleempje met Symfony. Ik wil een form meerdere keren laten voorkomen op dezelfde pagina. Echter gaat dat lastig met die form type-klasses gezien je dan duplicate ID's krijgt in je HTML. ;(

Het enige alternatief is een heel form ervan maken, maar dat wil ik helemaal niet. Dat is wel de tussenoplossing die ik nu heb, maar het is niet ideaal. :r

Het liefst wil ik:

weeks-
week - form
week - form
week - form
etc. etc.

maar nu heb ik:
weeks - form
week
week
week
etc. etc.

[ Bericht 17% gewijzigd door #ANONIEM op 29-07-2015 21:26:15 ]
pi_154744425
quote:
0s.gif Op woensdag 29 juli 2015 21:25 schreef robin007bond het volgende:
Pfff nog een probleempje met Symfony. Ik wil een form meerdere keren laten voorkomen op dezelfde pagina. Echter gaat dat lastig met die form type-klasses gezien je dan duplicate ID's krijgt in je HTML. ;(

Het enige alternatief is een heel form ervan maken, maar dat wil ik helemaal niet. Dat is wel de tussenoplossing die ik nu heb, maar het is niet ideaal. :r

* knip *
Kun je er niet wat bij in vrotten waardoor 'ie achter het ID een oplopend cijfer zet, zodat je toch unieke ID's krijgt?
pi_154744612
quote:
2s.gif Op woensdag 29 juli 2015 21:28 schreef Nemephis het volgende:

[..]

Kun je er niet wat bij in vrotten waardoor 'ie achter het ID een oplopend cijfer zet, zodat je toch unieke ID's krijgt?
Ja, dat zou kunnen, maar dan moet ik zelf die form_widget templates gaan aanpassen volgens mij.

Ik merk steeds meer dat het allemaal prima werkt als je alles volgens het boekje doet, maar als je wat meer speciale zaken hebt lijkt het alsof je al snel aan een dood spoor loopt of het op "de andere manier" moet doen.

Dat andere probleem heb ik ook nog niet kunnen oplossen. ;( En ik vind het echt poep dat iets deprecated is (ObjectChoiceList, die niet eens goed werkt blijkbaar) maar er helemaal geen documentatie is over wat het zou moeten vervangen en hoe.
pi_154744841
quote:
9s.gif Op woensdag 29 juli 2015 21:31 schreef robin007bond het volgende:

* knip *
Dat vind ik het nadeel van frameworks, dat je vaak vast zit aan de denkwijze van de ontwerpers ervan.

Wellicht is die template aanpassen toch de kortste klap, en als het goed is maakt het verder ook niet uit voor de werking op andere pagina's.
pi_154744986
quote:
2s.gif Op woensdag 29 juli 2015 21:36 schreef Nemephis het volgende:

[..]

Dat vind ik het nadeel van frameworks, dat je vaak vast zit aan de denkwijze van de ontwerpers ervan.

Wellicht is die template aanpassen toch de kortste klap, en als het goed is maakt het verder ook niet uit voor de werking op andere pagina's.
Dat is inderdaad een groot nadeel van de frameworks.

Dat zou ik kunnen doen, maar dat geeft wel overhead. Dan moet ik dus forms aanmaken in een lus, die ik naar mijn template stuur en die vervolgens ook weer allemaal valideren in een lus (al zou die enkel de gewijzigden sturen, dus wellicht dat het wel meevalt qua overheid). Maar erg handig is het niet.
pi_154745312
quote:
0s.gif Op woensdag 29 juli 2015 21:40 schreef robin007bond het volgende:

Dat zou ik kunnen doen, maar dat geeft wel overhead. Dan moet ik dus forms aanmaken in een lus, die ik naar mijn template stuur en die vervolgens ook weer allemaal valideren in een lus (al zou die enkel de gewijzigden sturen,
Je wilt sowieso meerdere formulieren die je toch al moet valideren, wat dat betreft zou het qua overhead toch geen verschil maken? Hooguit naar je template toe.

quote:
dus wellicht dat het wel meevalt qua overheid).
Het is allemaal de schuld van Rutte! :P
quote:
Maar erg handig is het niet.
Het is weer extra werk, inderdaad...
pi_154745456
quote:
2s.gif Op woensdag 29 juli 2015 21:46 schreef Nemephis het volgende:

[..]

Je wilt sowieso meerdere formulieren die je toch al moet valideren, wat dat betreft zou het qua overhead toch geen verschil maken? Hooguit naar je template toe.

[..]

Het is allemaal de schuld van Rutte! :P

[..]

Het is weer extra werk, inderdaad...
_O- Haha, grappige typfout.

Nja, ieder formulier heeft zijn eigen submit knop. Dus eigenlijk wil ik maar een formulier hoeven te valideren. Echter gaat dit gewoon niet. ;(

Misschien voor de helderheid, inmiddels heb ik het dus zo:

http://symfony.com/doc/cu(...)orm_collections.html

Een form, in een form, in een form. (Weken, week, registratie)

Ik wil dat de week apart is te submitten. :P

[ Bericht 8% gewijzigd door #ANONIEM op 29-07-2015 21:52:57 ]
pi_154746210
quote:
0s.gif Op woensdag 29 juli 2015 21:49 schreef robin007bond het volgende:

[..]

_O- Haha, grappige typfout.

Nja, ieder formulier heeft zijn eigen submit knop. Dus eigenlijk wil ik maar een formulier hoeven te valideren. Echter gaat dit gewoon niet. ;(

Misschien voor de helderheid, inmiddels heb ik het dus zo:

http://symfony.com/doc/cu(...)orm_collections.html

Een form, in een form, in een form. (Weken, week, registratie)

Ik wil dat de week apart is te submitten. :P
:P Je edit een specifieke week dan? Want ik snap je probleem niet.
Ookal stuur je een array mee, ja je moet lussen maar in die lus roep je toch gewoon de methode aan welke een enkel formulier valideert?
pi_154746451
quote:
0s.gif Op woensdag 29 juli 2015 21:49 schreef robin007bond het volgende:
Nja, ieder formulier heeft zijn eigen submit knop. Dus eigenlijk wil ik maar een formulier hoeven te valideren. Echter gaat dit gewoon niet. ;(
jQuery

quote:
Misschien voor de helderheid, inmiddels heb ik het dus zo:

http://symfony.com/doc/cu(...)orm_collections.html
Ik zie de code in php/html/JS zo voor me, zeg maar, maar ergens halverwege die template was ik like
pi_154747497
quote:
0s.gif Op woensdag 29 juli 2015 21:49 schreef robin007bond het volgende:

Een form, in een form, in een form. (Weken, week, registratie)
Zonder verder te lezen of die link te bekijken, je mag form tags in html niet nesten.
pi_154747970
quote:
0s.gif Op woensdag 29 juli 2015 22:39 schreef Light het volgende:

[..]

Zonder verder te lezen of die link te bekijken, je mag form tags in html niet nesten.
Ja da's een goeie
pi_154748454
quote:
0s.gif Op woensdag 29 juli 2015 22:39 schreef Light het volgende:

[..]

Zonder verder te lezen of die link te bekijken, je mag form tags in html niet nesten.
Symfony forms kun je wel nesten/embedden. Als je het form dan rendert wordt er één form tag gemaakt met (ook) de velden van de embedded forms erin

[ Bericht 8% gewijzigd door KomtTijd... op 29-07-2015 23:06:20 ]
pi_154756155
quote:
1s.gif Op woensdag 29 juli 2015 22:58 schreef KomtTijd... het volgende:

[..]

Symfony forms kun je wel nesten/embedden. Als je het form dan rendert wordt er één form tag gemaakt met (ook) de velden van de embedded forms erin
Klopt. Één heel groot vorm, terwijl ik allemaal aparte forms wil. ;(
pi_154756427
quote:
1s.gif Op woensdag 29 juli 2015 22:58 schreef KomtTijd... het volgende:

[..]

Symfony forms kun je wel nesten/embedden. Als je het form dan rendert wordt er één form tag gemaakt met (ook) de velden van de embedded forms erin
Dat was op zich ook wel te verwachten. Ik schrik alleen al bij voorbaat als iemand het heeft over forms in forms :)
pi_154757103
quote:
0s.gif Op donderdag 30 juli 2015 08:02 schreef Light het volgende:

[..]

Dat was op zich ook wel te verwachten. Ik schrik alleen al bij voorbaat als iemand het heeft over forms in forms :)
Maak je geen zorgen, dat wil ik ook niet. :P
pi_154772129
Nu heb ik precies hetzelfde probleem met een nieuw form bij een nieuwe template. :') Dit keer maak ik gewoon heel veel forms aan in een loop en geef ik niets om dubbele ID's.

Ja, het is niet netjes. Nee, ik weiger om mezelf aan te passen aan hoe Symfony hiermee omgaat.

Misschien dat ik een bijdrage ga leveren aan een manier om dit op een fatsoenlijke manier op te lossen.

[ Bericht 13% gewijzigd door #ANONIEM op 30-07-2015 19:54:34 ]
pi_154821956
Ik ben bijna klaar, ik moet er alleen nog voor zorgen dat het niet direct naar de database gestuurd wordt bij het laden. Even een uitleg: de pagina laadt nu zoals de onderstaande afbeelding



quote:
Daar wordt direct al info gestuurd naar de database (een lege rij is daar te zien). Vervolgens kan je het formulier invullen en wordt de ingevulde gegevens getoond, en op de juiste manier in de database geplaatst




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 <!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>

<body>

<?php include 'input.php';?>
<?php include 'toevoegen.php';?>

<h2>Testformulier</h2>
<p>Hieronder kunt u uw (of fictieve) gebruikersgegevens invullen. <br ?> 
De verstuurde gegevens ziet u onderaan en worden in een mysql database opgeslagen.<br />
<br />
<p><span class="error">* Benodigde velden.</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
   Naam: <input type="text" name="naam" value="<?php echo $naam;?>">
   <span class="error">* <?php echo $naamErr;?></span>
   <br /><br />
   E-mail: <input type="text" name="email" value="<?php echo $email;?>">
   <span class="error">* <?php echo $emailErr;?></span>
   <br /><br />
   Website: <input type="text" name="website" value="<?php echo $website;?>">
   <span class="error"><?php echo $websiteErr;?></span>
   <br /><br />
   Comment: <br />
<textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
   <br /><br />
  
   <input type="submit" name="submit" value="Submit">
</form>

<?php
echo "<h2>De door u ingevulde gegevens:</h2>"; 
echo $naam;
echo "<br />";
echo $email;
echo "<br />";
echo $website;
echo "<br />";
echo $comment;
?>

</body>
</html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
// define variables and set to empty values
$naamErr = $emailErr = $websiteErr = "";
$naam = $email = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["naam"])) {
     $naamErr = "Het invullen van een naam is noodzakelijk";
   } else {
     $naam = test_input($_POST["naam"]);
     // check if naam only contains letters and whitespace
     if (!preg_match("/^[a-zA-Z ]*$/",$naam)) {
       $naamErr = "Alleen letters en spaties zijn toegestaan";
     }
   }
  
   if (empty($_POST["email"])) {
     $emailErr = "Een e-mail adres is noodzakelijk";
   } else {
     $email = test_input($_POST["email"]);
     // check if email address is well-formed
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
       $emailErr = "Geen kloppend e-mail formaat";
     }
   }
    
   if (empty($_POST["website"])) {
     $website = "";
   } else {
     $website = test_input($_POST["website"]);
     // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
     if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
       $websiteErr = "Ongeldig websiteformaat";
     }
   }

   if (empty($_POST["comment"])) {
     $comment = "";
   } else {
     $comment = test_input($_POST["comment"]);
   }

  
}

function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}
?>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$servername = "localhost";
$username = "root";
$password = "***";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$naam=$_POST['naam'];
$email=$_POST['email'];
$website=$_POST['website'];
$comment=$_POST['comment'];

$sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment)
VALUES ('$naam', '$email', '$website', '$comment')";

if ($conn->query($sql) === TRUE) {
    echo "Succesvol toegevoegd";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?> 

Nu verwacht ik dat ik zoiets moet typen als:

if field is empty then 'niet versturen naar database' (om die lege rij niet direct te krijgen)

Maar dit krijg ik dus niet voor elkaar. Wat moet ik bij die laatste code plaatsen dat het niet direct laadt bij het openen van form.php maar pas nadat het formulier ingevuld en verzonden is gaat runnen?
Fylax is op televisie geweest
  FOK!-Schrikkelbaas zaterdag 1 augustus 2015 @ 18:18:48 #287
862 Arcee
Look closer
pi_154822087
quote:
0s.gif Op zaterdag 1 augustus 2015 18:13 schreef jodelahity het volgende:
Maar dit krijg ik dus niet voor elkaar. Wat moet ik bij die laatste code plaatsen dat het niet direct laadt bij het openen van form.php maar pas nadat het formulier ingevuld en verzonden is gaat runnen?
Een if eromheen zetten waarin je bijvoorbeeld checkt of $naam ingevuld is:

1
2
3
4
5
6
7
8
9
10
11
if ($naam!='') {
  $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment)
VALUES ('$naam', '$email', '$website', '$comment')";

if ($conn->query($sql) === TRUE) {
    echo "Succesvol toegevoegd";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

}

Of meerdere velden:

1
2
3
4
5
6
7
8
9
10
11
if ($naam!='' and $email!='' and $website!='') {
 $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment)
  VALUES ('$naam', '$email', '$website', '$comment')";

if ($conn->query($sql) === TRUE) {
    echo "Succesvol toegevoegd";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

}
Never in the entire history of calming down did anyone ever calm down after being told to calm down.
pi_154822645
Arcee dat werkt dank je, zelf ook al veel met if en else geprobeerd en if !empty enzovoort maar het steekt allemaal zo nauw :@

Weet je misschien ook een kant en klare code om als het e-mail adres niet klopt het alsnog ook niet opgeslagen wordt in de database?

Nu wordt het opgeslagen, maar ook als het e-mail adres niet correct is. De validatie ervan heb ik al wel in orde, maar nu alleen nog zorgen dat het niet in de database wordt opgeslagen als die dingen niet kloppen.
Fylax is op televisie geweest
  FOK!-Schrikkelbaas zaterdag 1 augustus 2015 @ 20:17:16 #289
862 Arcee
Look closer
pi_154824832
-edit- :s)
Never in the entire history of calming down did anyone ever calm down after being told to calm down.
pi_154824834
Met isset is het me nu gelukt om die notices weg te krijgen.

Moet alleen nog zorgen dat als de gegevens niet goed bevonden zijn (het e-mail adres klopt niet bijvoorbeeld) het niet toegevoegd wordt aan de database.

Ben daar nu nog naar aan het zoeken.
Fylax is op televisie geweest
pi_154824916
quote:
0s.gif Op zaterdag 1 augustus 2015 20:17 schreef Arcee het volgende:

[..]

Stel even dat je de validatie met de (zelfverzonnen) functie correct() doet, dan kun je zoiets doen:
[ code verwijderd ]

Je laat dus gewoon in het geval het e-mailadres niet correct is het veld email weg uit het INSERT-statement.
Oke maar het e-mail adres is verplicht, rijen zonder e-mail adres in de database is dan niet echt wat ik graag zou willen :P Wel bedankt hoor :) Maar is er ook iets mogelijk waarmee alles correct moet zijn voordat het uberhaupt naar de database gestuurd wordt?
Fylax is op televisie geweest
  FOK!-Schrikkelbaas zaterdag 1 augustus 2015 @ 20:21:04 #292
862 Arcee
Look closer
pi_154824956
quote:
0s.gif Op zaterdag 1 augustus 2015 20:19 schreef jodelahity het volgende:
Oke maar het e-mail adres is verplicht, rijen zonder e-mail adres in de database is dan niet echt wat ik graag zou willen :P Wel bedankt hoor :) Maar is er ook iets mogelijk waarmee alles correct moet zijn voordat het uberhaupt naar de database gestuurd wordt?
Ik las het ook net en had me post met verwijderd. ;)

Ja, gewoon aan die if toevoegen:

1
2
3
4
5
6
7
8
9
10
11
if ($naam!='' and $email!='' and $website!='' and correct($email)) {
 $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment)
  VALUES ('$naam', '$email', '$website', '$comment')";

if ($conn->query($sql) === TRUE) {
    echo "Succesvol toegevoegd";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

}

Even afhankelijk dus van hoe je die validatie precies geïmplementeerd hebt.
Never in the entire history of calming down did anyone ever calm down after being told to calm down.
pi_154825001
Oke laatste vraag: de website hoeft niet perse ingevuld te worden. Maar als die dat wel is dan moet dat correct zijn. Kan ik daarvoor dan ook correct($website) gebruiken?
Fylax is op televisie geweest
  FOK!-Schrikkelbaas zaterdag 1 augustus 2015 @ 20:25:48 #294
862 Arcee
Look closer
pi_154825076
quote:
0s.gif Op zaterdag 1 augustus 2015 20:22 schreef jodelahity het volgende:
Oke laatste vraag: de website hoeft niet perse ingevuld te worden. Maar als die dat wel is dan moet dat correct zijn. Kan ik daarvoor dan ook correct($website) gebruiken?
Ja, als je daar ook daadwerkelijk een dergelijke functie voor hebt of hebt gemaakt. :)

Die correct() was dus maar een (verzonnen) voorbeeld.

Zo zou het daadwerkelijk kunnen, voor email en website:

1
2
filter_var($email, FILTER_VALIDATE_EMAIL)
filter_var($website, FILTER_VALIDATE_URL)
Dus dan zou je krijgen:

1
2
3
4
5
6
7
8
9
10
11
if ($naam!='' and $email!='' and $website!='' and filter_var($email, FILTER_VALIDATE_EMAIL) and filter_var($website, FILTER_VALIDATE_URL)) {
 $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment)
  VALUES ('$naam', '$email', '$website', '$comment')";

if ($conn->query($sql) === TRUE) {
    echo "Succesvol toegevoegd";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

}


[ Bericht 10% gewijzigd door Arcee op 01-08-2015 20:39:22 (i-tje van de if was weggevallen :s)) ]
Never in the entire history of calming down did anyone ever calm down after being told to calm down.
pi_154825489
Heb daarmee dingen geprobeerd (ook 'if' in plaats van 'f' en ik kreeg nog een error bij filter_var dus daar ; na gedaan en toen was die errormelding weg) maar hij stuurt daarna niks meer naar de database (als ik filter var en die if toevoeg).

Dit is mijn huidige code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php

$servername = "localhost";
$username = "root";
$password = "***";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if(isset($_POST["submit"])) {
$naam=$_POST['naam'];
$email=$_POST['email'];
$website=$_POST['website'];
$comment=$_POST['comment'];

 $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment)
  VALUES ('$naam', '$email', '$website', '$comment')";

if ($conn->query($sql) === TRUE) {
    echo "Succesvol toegevoegd";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

}

$conn->close();

?> 

Deze stuurt de informatie door maar nog zonder validatie. Ik weet niet of de isset misschien problemen geeft? Heb die kort geleden toegevoegd om de 'notices' weg te halen.

Het onderstaande is de input.php waarin ook de validaties staan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
// define variables and set to empty values
$naamErr = $emailErr = $websiteErr = "";
$naam = $email = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["naam"])) {
     $naamErr = "Het invullen van een naam is noodzakelijk";
   } else {
     $naam = test_input($_POST["naam"]);
     // check if naam only contains letters and whitespace
     if (!preg_match("/^[a-zA-Z ]*$/",$naam)) {
       $naamErr = "Alleen letters en spaties zijn toegestaan";
     }
   }
  
   if (empty($_POST["email"])) {
     $emailErr = "Een e-mail adres is noodzakelijk";
   } else {
     $email = test_input($_POST["email"]);
     // check if email address is well-formed
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
       $emailErr = "Geen kloppend e-mail formaat";
     }
   }
    
   if (empty($_POST["website"])) {
     $website = "";
   } else {
     $website = test_input($_POST["website"]);
     // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
     if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
       $websiteErr = "Ongeldig websiteformaat";
     }
   }

   if (empty($_POST["comment"])) {
     $comment = "";
   } else {
     $comment = test_input($_POST["comment"]);
   }

  
}

function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}
?>

En toch nog maar voor de zekerheid ook gewoon het formulier

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 <!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>

<body>

<?php include 'input.php';?>
<?php include 'toevoegen.php';?>

<h2>Testformulier</h2>
<p>Hieronder kunt u uw (of fictieve) gebruikersgegevens invullen. <br ?> 
De verstuurde gegevens ziet u onderaan en worden in een mysql database opgeslagen.<br />
<br />
<p><span class="error">* Benodigde velden.</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
   Naam: <input type="text" name="naam" value="<?php echo $naam;?>">
   <span class="error">* <?php echo $naamErr;?></span>
   <br /><br />
   E-mail: <input type="text" name="email" value="<?php echo $email;?>">
   <span class="error">* <?php echo $emailErr;?></span>
   <br /><br />
   Website: <input type="text" name="website" value="<?php echo $website;?>">
   <span class="error"><?php echo $websiteErr;?></span>
   <br /><br />
   Comment: <br />
<textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
   <br /><br />
  
   <input type="submit" name="submit" value="Submit">
</form>

<?php
echo "<h2>De door u ingevulde gegevens:</h2>"; 
echo $naam;
echo "<br />";
echo $email;
echo "<br />";
echo $website;
echo "<br />";
echo $comment;
?>

</body>
</html>

Het formulier werkt gewoon



Maar in de database krijg ik dan dus ook nog invalide e-mails



Ik begrijp van je code dat het daarmee op te lossen is, ik zie zelf ook wel de logica daarvan in, alles definieren waaraan voldaan moet worden voordat het verstuurd wordt, maar ik doe blijkbaar dus toch iets fout daarbij
Fylax is op televisie geweest
  FOK!-Schrikkelbaas zaterdag 1 augustus 2015 @ 21:03:34 #296
862 Arcee
Look closer
pi_154826358
quote:
0s.gif Op zaterdag 1 augustus 2015 20:40 schreef jodelahity het volgende:
Ik begrijp van je code dat het daarmee op te lossen is, ik zie zelf ook wel de logica daarvan in, alles definieren waaraan voldaan moet worden voordat het verstuurd wordt, maar ik doe blijkbaar dus toch iets fout daarbij
Pas het eens als volgt aan:

Toevoegen aan je if in de eerste code: and $naamErr=='' and $emailErr=='' and $websiteErr==''

Zo dus:
1
2
3
4
5
6
if(isset($_POST["submit"]) and $naamErr=='' and $emailErr=='' and $websiteErr=='') {
$naam=$_POST['naam'];
$email=$_POST['email'];
$website=$_POST['website'];
$comment=$_POST['comment'];
...

En in het formulier de volgorde van de includes omdraaien:

1
2
<?php include 'toevoegen.php';?>
<?php include 'input.php';?>
Never in the entire history of calming down did anyone ever calm down after being told to calm down.
pi_154827667
Includes heb ik omgedraaid,

code toegevoegd als volgt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php

$servername = "localhost";
$username = "root";
$password = "***";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Onderstaande stukje heb ik toegevoegd
if(isset($_POST["submit"]) and $naamErr=='' and $emailErr=='' and $websiteErr=='') {

$naam=$_POST['naam'];
$email=$_POST['email'];
$website=$_POST['website'];
$comment=$_POST['comment'];

$sql = $conn->prepare("INSERT INTO gebruikerscompleet (naam, email, website, comment)
VALUES (?, ?, ?, ?)");
$sql->bind_param('ssss', $naam, $email, $website, $comment);

if (!$sql->execute()) {
    echo "Error: " . $sql->error;
} else {
    echo "Succesvol toegevoegd";
}

}

$conn->close();

?> 

Krijg ik deze notice



Het wordt naar de database gestuurd maar niet gevalideerd volgens de validatie die ik heb opgesteld in het andere input.php
Fylax is op televisie geweest
  FOK!-Schrikkelbaas zaterdag 1 augustus 2015 @ 21:50:39 #298
862 Arcee
Look closer
pi_154827866
quote:
0s.gif Op zaterdag 1 augustus 2015 21:41 schreef jodelahity het volgende:
Het wordt naar de database gestuurd maar niet gevalideerd volgens de validatie die ik heb opgesteld in het andere input.php
Dus je hebt een (rooie) melding achter 1 van de velden staan, maar er is toch een record toegevoegd met alle data?
Never in the entire history of calming down did anyone ever calm down after being told to calm down.
pi_154827948
CakePHP / MySQL guru's hier die een vraag willen beantwoorden over timeslotting van resultaten?
pi_154828147
quote:
0s.gif Op zaterdag 1 augustus 2015 21:50 schreef Arcee het volgende:

[..]

Dus je hebt een (rooie) melding achter 1 van de velden staan, maar er is toch een record toegevoegd met alle data?

Ja alles wordt gewoon toegevoegd. Alleen het wordt toegevoegd aan de database voordat het gevalideerd wordt. Dus ook 'test' komt als e-mail erin terwijl dat eigenlijk alleen 'test@hotmail.com' zou moeten zijn bijvoorbeeld.
Fylax is op televisie geweest
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')