Formulier die herhaaldelijk wordt gebruikt
Ik begin me te ergeren aan formuliertjes die 4x terug komen in de hele website.
Want ik heb 4x het formulier moeten kopiëren voor de betreffende pagina.
Ik wil weten of iemand een manier heeft zodat ik een formulier 1 keer hoef te maken.
en dat ik het kan inporteren, maar hoe kan ik dat het beste toe passen?
ik heb bv
Nieuwe gebruiker
Code (php)
Gebruiker Bewerken
Code (php)
Dit is even een simpel voorbeeld, maar voor een applicatie die ik aan het maken ben moet ik 2x werkorder bewerken 2x werkorder toevoegen 3x werkorder weergeven
Dus ik ben benieuwd hoe ik dit het beste kan toepassen.
Want als ik 1 ding verander in een form wil ik het overal veranderen.
Bedankt
Waarom 4 formulieren en niet 1, vertel wat de verschillen zijn?
Steek dat in een functie en return de html gewoon.
Het is ook de bedoeling dat het 1 wordt.
Wordt er ook gek van dat als ik 1 ding moet aanpassen dat ik dan 4 formulieren moet aanpassen.
vandaar deze topic.
@kris
Gewoon?
En hoe doe je dat uit lezen met sql dan?
ook de sql in de functie doen?
Want als je 1 formulier wilt, met 2 verschillende querys?
sql "SELECT naam,adres,groep FROM klanten WHERE groep='1'";
of
sql "SELECT naam,adres,groep FROM klanten WHERE groep='2'";
en de sql kan dus variëren..
sql "SELECT naam,adres,groep FROM klanten WHERE groep='".$groep."'";
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$formulier = '<table>
<tr><b>Voornaam</b></td><td><input type="text" name="voornaam" value=""></td></tr>
<tr><b>Tussenvoegsels</b></td><td><input type="text" name="tussenvoegsels" value=""></td></tr>
<tr><b>Achternaam</b></td><td><input type="text" name="achternaam" value=""></td></tr>
<tr><b>E-Mail</b></td><td><input type="text" name="email" value=""></td></tr>
<tr><b>Tel nr.</b></td><td><input type="text" name="tel" value=""></td></tr>
</table>';
<tr><b>Voornaam</b></td><td><input type="text" name="voornaam" value=""></td></tr>
<tr><b>Tussenvoegsels</b></td><td><input type="text" name="tussenvoegsels" value=""></td></tr>
<tr><b>Achternaam</b></td><td><input type="text" name="achternaam" value=""></td></tr>
<tr><b>E-Mail</b></td><td><input type="text" name="email" value=""></td></tr>
<tr><b>Tel nr.</b></td><td><input type="text" name="tel" value=""></td></tr>
</table>';
voor het bewerken moet value="'.$row['iets'].'" en voor nieuw moet het value="'.$_POST['iets'].'"
Hoe kan ik dit dan volgens jullie het beste doen?
Heeft iemand hier een oplossing voor of hoe zou jij het doen?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
function formulier($naam)
{
echo '<input type="text" name="naam" value="' . $naam . '">';
}
// aanroep
formulier($_POST['naam']);
formulier($row['naam']);
?>
function formulier($naam)
{
echo '<input type="text" name="naam" value="' . $naam . '">';
}
// aanroep
formulier($_POST['naam']);
formulier($row['naam']);
?>
Wat vind je van dit:
Code (php)
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
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
<?php
function FormNewUser($method)
{
if($method == 'nieuw'){
$titel = 'Nieuwe gebruiker';
$submit = 'Toevoegen';
$voornaam = $_POST['voornaam'];
$tussenvoegsels = $_POST['tussenvoegsels'];
$achternaam = $_POST['achternaam'];
$adres = $_POST['adres'];
$postcode = $_POST['postcode'];
$plaats = $_POST['plaats'];
$land = $_POST['land'];
}else if($method == 'bewerken'){
$titel = 'Bewerk gebruiker';
$submit = 'Bewerken';
$voornaam = $row['voornaam'];
$tussenvoegsels = $row['tussenvoegsels'];
$achternaam = $row['achternaam'];
$adres = $row['adres'];
$postcode = $row['postcode'];
$plaats = $row['plaats'];
$land = $row['land'];
}
echo '<form method="POST"><table>
<tr><td colspan="2"><b><u>'.$titel.'</b></u></td></tr>
<tr><td><b>Voornaam</b></td><td><input type="text" name="voornaam" value="'.$voornaam.'"></td></tr>
<tr><td><b>Tussenvoegels</b></td><td><input type="text" name="tussenvoegsels" value="'.$tussenvoegsels.'"></td></tr>
<tr><td><b>Achternaam</b></td><td><input type="text" name="achternaam" value="'.$achternaam.'"></td></tr>
<tr><td colspan="2"><u>Adres gegevens</u></td></tr>
<tr><td><b>Adres</b></td><td><input type="text" name="adres" value="'.$adres.'"></td></tr>
<tr><td><b>Postcode</b></td><td><input type="text" name="postcode" value="'.$postcode.'"></td></tr>
<tr><td><b>Plaats</b></td><td><input type="text" name="plaats" value="'.$plaats.'"></td></tr>
<tr><td><b>Land</b></td><td><input type="text" name="land" value="'.$land.'"></td></tr>
<tr><td></td><td><input type="submit" value="'.$submit.'"></td></tr>
</table>
</form>';
}
// Formulier
echo FormNewUser('nieuw');
?>
function FormNewUser($method)
{
if($method == 'nieuw'){
$titel = 'Nieuwe gebruiker';
$submit = 'Toevoegen';
$voornaam = $_POST['voornaam'];
$tussenvoegsels = $_POST['tussenvoegsels'];
$achternaam = $_POST['achternaam'];
$adres = $_POST['adres'];
$postcode = $_POST['postcode'];
$plaats = $_POST['plaats'];
$land = $_POST['land'];
}else if($method == 'bewerken'){
$titel = 'Bewerk gebruiker';
$submit = 'Bewerken';
$voornaam = $row['voornaam'];
$tussenvoegsels = $row['tussenvoegsels'];
$achternaam = $row['achternaam'];
$adres = $row['adres'];
$postcode = $row['postcode'];
$plaats = $row['plaats'];
$land = $row['land'];
}
echo '<form method="POST"><table>
<tr><td colspan="2"><b><u>'.$titel.'</b></u></td></tr>
<tr><td><b>Voornaam</b></td><td><input type="text" name="voornaam" value="'.$voornaam.'"></td></tr>
<tr><td><b>Tussenvoegels</b></td><td><input type="text" name="tussenvoegsels" value="'.$tussenvoegsels.'"></td></tr>
<tr><td><b>Achternaam</b></td><td><input type="text" name="achternaam" value="'.$achternaam.'"></td></tr>
<tr><td colspan="2"><u>Adres gegevens</u></td></tr>
<tr><td><b>Adres</b></td><td><input type="text" name="adres" value="'.$adres.'"></td></tr>
<tr><td><b>Postcode</b></td><td><input type="text" name="postcode" value="'.$postcode.'"></td></tr>
<tr><td><b>Plaats</b></td><td><input type="text" name="plaats" value="'.$plaats.'"></td></tr>
<tr><td><b>Land</b></td><td><input type="text" name="land" value="'.$land.'"></td></tr>
<tr><td></td><td><input type="submit" value="'.$submit.'"></td></tr>
</table>
</form>';
}
// Formulier
echo FormNewUser('nieuw');
?>
Gewijzigd op 10/12/2010 10:39:32 door Mitchel V
Ik zou geen functie maken van de FormNewUser, maar de PHP gebruiken als een widget; zodat includen ook weergeven impliceert. Voor een correcte weergave van de gegevens als method en action en naw gegevens, zou ik dan weer niet de globale variable $_POST gebruiken, maar een object, of andere globale variabele(array). Verder lijkt me je aanpak prima. Als je echter veel van dit soort problemen tegenkomt zou je moeten kijken naar een standaard framework zoals Zend Framework.
Kan je misschien een voorbeeld maken van object of globale variabele hoe je dit het beste kan doen?
voorbeeld
Geen echo en print gebruiken in functies (voor deze test is het okee ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function form() {
Echo '
# je formulierformulier
';
}
# waar het formulier moet komen
form();
# waar het nog een keer moet komen
# form();
# ga zo maar door
?>
function form() {
Echo '
# je formulierformulier
';
}
# waar het formulier moet komen
form();
# waar het nog een keer moet komen
# form();
# ga zo maar door
?>
Code (php)
Een aantal wijzigingen op het script van SanThe:
Return ipv echo, scheiding van verantwoordelijkheden
Referenties (&), als het argument niet bestaat geeft dat geen error (enigzins dirty, kan je ook weghalen)
Default (null), geeft je de mogelijkheid alleen bepaalde argumenten te geven
Gewijzigd op 10/12/2010 14:07:35 door Pim -
John D op 10/12/2010 13:19:03:
Vergeet globale variabelen! Gebruik functies met argumenten.
Geen echo en print gebruiken in functies (voor deze test is het okee ;)
Geen echo en print gebruiken in functies (voor deze test is het okee ;)
Er zijn toch wel omstandigheden waarbij globals nuttig kunnen zijn.
Ik zeg maar wat: je maakt helemaal in het begin een database connectie, maar dan met pdo. Dan heb je dus een pdo object.
Als je geen zin hebt om in al je functies dat object mee te geven; mee te sleuren in functies die andere functies aanroepen die mySQL nodig hebben, ... wel waarom niet een pdo object globaal zetten. Elke functie die dit nodig heeft, moet die maar globalen.