een checkbox invoegen
Gewijzigd op 03/08/2015 18:34:53 door Marcus geleyn
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.
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? ;)
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)
1
2
3
4
5
6
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'));
?>
$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)
1
2
3
4
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>
<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
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?
Zet foutmelding voor php aan en pleur al je foutmeldingen hier. Dat valt makkelijker op te lossen.
Gewijzigd op 03/08/2015 18:35:52 door marcus geleyn
http://stackoverflow.com/a/4997271
Naar ->
Zie meer over filter_var() -> http://www.w3schools.com/php/func_filter_var.asp
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: Code (php)
1
<?php (preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']) ?>
Naar ->
Zie meer over filter_var() -> http://www.w3schools.com/php/func_filter_var.asp
Gewijzigd op 03/08/2015 15:10:41 door DavY -
dit is mijn code:
Code (php)
1
2
3
4
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>
<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)
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
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;
}
?>
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!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 03/08/2015 18:50:42 door - Ariën -
Dit gaat over mysql.
Zoals de error al zegt: Je moet een string geven en geen array.
Staat niet in bovenstaande code.
Gewijzigd op 03/08/2015 19:09:13 door - Ariën -
- 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?
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.