Formulier die herhaaldelijk wordt gebruikt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mitchel V

Mitchel V

07/12/2010 11:02:42
Quote Anchor link
Beste phpers.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
Gebruiker toevoegen<br>
Naam <input type="text" name="naam" value="<?php echo $_POST['naam']; ?>"><br>
Adres <input type="text" name="adres" value="<?php echo $_POST['adres']; ?>"><br>


Gebruiker Bewerken
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
Gebruiker toevoegen<br>
Naam <input type="text" name="naam" value="<?php echo $row['naam']; ?>"><br>
Adres <input type="text" name="adres" value="<?php echo $row['adres']; ?>"><br>


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
 
PHP hulp

PHP hulp

24/11/2024 02:35:48
 
John D

John D

07/12/2010 11:16:19
Quote Anchor link
Waarom 4 formulieren en niet 1, vertel wat de verschillen zijn?
 
Kris Peeters

Kris Peeters

07/12/2010 11:45:37
Quote Anchor link
Steek dat in een functie en return de html gewoon.
 
Mitchel V

Mitchel V

07/12/2010 11:55:27
Quote Anchor link
@john
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..
 
John D

John D

07/12/2010 12:24:13
Quote Anchor link
Een form generieker maken betekent ook variabalen gebruiken of meegeven aan een functie zoals kris voorstelt. Voorbeeld variabelen gebruiken:
sql "SELECT naam,adres,groep FROM klanten WHERE groep='".$groep."'";
 
Mitchel V

Mitchel V

08/12/2010 14:48:33
Quote Anchor link
Ik heb even een voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';


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?
 
Mitchel V

Mitchel V

10/12/2010 09:55:36
Quote Anchor link
Heeft iemand hier een oplossing voor of hoe zou jij het doen?
 
- SanThe -

- SanThe -

10/12/2010 10:09:07
Quote Anchor link
Maak een function met parameters.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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']);
?>
 
Mitchel V

Mitchel V

10/12/2010 10:39:06
Quote Anchor link
Hmm,
Wat vind je van dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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');
?>
Gewijzigd op 10/12/2010 10:39:32 door Mitchel V
 
F Loogman

F Loogman

10/12/2010 11:54:08
Quote Anchor link
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.
 
Mitchel V

Mitchel V

10/12/2010 12:28:38
Quote Anchor link
Kan je misschien een voorbeeld maken van object of globale variabele hoe je dit het beste kan doen?
 
Kris Peeters

Kris Peeters

10/12/2010 13:03:27
Quote Anchor link
Globale variabele:

voorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$a_number
= 5;

function
testfunction () {
  global $a_number;  // hiermee zeg je dat de functie de variabele buiten de functie moet zoeken.  Als je dit niet doet, heb je deze variabele niet ter beschikking
  echo $a_number;
}

?>
 
John D

John D

10/12/2010 13:19:03
Quote Anchor link
Vergeet globale variabelen! Gebruik functies met argumenten.
Geen echo en print gebruiken in functies (voor deze test is het okee ;)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$a_number
= 5;

function
testfunction ($a_number) {

  $a_number == 7;
  // test:
  echo $a_number;

return $a_number
}
?>
 
Jordi Kroon

Jordi Kroon

10/12/2010 13:24:42
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

?>
 
Pim -

Pim -

10/12/2010 14:05:27
Quote Anchor link
Ik zou het als volgt doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function userform(&$naam = null, &adres = null)
{

    return '<form><input type="text" value="'.$naam.'" name="naam" /><input type="text" value="'.$adres.'" name="adres" /></form>';
}

echo userform($_GET['naam']);
?>

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 -
 
Kris Peeters

Kris Peeters

10/12/2010 15:40:08
Quote Anchor link
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 ;)


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.
 



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.