arrays en arrays

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis WhoCares

Dennis WhoCares

09/01/2013 09:11:48
Quote Anchor link
Goede morgen allen,
zoals eerder ben ik bezig met arrays om voorlopig een formcontrole te maken.
Dit gaat geweldig. Het gaat als volgt:
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
if(isset($_POST['register'])) {
    $checkarray = "reg_naam" => "Uw naam",
        "reg_username" => "Gebruikersnaam",
        "reg_password" => "Wachtwoord");
    if(checkForm($checkarray)=="") {
        header(volgende pagina);
    } else {
        echo checkForm($checkarray);
        header(vorige pagina);
    }
}

//Checkform ziet er ongeveer als volgt uit
function checkForm($value) {
    $error = array();
    foreach($value as $formkey => $description) {
        if($_POST[$formkey]==""){
            $error[] = "<li>U heeft " . $description . " niet ingeuld!</li>";
        }
    }
    if(empty($error)) {
        return "";
    } else {
        return "<ul> . implode($error) . "</ul>";
}


Nou ben ik niet helemaal in de arrays maar het is toch een hele verbetering sins mijn eerste opzet.

Nou zit ik met het volgende:
Ik wil naast omschrijving van de formkey ook een waarde meegeven dat de formkey MOET zijn ingevuld.
Zegmaar 1 of 0
en vervolgens in de functie controleren of $must == 1 dan controleren en zonodig error geven
en 0 gewoon doorgaan zonder error

Nou probeerde ik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
$checkarray("reg_naam" => "Uw naam" => 0,
        "reg_username" => "Gebruikersnaam" => 1,
        "reg_password" => "Wachtwoord" => 1);

//End de functie
function checkForm($value) {
    foreach($value as $formkey => $description => $must) {
        ...
    }
...
}


Nou zullen sommige wel met een glimlach zitten dat het niet werkt, Nee klopt! :-$
Ik heb gelezen dat ik zegmaar, array in array moet maken.
Zit ik an nog steeds met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
foreach($value as $nextarray) {
    foreach($nextarray as => $must) {
    }
}


Of zie ik dit nou verkeerd?
Graag een klein duwtje de goede richting op :)
 
PHP hulp

PHP hulp

23/01/2020 11:16:40
 
No One

No One

09/01/2013 09:14:36
Quote Anchor link
ik zou gaan voor multidimensionale arrays.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$checkarray = array(
        "reg_naam" => array("description"=>"Uw naam", "required"=> 0),
        "reg_username" => array("description"=>"Gebruikersnaam", "required"=> 1),
        "reg_password" => array("description"=>"Wachtwoord" "required"=> 1)
);

en dan kan je het zo ophalen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
    echo $checkarray["reg_naam"]["description"];
    echo $checkarray["reg_naam"]["required"];

en een foreach loop

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
foreach($checkarray as $key=>$subarray){
    if($subarray['required']==1){
        echo $subarray['description']." is required"!
    }
}
Gewijzigd op 09/01/2013 09:20:26 door No One
 
Moose -

Moose -

09/01/2013 09:19:24
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
else {
        echo checkForm($checkarray);
        header(vorige pagina);
    }


Dat gaat nooit werken, dan krijg je een headers already sent error. Zie: http://php.net/manual/en/function.header.php

Ook is het zeer lelijk om eerst op checkForm te checken, en daarna te echo'n. Nu ga je twee keer die functie aanroepen, dat kan zeker beter. Bijvoorbeeld

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$check = checkForm($checkarray);
if ($check == '') { // doe iets
} else {
    echo $check;
}
 
Dennis WhoCares

Dennis WhoCares

09/01/2013 09:20:23
Quote Anchor link
Juist No One, goede morgen trouwens ;D dat bedoelde ik dus, array in de array, alleen ik zit dan met de functie checkForm hoe moet ik dat het beste aanpakken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
foreach($array as $formkey => $nextarray){
    foreach($nextarray as $description => $required){
        if($required == 1) {
echo $formkey "->" $descriptiong " = " $required


sorry dat ik niet alles opnieuw schrijf, hopelijk snap je wat ik bedoel
 
No One

No One

09/01/2013 09:21:27
Quote Anchor link
ah..heb ik net in mijn vorige post er bij geplakt ;)
 
Dennis WhoCares

Dennis WhoCares

09/01/2013 09:21:39
Quote Anchor link
@moose, ik zei al, het ziet er ongeveer zo uit :)
Ik gebruik eigenlijk meta tag om te redirecten, omdat ik juist met het probleem headers already send zit..
Misschien weet je daar een betere oplossing voor? Zou ook toppie zijn :)

No One op 09/01/2013 09:21:27:
ah..heb ik net in mijn vorige post er bij geplakt ;)


Ow haha sorry :P Ik gaat het gelijk ff testen, misschien dat ik de site nog kan fixen voordat ik straks moet gaan klussen :P thankss!!
Gewijzigd op 09/01/2013 09:23:03 door Dennis WhoCares
 
Erwin H

Erwin H

09/01/2013 09:29:59
Quote Anchor link
Dennis WhoCares op 09/01/2013 09:21:39:
Ik gebruik eigenlijk meta tag om te redirecten, omdat ik juist met het probleem headers already send zit..
Misschien weet je daar een betere oplossing voor? Zou ook toppie zijn :)

Dat is heel eenvoudig. Strikt je php logica en je html scheiden. Gewoon eerst alles wat php betreft afhandelen en pas als alles gedaan is je eerste html echoen. Kom je dan op een punt in je php afhandeling dat je moet redirecten, dan kan je dat zonder problemen doen.
 
Dennis WhoCares

Dennis WhoCares

09/01/2013 09:44:34
Quote Anchor link
@No One: Super bedankt, het werkt echt geweldig nou :

@Erwin, maar mijn php afhandeling gebeurt binnenin mn html layout. Ik wil niet dat mn layout wordt weg gelaten bij een foutmelding.
 
Erwin H

Erwin H

09/01/2013 09:49:15
Quote Anchor link
Dan gebruik je de verkeerde structuur. Wat heeft die layout nu te maken met je foutmelding? Wat je op het scherm dumpt en hoe dat eruitziet zijn twee verschillende dingen. Dat je de inhoud op 1 plek bepaalt en de layout op een andere maakt natuurlijk niets uit.
 
Dennis WhoCares

Dennis WhoCares

09/01/2013 09:52:24
Quote Anchor link
Hoe bedoel je dat ?
Ik doe zegmaar mijn template parsen uit een index.html met een tag {content}
waarbij de {content} vervangen wordt door mijn pagina->getOuput($pagina) en aanhangende functies van pagina
en tegelijkertijd

echo $finalOutput
 
Erwin H

Erwin H

09/01/2013 09:55:29
Quote Anchor link
Als je een template gebruikt is het helemaal bizar om eerlijk te zijn, want dat betekent al dat je php en html gescheiden hebt. Oftewel, je kan dus eerst gewoon alle content voor die pagina bepalen en op het moment dat alles is afgehandeld laad je het template en voeg je alle content in. Eventuele redirects indien er iets niet goed is weet je dan al voor je dat template laadt en kan je dus uitvoeren voor je een letter html hebt gedumpt naar de browser.
 
Mebus  Hackintosh

Mebus Hackintosh

09/01/2013 10:01:27
Quote Anchor link
http://www.phphulp.nl/php/tutorial/overig/recursieve-functies-in-php/532/

In je functie dus kijken of een deel van je array een array is en dan weer dezelfde functie uitvoeren.. Aangezien je een vaste structuur hebt in je arrays kan dit een simpele oplossing zijn.

is_array()
Gewijzigd op 09/01/2013 10:02:08 door Mebus Hackintosh
 
Dennis WhoCares

Dennis WhoCares

09/01/2013 10:40:30
Quote Anchor link
Erwin H op 09/01/2013 09:55:29:
Als je een template gebruikt is het helemaal bizar om eerlijk te zijn, want dat betekent al dat je php en html gescheiden hebt. Oftewel, je kan dus eerst gewoon alle content voor die pagina bepalen en op het moment dat alles is afgehandeld laad je het template en voeg je alle content in. Eventuele redirects indien er iets niet goed is weet je dan al voor je dat template laadt en kan je dus uitvoeren voor je een letter html hebt gedumpt naar de browser.


Dat doe ik sinds een tijdje ook wel, eerlijk gezegt niet meer geprobeerd om met header te werken.
Maar mn foutafhandeling bevat ook html, maar header komt natuurlijk VOOR de output
Ik doe eerst template parsen naar string
Mn pagina resultate uit database of ook parsen uit bestand naar string em vervolgens
De template en pagina samenvoegen
Ik zal t vd week eens proberen bedankt voor de feedback
 



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.