Gegevens terug in form van checkboxen en dropdown-list

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Hans De Ridder

Hans De Ridder

03/08/2017 14:11:42
Quote Anchor link
In een form blijven de gegevens staan na controle.
Dat lukt prima.
Mijn checkboxen en dropdown-list krijg ik niet terug gekoppeld.
Is meer of dit mogelijk is, dan dat ik het perse moet toepassen.
Bedankt vast voor het meedenken..
De gewone values krijg ik als volgt terug:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input name="birth" type="text" class="field" value="<? echo $_POST['birth']; ?>" />


De code voor de checkboxen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<input class="single-checkbox" type="checkbox" name="Werk[]" value="Zang">Zang
<input class="single-checkbox" type="checkbox" name="Werk[]" value="Geluid">Geluid


De code van het dropdown-menu (nog geen php beschikbaar):
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
<select name="country_code" />
    <option value="NL">NL</option>
    <option value="BE">BE</option>
    <option value="DU">DU</option>
    <option value="FR">FR</option>
    <option value="AU">AU</option>
    <option value="UK">UK</option>
    <option value="IT">IT</option>
    <option value="ES">ES</option>
    <option value="SE">SE</option>
    <option value="DK">DK</option>
    <option value="US">US</option>
    <option value="CA">CA</option>
  </select>

De PHP voor de checkboxen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
if (isset($_POST['Werk'])){
             foreach ($post['Werk'] as $value) {
                 echo $value;

             }            
         }
 
PHP hulp

PHP hulp

30/11/2024 05:35:05
 
Peter K

Peter K

03/08/2017 14:34:52
Quote Anchor link
Je moet hiervoor controleren welke van de waardes de actieve is. Dit voeg je dan toe aan je html.

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

if($_POST['Werk'] == "Zang")
{

$checked_zang = "checked";
}


?>


Voeg $checked_zang toe aan de input.

Voor de option doe je eigenlijk een soortegelijk iets.
Wordt je option dynamisch opgebouwd? Zo nee, dan zou ik dit alsnog doen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

function landen_ophalen($geselecteerd_land)
{

for($index = 0; $index <=10; $index++)
{

$landen_ophalen .= "hier je option opbouwen";
}
}


?>
 
- Ariën  -
Beheerder

- Ariën -

03/08/2017 15:35:07
Quote Anchor link
Het is $_POST['Werk'] i.p.v. $post['Werk']
 
Hans De Ridder

Hans De Ridder

03/08/2017 17:16:27
Quote Anchor link
Had ik inderdaad al gewijzigd Arien.
Het werkt nu...
Ik had net als bij de andere inputs de value veranderd...
Bedankt Peter voor het meedenken...
Moest natuurlijk zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
checked="<? echo $_POST['$checked_zang']; ?>"


Het werkt toch niet helemaal.
Want uiteraard vindt hij de values altijd.
Dus zijn alle checkboxen aangevinkt bij herstel.
Gewijzigd op 03/08/2017 17:47:04 door Hans De Ridder
 
- Ariën  -
Beheerder

- Ariën -

03/08/2017 17:17:35
Quote Anchor link
ik zou wel <?php gebruiken i.p.v. de short-tag. Het wil wel eens gebeuren dat webhostings de short-tag uitzetten, met gevolg dat je source op straat ligt. En als je variabelen gebruikt, dan moet je geen quotes gebruiken, want variabelen horen buiten quotes.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
checked="<?php echo $_POST[$checked_zang]; ?>"


Maar volgens mij wil je juist het formulier-veld in de $_POST gebruiken.
Gewijzigd op 03/08/2017 17:19:23 door - Ariën -
 
Peter K

Peter K

03/08/2017 18:17:02
Quote Anchor link
Je voert hem net andersom uit zoals Arien aangeeft.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

if($_POST['werk'] == "zang")
{

$checked_zang = "checked";
}


?>


<input type="checkbox" name="werk" value="zang" <?php echo $checked_zang; ?>">
<input type="checkbox" name="werk" value="xxx">


Dit moet werken normaal.
Gewijzigd op 03/08/2017 18:17:37 door Peter K
 
- Ariën  -
Beheerder

- Ariën -

03/08/2017 18:43:11
Quote Anchor link
Of lekker in-line met de 'ternary' operator.....

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="checkbox" name="werk" value="zang" <?php echo ($_POST['werk'] == "zang" ? 'checked' : ''); ?>">
 
Hans De Ridder

Hans De Ridder

03/08/2017 19:12:37
Quote Anchor link
Ik krijg hem niet werkend nog.
Dit heb ik staan.
Ook al een " verwijderd. Want staat er volgens mij te veel.
Maar ook met " werkt het niet.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input class="single-checkbox" type="checkbox" name="Werk[]" value="Zang" <?php echo $checked_zang; ?>">

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
if (isset($_POST['Werk'])){
             foreach ($_POST['Werk'] as $value) {
if($value == "Zang")
{
$checked_zang = "checked";
echo $value;
}
}
}
 
- Ariën  -
Beheerder

- Ariën -

03/08/2017 19:16:52
Quote Anchor link
Waarom doe je onnodig moeilijk? En ik neem aan dat die PHP-code voor je HTML staat?
Gewijzigd op 03/08/2017 19:17:35 door - Ariën -
 
Peter K

Peter K

03/08/2017 19:17:00
Quote Anchor link
Pas het eens letterlijk aan naar wat ik hierboven heb gezegd... Dat moet werken.
 
- Ariën  -
Beheerder

- Ariën -

03/08/2017 19:40:53
Quote Anchor link
Of gebruik de ternary-operator die compacter is. Bespaart meteen een hoop statements.
 
Hans De Ridder

Hans De Ridder

03/08/2017 20:08:43
Quote Anchor link
Ik zal straks of morgen nog eens kijken met ander voorbeeldje...
Want krijg het niet werkend.
Terwijl de value wel netjes wordt doorgegeven.
Je script is me wel duidelijk Peter.
De HTML stuurt de gegevens door aan PHP.
Die checkt de form. En komt eventueel met foutmeldingen.
Maakt deel uit van heel proces van registratie... Dus niet los alleen voor deze controle.
 
- Ariën  -
Beheerder

- Ariën -

03/08/2017 20:21:41
Quote Anchor link
Wat werkt er dan niet aan? En waarom gebruik je die foreach?
Opsich is het antwoord in dit topic al gegeven, dus ergens zal je implementatie wel fout zijn.
 
Hans De Ridder

Hans De Ridder

03/08/2017 20:55:43
Quote Anchor link
Zo werkt het wel.
Maar zou op hetzelfde neer moeten komen..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<input class="single-checkbox" type="checkbox" name="WerkA" value="Zang" <?php if(isset($_POST['WerkA'])) echo "checked='checked'"; ?>Zang
<input class="single-checkbox" type="checkbox" name="WerkB" value="Geluid" <?php if(isset($_POST['WerkB'])) echo "checked='checked'"; ?>Geluid

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$WerkA = $_POST['WerkA'];
$WerkB = $_POST['WerkB'];
Gewijzigd op 03/08/2017 20:57:18 door Hans De Ridder
 
- Ariën  -
Beheerder

- Ariën -

03/08/2017 20:57:37
Quote Anchor link
Dat is inderdaad haast het equivalent van de ternary-operator.

Die laatste regels zijn overigens overbodig.
 
Hans De Ridder

Hans De Ridder

04/08/2017 01:13:14
Quote Anchor link
Hier het andere deel voor de dropdown.
Werkt ook (nog) niet. Vreemd want bijna letterlijk overgenomen van voorbeeld uit 2016.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<option value="AU" <?php echo (isset($_POST['country_code'] && $_POST['country_code'] == 'AU') ? 'selected = "selected"' : ''; ?>>AU</option>  

Overigens een andere vraag die hier bij hoort:
Ik gebruik ook een script om het IP te achterhalen.
Kan ik dus ook de landcode uitvissen met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$ip_country = gethostbyaddr($_SERVER['REMOTE_ADDR']);
echo $ip_country;

Maar is het nu zo dat je in je verblijfsland ALTIJD de code van het land hebt met je IP?
Los even van trucjes om de landcodes te omzeilen....
Anders zou ik de $ip_country kunnen gebruiken ipv het dropdown menu...
 
Ben van Velzen

Ben van Velzen

04/08/2017 01:33:11
Quote Anchor link
>> Maar is het nu zo dat je in je verblijfsland ALTIJD de code van het land hebt met je IP?
Nee natuurlijk niet. Je hebt te maken met proxies, VPN's, en als je server het heeft ook nog eens IPv6. Daarnaast heeft gethostbyaddr niet echt veel zin, want betrekkelijk weinig hostnamen zijn gestoeld op het toplevel domain dat bij een land hoort.
 
- Ariën  -
Beheerder

- Ariën -

04/08/2017 01:35:49
Quote Anchor link
Nee, aan de hand van die functie krijg je een hostname die bij dat IP hoort. En die 'tld' hoeft niet te corresponderen met het land van verblijf. Als je dat wilt doen kan je beter verdiepen in ip2geo databases.
 
Peter K

Peter K

04/08/2017 06:34:37
Quote Anchor link
Hans De Ridder op 04/08/2017 01:13:14:
Hier het andere deel voor de dropdown.
Werkt ook (nog) niet. Vreemd want bijna letterlijk overgenomen van voorbeeld uit 2016.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<option value="AU" <?php echo (isset($_POST['country_code'] && $_POST['country_code'] == 'AU') ? 'selected = "selected"' : ''; ?>>AU</option>  


Maak je wel gebruik van een code editor? Zo nee, download er dan 1 om mee te beginnen. Je zult dan gelijk zien wat er fout is hier aan. Je opent meer dan dat je afsluit. (en op de verkeerde plaatsen)

Verder, de manier die ik je opgaf, was o.a. om dit te voorkomen. De manier die ik je gaf is een iets meer visuele manier van programmeren, die daarnaast ook nog mooi op te splitsen is in een gedeelte skin en een gedeelte rekenwerk.

Zo kun je een programma bouwen met een 'rustige' skin die snel te lezen is voor iedereen. Zelfs zonder php kennis.
 
Hans De Ridder

Hans De Ridder

04/08/2017 12:47:57
Quote Anchor link
Na beetje logisch nadenken van deze oude baas is het op de volgende manier gelukt:
Mocht er nog iets onlogisch inzitten dan hoor ik het graag.
Bedankt voor jullie geduld...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<option value="NL" <?php if( $_POST['country_code'] == "NL") echo 'selected' ?>>NL</option>
<option value="BE" <?php if( $_POST['country_code'] == "BE") echo 'selected' ?>>BE</option>
 
Ben van Velzen

Ben van Velzen

04/08/2017 13:09:52
Quote Anchor link
Waar is je controle of $_POST['country_code'] geset is?
 

Pagina: 1 2 volgende »



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.