een checkbox invoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marcus geleyn

marcus geleyn

02/08/2015 20:00:49
Quote Anchor link
Heb hier grote kuis gehouden.
Gewijzigd op 03/08/2015 18:34:53 door Marcus geleyn
 
PHP hulp

PHP hulp

08/11/2024 09:37:01
 
Thomas van den Heuvel

Thomas van den Heuvel

02/08/2015 20:54:39
Quote Anchor link
Je verstuurt keuken[] met verschillende waarden (keukengeen, keukenopen, keukenafbraak, keukenkasten) maar controleert vervolgens op $_POST['keukengeen'], $_POST['keukenopen'], $_POST['keukenafbraak'] en $_POST['keukenkasten'].

Daarnaast stel je alle velden verplicht in je isset() check.

Ook houd je geen rekening met het feit dat een niet-aangevinkte checkbox in het geheel niet gePOST wordt. Als je geen van de vier checkboxen aanvinkt bestaat $_POST['keuken'] niet na verzenden. Daar zou je op kunnen controleren, zodat je weet dat er (ten minste) één checkbox is aangevinkt. En je zult dus je overige code ook op de foutieve verwijzingen aan moeten passen.
 
Marcus geleyn

marcus geleyn

02/08/2015 21:03:26
Quote Anchor link
Dag Thomas,
bedankt, maar hier begint nu net het latijn voor mij. De voorbeelden bij W3Schools en PHPNET zijn allemaal OK, maar gaan mijn petje net iets te boven. Wat ik ook doe, het werkt niet. Het voorbeeld dat ik heb opgegeven is één van de tientallen probeersels. Kun jij me verder helpen dat het werkt? Please? ;)
 
Thomas van den Heuvel

Thomas van den Heuvel

02/08/2015 21:43:34
Quote Anchor link
regel 6:
verwijder: $_POST['keukengeen'], $_POST['keukenopen'], $_POST['keukenafbraak'], $_POST['keukenkasten']
voeg toe: $_POST['keuken']

vervang regel 15 t/m 18 door:
$_POST['keuken'] = array_map('stripslashes', $_POST['keuken']);

Al zou ik deze gpc check er helemaal uitgooien en magic_quotes_gpc gewoon uitzetten, deze gaat ook verdwijen. Dit zou ik echter niet zomaar doen omdat die grote consequenties voor de veiligheid kan hebben. Niet zozeer het uitzetten zelf, maar meer code die is geschreven waarbij er uitgegaan wordt van een situatie waarin deze aan staat.

En dan wordt het lastig in regel 34 t/m 37 - hoe sla je op of iets aangevinkt is of niet? dit kan toch met een simpel "ja" (1) of "nee" (0)? Ook zou je deze opties kunnen nummer van 1 t/m 4 zodat je niet de letterlijke tekst hoeft op te slaan...

Vervang dit door zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$keukengeen
= mysql_real_escape_string((in_array('keukengeen', $_POST['keuken']) ? '1' : '0'));
$keukenopen = mysql_real_escape_string((in_array('keukenopen', $_POST['keuken']) ? '1' : '0'));
$keukenafbraak = mysql_real_escape_string((in_array('keukenafbraak', $_POST['keuken']) ? '1' : '0'));
$keukenkasten = mysql_real_escape_string((in_array('keukenkasten', $_POST['keuken']) ? '1' : '0'));
?>


Vervang 167 t/m 170 door zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<label for="huis"><input type="checkbox" name="keuken[]" id="keukengeen" value="keukengeen" <?php echo ($keukengeen ? ' checked="checked" ' : '') ?>/> Geen keuken</label>
<label for="huis"><input type="checkbox" name="keuken[]" id="keukenopen" value="keukenopen" <?php echo ($keukenopen ? ' checked="checked" ' : '') ?>/> Open keuken</label>
<label for="huis"><input type="checkbox" name="keuken[]" id="keukenafbraak" value="keukenafbraak" <?php echo ($keukenafbraak ? ' checked="checked" ' : '') ?>/> Keuken af te breken</label>
<label for="huis"><input type="checkbox" name="keuken[]" id="keukenkasten" value="keukenkasten" <?php echo ($keukenkasten ? ' checked="checked" ' : '') ?>/> Keuken met kasten</label>


Hier kunne nog fouten in zitten. De rest is aan jou om te debuggen. Persoonlijk zou ik je code wat herstructueren, splits het afdrukken en het verwerken van je gegevens in verschillende acties bijvoorbeeld. Dat maakt eea een stuk overzichtelijker.

EDIT: en dan moet je nog iets met regel 115/119 en regel 129/132... Argh... Wat een spaghetticode.
Gewijzigd op 02/08/2015 21:47:06 door Thomas van den Heuvel
 
Marcus geleyn

marcus geleyn

02/08/2015 21:58:53
Quote Anchor link
Thanks Thomas, hier kan ik mee aan de slag.
Pas, op, dat wordt dan op het internet gezet zogenaamd als voorbeeld om verder uit te werken. Zou niet mogen. Toch bedankt voor de moeite, ik ga proberen.

Toevoeging op 02/08/2015 22:34:17:

Zoals gedacht, er zullen nog wel fouten in zitten. Wat regel 115/119 en 129/132 betreft weet ik helemaal niet wat er zou moeten veranderen. Nu heb ik een HTTP-fout 500.
Zelfs aan de html <input...> zal wel iets mis zijn. Wat zou mij dit kosten om tip top te maken of mag dat hier niet gevraagd worden? Eventueel volledige code doorsturen via PM?
 
DavY -

DavY -

03/08/2015 02:11:43
Quote Anchor link
Zet foutmelding voor php aan en pleur al je foutmeldingen hier. Dat valt makkelijker op te lossen.
 
Marcus geleyn

marcus geleyn

03/08/2015 06:33:30
Quote Anchor link
Deze oude post is ook weg
Gewijzigd op 03/08/2015 18:35:52 door marcus geleyn
 
DavY -

DavY -

03/08/2015 15:01:21
Quote Anchor link
Jezus, wat een pleurcode. Waarom gebruik je een script van ander? Schrijf toch gewoon je eigen, dat scheelt een dikke hoofdpijn joh. Aangezien je zeer weinig ervaring over php beschikt, begin hier gewoon mee, want das je probleem dus: http://stackoverflow.com/a/4997271

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php (preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']) ?>


Naar ->

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ?>


Zie meer over filter_var() -> http://www.w3schools.com/php/func_filter_var.asp
Gewijzigd op 03/08/2015 15:10:41 door DavY -
 
Marcus geleyn

marcus geleyn

03/08/2015 18:46:55
Quote Anchor link
Nu zit ik nog met het volgende probleem:

dit is mijn code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<input type="hidden" name="therapie[]" id="therapie" value="1">
<label><input type="checkbox" name="therapie[]" id="therapprakt" value="0" /> Therapie in eigen praktijk</label>
<input type="hidden" name="therapie[]" id="therapie" value="1">
<label><input type="checkbox" name="therapie[]" id="therapond" value="0" /> Therapie in groepspraktijk</label>


Deze code staat nog voor: if(isset($_POST['username'], $_POST......

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
<?php
if(isset($_POST['formSubmit']))
    {

        $aTherapie = $_POST['therapie'];
        
        if(empty($aTherapie))
        {

            echo("<p>You didn't select any buildings.</p>\n");
        }

        else
        {
            $N = count($aTherapie);

            echo("<p>You selected $N door(s): ");
            for($i=0; $i < $N; $i++)
            {

                echo($aTherapie[$i] . " ");
            }

            echo("</p>");
        }
    }
    
    function
IsChecked($therapie,$value)
    {

        if(!empty($_POST[$therapie]))
        {

            foreach($_POST[$therapie] as $chkval)
            {

                if($chkval == $value)
                {

                    return true;
                }
            }
        }

        return false;
    }

?>


Helaas, de velden in msql blijven leeg en ik krijg de foutmelding:

Warning: mysqli_real_escape_string() expects parameter 2 to be string, array given in ......

Waarschijnlijk niet omdat er een fout is, maar omdat de array leeg is (heb ik ergens gelezen).

Wat ik ook nog niet begrijp is het volgende: moet er nu voor iedere <input> een veld aangemaakt worden waar dan een nul of een één in komt, of moet er maar één veld zijn (hier therapie) waar dan (1,1,0,1) in kan staan.
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 03/08/2015 18:50:42 door - Ariën -
 
- SanThe -

- SanThe -

03/08/2015 18:50:43
Quote Anchor link
Warning: mysqli_real_escape_string() expects parameter 2 to be string, array given

Dit gaat over mysql.
Zoals de error al zegt: Je moet een string geven en geen array.
Staat niet in bovenstaande code.
 
- Ariën  -
Beheerder

- Ariën -

03/08/2015 19:08:41
Quote Anchor link
@marcus geleyn: Waarom haal je alle posts hier weg?
Gewijzigd op 03/08/2015 19:09:13 door - Ariën -
 
Marcus geleyn

marcus geleyn

03/08/2015 19:19:30
Quote Anchor link
- Aar - op 03/08/2015 19:08:41:
@marcus geleyn: Waarom haal je alle posts hier weg?


Sorry, maar de programmacode van het internet was één groot voorbeeld van hoe het niet moet. Achteraf gezien had ik dat misschien beter niet gedaan uit beleefdheid?
 
- Ariën  -
Beheerder

- Ariën -

03/08/2015 19:23:47
Quote Anchor link
Het is niet de bedoeling om op het forum posts te verwijderen/leeg-editten. Op deze manier gaat de integriteit van het topic verloren en eventuele discussies die op de verwijderde posts aansluiten.
 



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.