checkbox controle of true of false
Ik zit met een controle probleem.
Op een bewerk pagina kan ik bepaalde gegevens bewerken en opnieuw na de database zenden. Dit is verder geen probleem. Maar nu moest er een checkbox inkomen welke een bepaalde waarde heeft. Zodra deze checkbox gevinkt is, zal deze ja na de database zenden.
Dit werk ook nog volledig zoals het hoort. Maar nu kan het zijn dat ik de gegevens wil bewerken maar de checkbox niet wil aanvinken. En hier gaat het bij mij mis.
Zodra ik dan wil verzenden na de database dan doet hij niks.
Zodra ik de checkbox wel aan vink, dan verzend hij geheel volledig na de database met de checkbox waarde ja. Maar ik wil de gegevens ook kunnen bewerken zonder de checkbox te vinken.
Wat doe ik verkeert? Ik dacht namelijk dat als je een checkbox niet vinkt dat hij hem dan gewoon doorlaat maar dan de standaard ingevulde waarde in de database pakt. In mijn geval is standaard waarde nee in de database.
Wie kan mij helpen.
Ik laat hier even mijn query gedeelte weg. Omdat ik vermoed het daar niet in zit. Tevens heb ik diverse waarden weg gelaten wat ook niet van belang is.
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
// Er zijn gegevens verstuurd naar deze pagina!
if ( $_SERVER['REQUEST_METHOD'] == 'POST' &&
isset($_POST['artiest'], $_POST['titel'], $_POST['checkbox']) )
{
// We gaan de errors in een array bijhouden
$aErrors = array();
// Een Artiest en Titel bevat letters, apostroph en spaties, eventueel een koppelteken en is minimaal 2 tekens lang
// merk op dat ook cijfers door de \w geaccepteerd worden!
// alleen een spatie accepteren we niet
if ( !isset($_POST['artiest'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['artiest'] )
or trim($_POST['artiest']) == ''
) {
$aErrors['artiest'] = 'Wel even een Artiest invullen';
}
if ( !isset($_POST['titel'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['titel'] )
or trim($_POST['titel']) == ''
) {
$aErrors['titel'] = 'Wel even een Titel invullen';
}
if ( count($aErrors) == 0 )
{
// We hebben alle gegevens
// Nu gaan we alle uitvoeren in de query
} // end if(count){}
} // end if{}
?>
<input type="checkbox" name="<?php echo 'checkbox['.$row['id'].']';?>" id="<?php echo 'checkbox'.$i.'';?>" value="ja" <?php echo ''.($row['checkbox'] == 'ja' ? 'checked="checked"' : '' ).' ';?> />
// Er zijn gegevens verstuurd naar deze pagina!
if ( $_SERVER['REQUEST_METHOD'] == 'POST' &&
isset($_POST['artiest'], $_POST['titel'], $_POST['checkbox']) )
{
// We gaan de errors in een array bijhouden
$aErrors = array();
// Een Artiest en Titel bevat letters, apostroph en spaties, eventueel een koppelteken en is minimaal 2 tekens lang
// merk op dat ook cijfers door de \w geaccepteerd worden!
// alleen een spatie accepteren we niet
if ( !isset($_POST['artiest'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['artiest'] )
or trim($_POST['artiest']) == ''
) {
$aErrors['artiest'] = 'Wel even een Artiest invullen';
}
if ( !isset($_POST['titel'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['titel'] )
or trim($_POST['titel']) == ''
) {
$aErrors['titel'] = 'Wel even een Titel invullen';
}
if ( count($aErrors) == 0 )
{
// We hebben alle gegevens
// Nu gaan we alle uitvoeren in de query
} // end if(count){}
} // end if{}
?>
<input type="checkbox" name="<?php echo 'checkbox['.$row['id'].']';?>" id="<?php echo 'checkbox'.$i.'';?>" value="ja" <?php echo ''.($row['checkbox'] == 'ja' ? 'checked="checked"' : '' ).' ';?> />
Boven staande preg_match heb ik met behulp van PFZ.nl gevonden.
Maar ik kom er maar niet uit wat ik nu nodig heb om een NIET aangevinkte checkbox door te laten. Wie kan mij helpen?
Gewijzigd op 01/04/2012 03:04:03 door Remco schrubben
Remco schrubben op 01/04/2012 02:58:02:
Er wordt gecontroleerd of de checkbox is geset.
Wat gebeurt er als je die weghaalt........
Gewijzigd op 01/04/2012 21:16:37 door Obelix Idefix
Obelix als ik deze weghaal dan kan ik zonder een checkbox ook de gegevens bewerken en opslaan. Maar zodra ik dan wel een checkbox aan moet vinken dan update hij hem niet in de database.
Het enige wat ik daar uit begreep is dat je niet wilt checken op de checkbox. Wat het nut van die checkbox is/wanneer je hem (niet) nodig hebt, is mij onduidelijk.
Als je duidelijk hebt wat je wilt, kun je dat ook zo scripten.
Daar waar de checkbox vereist is, voer je een controle uit of die bestaat.
Daar waar je op basis van de checkbox iets wilt veranderen, controleer je of die bestaat.
Ik heb een bewerk.php pagina. Hier haal ik diverse gegevens op.
Artiest - Titel - post-datum - update-datum - cover - checkbox
Artiest - post-datum - update-datum -zijn gegevens die per bewerk pagina maar 1x voorkomt. Daarin tegen kan Titel - cover - checkbox 1 tot max 50x voorkomen op 1 pagina.
Zoals je misschien wel weet, tikt iedereen wel eens een titel te snel waardoor je een tik foutje hebt die je opmerkt na het toevoegen. Dan wil je deze titel even corigeren op de tik fout. Dus we gaan naar de bewerk pagina en tikken de titel goed in. Deze updaten we in de database. Dit gaat tot hier helemaal goed zolang ik de checkbox maar uit de isset hou.
Zodra ik dus zoals jij al aangaf ga controleren op die checkbox en hem niet aan vink dat hij dan niks doe. Stel ik heb 40 titel - cover en checkbox regels op mijn bewerk pagina. en ik wil geen ENKELE checkbox aanvinken, dan wil ik als nog bevoorbeeld de titel kunnen updaten mocht er een foutje zijn.
Maar het kan ook zo zijn dat ik van die 40 regels 5 checkboxen wil aanvinken. Dit moet hij samen met de rest na de database schrijven. De overige 35 regels zijn dus niet gecheckt.
Ik ben opzoek geweest hoe ik dit buiten die isset moet controleren. En daar loop ik dus vast. Ik krijg maar niet gevonden hoe ik na de isset de checkboxen kan controleren en daarna na de query kan gaan.
Hoop dat het nu iets duidelijke is geworden.
Als je iets wilt bewerken, dan vraag je toch de gegevens op van de items die je wilt wijzigen en niet (tot) 50 regels?
Die checkbox kan, maar hoeft niet gevinkt te zijn. Controleren bij het verzenden van het formulier of die checkbox geset is, is dus onzinnig; hij hoeft immers niet te bestaan.
Controle op de checkbox doe je pas waar het nodig is: bij het samenstellen van de update-query.
Ben wel heel benieuwd hoe jij de query('s) uit gaat voeren.
isset($_POST['checkbox'])geeft true als ie is aangevinkt en false als ie niet is aangevinkt.
Als het nu niet meer duidelijk is, dan sorry dan weet ik het niet hoe ik het anders moet uitleggen.
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Stel bewerk.php geeft onderstaande lijst weer.
Zoals je ziet zit er een foutje in. Track 9 moest zijn track 4.
+--------------+---------+-------+
| Checkbox uit | Track 1 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 2 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 3 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 9 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 5 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 6 | Cover |
+--------------+---------+-------+
Zoals je ziet staan de checkboxen allemaal uitgevinkt.
Dit wil ik zo updaten met de met Track 9 naar Track 4 verandert.
Nu krijg ik via bewerk.php pagina deze lijst terug.
+--------------+---------+-------+
| Checkbox uit | Track 1 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 2 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 3 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 4 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 5 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 6 | Cover |
+--------------+---------+-------+
Nu wil ik als voorbeeld Track 3 een speciale opdracht geven.
Nu vink ik dus Track 3 aan. we krijgen het volgende lijst als voorbeeld.
+--------------+---------+-------+
| Checkbox uit | Track 1 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 2 | Cover |
+--------------+---------+-------+
| Checkbox aan | Track 3 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 4 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 5 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 6 | Cover |
+--------------+---------+-------+
Dit geheel wil ik nu updaten naar de database.
Maar dat gaat niet omdat ik in deze regel geen $_POST['checkbox'] heb staan. Dit omdat ik dus niet kan updaten zonder eencheckbox aan gevinkt.
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' &&
isset($_POST['titel'], $_POST['cover'], $_POST['checkbox']) )
{
?>
Zoals Santhe zeg heb ik iets nodig dit dat regels voor mij. En DAT SNAP ik dus niet.
Zoals ik al aangaf ZOEK ik dus een manier om onderstaande code voor de checkbox een extra controle uit te voeren voor ALLEEN de checkbox.
<?php
// Er zijn gegevens verstuurd naar deze pagina!
if ( $_SERVER['REQUEST_METHOD'] == 'POST' &&
isset($_POST['titel'], $_POST['cover']) )
{
// We gaan de errors in een array bijhouden
$aErrors = array();
// Een Artiest en Titel bevat letters, apostroph en spaties, eventueel een koppelteken en is minimaal 2 tekens lang
// merk op dat ook cijfers door de \w geaccepteerd worden!
// alleen een spatie accepteren we niet
if ( !isset($_POST['artiest'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['artiest'] )
or trim($_POST['artiest']) == ''
) {
$aErrors['artiest'] = 'Wel even een Artiest invullen';
}
if ( !isset($_POST['titel'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['titel'] )
or trim($_POST['titel']) == ''
) {
$aErrors['titel'] = 'Wel even een Titel invullen';
}
/******************************************************************/
* HIER ZAL DE EXTRA CONTROLE VOOR ALLEEN DE CHECKBOX MOETEN KOMEN. *
/******************************************************************/
if ( count($aErrors) == 0 )
{
/*****************************/
* HIER KOMT ALLE QUERY BENDE. *
/*****************************/
} // end if(count){}
} // end if{}
/***********************************************************************/
* HIER STAAT DE FOUTAFHANDELING, CONTROLE OF QUERY GELUKT IS ENZ....... *
/***********************************************************************/
?>
Zoals je ziet zit er een foutje in. Track 9 moest zijn track 4.
+--------------+---------+-------+
| Checkbox uit | Track 1 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 2 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 3 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 9 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 5 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 6 | Cover |
+--------------+---------+-------+
Zoals je ziet staan de checkboxen allemaal uitgevinkt.
Dit wil ik zo updaten met de met Track 9 naar Track 4 verandert.
Nu krijg ik via bewerk.php pagina deze lijst terug.
+--------------+---------+-------+
| Checkbox uit | Track 1 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 2 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 3 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 4 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 5 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 6 | Cover |
+--------------+---------+-------+
Nu wil ik als voorbeeld Track 3 een speciale opdracht geven.
Nu vink ik dus Track 3 aan. we krijgen het volgende lijst als voorbeeld.
+--------------+---------+-------+
| Checkbox uit | Track 1 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 2 | Cover |
+--------------+---------+-------+
| Checkbox aan | Track 3 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 4 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 5 | Cover |
+--------------+---------+-------+
| Checkbox uit | Track 6 | Cover |
+--------------+---------+-------+
Dit geheel wil ik nu updaten naar de database.
Maar dat gaat niet omdat ik in deze regel geen $_POST['checkbox'] heb staan. Dit omdat ik dus niet kan updaten zonder eencheckbox aan gevinkt.
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' &&
isset($_POST['titel'], $_POST['cover'], $_POST['checkbox']) )
{
?>
Zoals Santhe zeg heb ik iets nodig dit dat regels voor mij. En DAT SNAP ik dus niet.
Zoals ik al aangaf ZOEK ik dus een manier om onderstaande code voor de checkbox een extra controle uit te voeren voor ALLEEN de checkbox.
<?php
// Er zijn gegevens verstuurd naar deze pagina!
if ( $_SERVER['REQUEST_METHOD'] == 'POST' &&
isset($_POST['titel'], $_POST['cover']) )
{
// We gaan de errors in een array bijhouden
$aErrors = array();
// Een Artiest en Titel bevat letters, apostroph en spaties, eventueel een koppelteken en is minimaal 2 tekens lang
// merk op dat ook cijfers door de \w geaccepteerd worden!
// alleen een spatie accepteren we niet
if ( !isset($_POST['artiest'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['artiest'] )
or trim($_POST['artiest']) == ''
) {
$aErrors['artiest'] = 'Wel even een Artiest invullen';
}
if ( !isset($_POST['titel'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['titel'] )
or trim($_POST['titel']) == ''
) {
$aErrors['titel'] = 'Wel even een Titel invullen';
}
/******************************************************************/
* HIER ZAL DE EXTRA CONTROLE VOOR ALLEEN DE CHECKBOX MOETEN KOMEN. *
/******************************************************************/
if ( count($aErrors) == 0 )
{
/*****************************/
* HIER KOMT ALLE QUERY BENDE. *
/*****************************/
} // end if(count){}
} // end if{}
/***********************************************************************/
* HIER STAAT DE FOUTAFHANDELING, CONTROLE OF QUERY GELUKT IS ENZ....... *
/***********************************************************************/
?>
Gewijzigd op 01/04/2012 23:15:49 door remco schrubben
empty. Is dat waarnaar je op zoek bent? Sowieso zijn ze altijs 'geset' omdat je het formulier post.
Haal bij de controle met isset, checkbox er gewoon uit en kijk of hij niet leeg is dmv Ik heb even naar deze functie gekeken ik kom dan op het gedeelte hier onder:
Code (php)
Nu krijg ik de Notice:
Notice: Uninitialized string offset: 23 in ../../../bewerken.php on line 77
Deze line 77 wijst na mijn query. Dit ziet er nu zo uit.
Let Op !!1 Zet nu alleen relevante query code, dus zonder foutafhandeling.
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
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
<?php
$teller = 0;
foreach($_POST['artiest'] as $id => $artiest)
{
if($artiest != '')
{
// de query is gelukt, voeg het adres toe
$strQuery = "UPDATE
ts_optie
SET
artiest = '".mysqli_real_escape_string($query, $artiest)."',
titel = '".mysqli_real_escape_string($query, $_POST['titel'][$id])."',
cover = '".mysqli_real_escape_string($query, $_POST['cover'][$id])."',
checkbox = '".mysqli_real_escape_string($query, $checkbox[$id])."'
WHERE
ts_id = '".mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '".mysqli_real_escape_string($query, $id)."'
" ;
$boolean = mysqli_query($query, $strQuery, MYSQLI_USE_RESULT);
// $result blijft true indien gelukt en wordt false indien niet gelukt
$result = ($result AND $boolean);
} // end of if{}
$teller++;
} // end of foreach{}
?>
$teller = 0;
foreach($_POST['artiest'] as $id => $artiest)
{
if($artiest != '')
{
// de query is gelukt, voeg het adres toe
$strQuery = "UPDATE
ts_optie
SET
artiest = '".mysqli_real_escape_string($query, $artiest)."',
titel = '".mysqli_real_escape_string($query, $_POST['titel'][$id])."',
cover = '".mysqli_real_escape_string($query, $_POST['cover'][$id])."',
checkbox = '".mysqli_real_escape_string($query, $checkbox[$id])."'
WHERE
ts_id = '".mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '".mysqli_real_escape_string($query, $id)."'
" ;
$boolean = mysqli_query($query, $strQuery, MYSQLI_USE_RESULT);
// $result blijft true indien gelukt en wordt false indien niet gelukt
$result = ($result AND $boolean);
} // end of if{}
$teller++;
} // end of foreach{}
?>
Hier is line 77 dus
Ik kom nu even niet uit hoe ik [$id] weg moet zetten in dit geheel. Haal ik nu [$id] weg uit deze regel. Dan kan ik hem wel updaten, maar dan zet die overal 'ja' neer.
Dit is natuurlijk niet de bedoeling.
Gewijzigd op 02/04/2012 05:09:09 door remco schrubben
Alternatief:
splits je query en bouw hem in delen op.
Bas Kreleger op 02/04/2012 00:25:48:
Haal bij de controle met isset, checkbox er gewoon uit en kijk of hij niet leeg is dmv empty. Is dat waarnaar je op zoek bent? Sowieso zijn ze altijs 'geset' omdat je het formulier post.
Als een checkbox niet is aangevinkt wordt ie niet mee verzonden met het formulier
Maar met voorbeelden komt je niet. Terwijl ik daar toch echt om vraag, wat is nu moeilijk aan dat ik er gewoon niet meer uit kom op deze manier.
Query's opsplitsen kan, maar ik heb een transactions gedeelte er in zitten. Ik maakt ook gebruik van FK's. Dus Obelix vertel mij dan even hoe ik dat moet aanpassen.
Ger, Ik weet dat het zo werkt, maar waarom werkt het niet bij mij zo dat is de vraag. Ik mag aannemen dat jullie nu genoeg lees voor hebben om te begrijpen wat mijn probleem is.
Als ik de checkbox in de isset controle zet, en dan iets wil bewerken waar ik de checkbox niet wil aanvinken. Dan update hij hem niet. Als ik het op de laatste reactie manier doe, dan krijg ik de notice na me oren.
Is er dan helemaal niemand die even een voorbeeld kan/wil geven op hand van mijn laatste stuk code.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
En verder tijdens het updaten:
De stukje code voor de error's die heb ik idd boven in mijn pagina staan.
Daardoor krijg ik namelijk ook die notice na me oren gegooit.
Als ik die regels weg haal is notice er ook niet meer.
Jou voorbeeld ga ik zo even testen als ik uit de trein ben.
Remco, de vraag is of hetgeen jij wilt zo'n goede oplossing is in alleen php. Want als er niks aan gevinkt is dan weet je ook niet wat er gewijzigd is, en dat betekent dat je alle records moet updaten.
Remco schrubben op 02/04/2012 13:20:56:
Obelix je kan het allemaal mooi vertellen heel de topic lang al.
Maar met voorbeelden komt je niet. Terwijl ik daar toch echt om vraag, wat is nu moeilijk aan dat ik er gewoon niet meer uit kom op deze manier.
Maar met voorbeelden komt je niet. Terwijl ik daar toch echt om vraag, wat is nu moeilijk aan dat ik er gewoon niet meer uit kom op deze manier.
Heeft niets met 'mooi vertellen' te maken. Jouw denkwijze/werkwijze is anders dan de mijne. Jij laat (tot) 50 records zien om er 1 te wijzigen (maar wel 50 te updaten). Zou ik niet doen. Zie ook opmerking Ger.
En je blijft volharden om $_POST['checkbox'] mee te nemen in een query, ook als die niet bestaat. Dat je dan foutmeldingen krijgt, is niet zo vreemd.
Ik geef aan hoe ik het eventueel wel zou aanpakken (alleen niet met kant en klare code).
Ger, Ik snap jou punt ik snap obelix ook wel. Maar jullie hebben blijkbaar tijden ervaring in php. Jij zegt dus eigenlijk gewoon dat ik 2 checkboxen moet maken.
1 om te zeggen welke regel ik bewerk en 1 om bepaalde waarde mee te geven.
Edit:
Santhe, ik heb jou code geprobeerd. Maar dan zet hij overal nee in de database.
Dit terwijl ik 1 checkbox heb aangevinkt.
Laatste poging om het uit te leggen anders gooi ik de bende in de wilgen.
Zoals je ziet hebben we hier:
1x checkbox
2x input velden
1x foto veld.
Nu hebben wij in 1 van die 6 artiesten een foutje in bijvoorbeeld de titel.Omdat er een tik foutje in zit. Ik haal de tik fout er uit en druk op update.
Nu staat de alles goed in de database.
Maar.............. Hier komt mijn probleem.
Ik wil artiest Harten 10 een extra opdracht mee geven. Wat de opdracht achter af doet is niet relevant. De extra opdracht wil ik hendelen via de checkbox. Ik vind Harten 10 aan en ik druk op update. En hier gaat het fout want het updaten doet hij niet.
Dit weer door het probleem dat de checkbox er bij is gekomen en die zoals gezegt niet in de isset regel staat.
Nu gaf santhe een opzetje. Deze werkt, alleen hij zet nu bij alle 6 nee bij.
Kreeg van Bas een oplossing via Empty, maar hier kreeg ik de notice om me oren.
Nogmaals ik ben te beginner om dit op te lossen. Hoop dat het dan nu eindelijk wel duidelijk is wat ik wil. Mocht het nog niet duidelijk zijn hoor ik het graag dan stop ik er gewoon mee en maak ik wel een 2 bewerk pagina voor alleen de checkboxen. Maar dit lijkt me gewoon weg niet nodig.
Gewijzigd op 02/04/2012 20:54:06 door remco schrubben
Laat een overzicht van de records zien en zet er een linkje achter waarop je kunt klikken om te wijzigen. Toon dat ene record, wijzig de gegevens en update daarna je query.
De manier waarop jij script is anders dan de mijne, maar misschien dat dit je op weg kan helpen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$strQuery = "UPDATE
ts_optie
SET
artiest = '".mysqli_real_escape_string($query, $artiest)."',
titel = '".mysqli_real_escape_string($query, $_POST['titel'][$id])."',
cover = '".mysqli_real_escape_string($query, $_POST['cover'][$id])."'";
if(isset($_POST['checkbox'][$id]))
{
$strQuery .= "checkbox = 'ja'";
}
$strQuery .= "
WHERE
ts_id = '".mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '".mysqli_real_escape_string($query, $id)."'
" ;
?>
$strQuery = "UPDATE
ts_optie
SET
artiest = '".mysqli_real_escape_string($query, $artiest)."',
titel = '".mysqli_real_escape_string($query, $_POST['titel'][$id])."',
cover = '".mysqli_real_escape_string($query, $_POST['cover'][$id])."'";
if(isset($_POST['checkbox'][$id]))
{
$strQuery .= "checkbox = 'ja'";
}
$strQuery .= "
WHERE
ts_id = '".mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '".mysqli_real_escape_string($query, $id)."'
" ;
?>
Ik ben aan de hand van jou voorbeeld even verder gegaan.
Hierbij zag ik 2 mogelijkheden in het voorbeeld.
Mogelijkheid 1:
Deze update query wel, alleen hij zet nog steeds alle rows op nee. Hier krijg ik ook geen error's of notice's te zien.
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
$strQuery = "UPDATE
ts_optie
SET
artiest = '".mysqli_real_escape_string($query, $artiest)."',
titel = '".mysqli_real_escape_string($query, $_POST['titel'][$id])."',
cover = '".mysqli_real_escape_string($query, $_POST['cover'][$id])."'";
if(isset($_POST['checkbox'][$id]))
{
$strQuery .= ",checkbox = 'ja'";
}
else
{
$strQuery .= ",checkbox = 'nee'";
}
$strQuery .= "
WHERE
ts_id = '".mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '".mysqli_real_escape_string($query, $id)."'
" ;
?>
[b] var_dump uitkomst[/b]
["artiest"]=>
array(6) {
[14]=>
string(7) "Antonio"
[15]=>
string(5) "Johan"
[16]=>
string(14) "Manuela Rokven"
[17]=>
string(12) "Patrick Dano"
[18]=>
string(10) "Sam Gooris"
[19]=>
string(13) "Zeeuwse Ricky"
}
["titel"]=>
array(6) {
[14]=>
string(9) "Kom terug"
[15]=>
string(26) "Jij hebt de hemel verdient"
[16]=>
string(17) "7 dagen 7 nachten"
[17]=>
string(21) "Jij bent het helemaal"
[18]=>
string(9) "Saragossa"
[19]=>
string(39) "Daar waar de liefde jou naam weer roept"
}
["cover"]=>
array(6) {
[14]=>
string(64) "Antonio.jpg"
[15]=>
string(62) "Johan.jpg"
[16]=>
string(71) "manuela-Rokven.jpg"
[17]=>
string(69) "Patrick-dano.jpg"
[18]=>
string(76) "samgooris-saragossa.jpg"
[19]=>
string(70) "Zeeuwse-Ricky.jpg"
}
["checkbox"]=>
array(1) {
[19]=>
string(2) "ja"
}
["submit"]=>
string(6) "Update"
$strQuery = "UPDATE
ts_optie
SET
artiest = '".mysqli_real_escape_string($query, $artiest)."',
titel = '".mysqli_real_escape_string($query, $_POST['titel'][$id])."',
cover = '".mysqli_real_escape_string($query, $_POST['cover'][$id])."'";
if(isset($_POST['checkbox'][$id]))
{
$strQuery .= ",checkbox = 'ja'";
}
else
{
$strQuery .= ",checkbox = 'nee'";
}
$strQuery .= "
WHERE
ts_id = '".mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '".mysqli_real_escape_string($query, $id)."'
" ;
?>
[b] var_dump uitkomst[/b]
["artiest"]=>
array(6) {
[14]=>
string(7) "Antonio"
[15]=>
string(5) "Johan"
[16]=>
string(14) "Manuela Rokven"
[17]=>
string(12) "Patrick Dano"
[18]=>
string(10) "Sam Gooris"
[19]=>
string(13) "Zeeuwse Ricky"
}
["titel"]=>
array(6) {
[14]=>
string(9) "Kom terug"
[15]=>
string(26) "Jij hebt de hemel verdient"
[16]=>
string(17) "7 dagen 7 nachten"
[17]=>
string(21) "Jij bent het helemaal"
[18]=>
string(9) "Saragossa"
[19]=>
string(39) "Daar waar de liefde jou naam weer roept"
}
["cover"]=>
array(6) {
[14]=>
string(64) "Antonio.jpg"
[15]=>
string(62) "Johan.jpg"
[16]=>
string(71) "manuela-Rokven.jpg"
[17]=>
string(69) "Patrick-dano.jpg"
[18]=>
string(76) "samgooris-saragossa.jpg"
[19]=>
string(70) "Zeeuwse-Ricky.jpg"
}
["checkbox"]=>
array(1) {
[19]=>
string(2) "ja"
}
["submit"]=>
string(6) "Update"
Mogelijkheid 2:
Deze query werkt ook, geen error's of foutmeldingen. Alleen hij update nog steeds alle rows op nee
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
$strQuery = "UPDATE
ts_optie
SET
artiest = '".mysqli_real_escape_string($query, $artiest)."',
titel = '".mysqli_real_escape_string($query, $_POST['titel'][$id])."',
cover = '".mysqli_real_escape_string($query, $_POST['cover'][$id])."'";
if(isset($_POST['checkbox'][$id]))
{
$strQuery .= ",checkbox = 'ja'
WHERE
ts_id = '".mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '".mysqli_real_escape_string($query, $id)."'";
}
else
{
$strQuery .= ",checkbox = 'nee'
WHERE
ts_id = '".mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '".mysqli_real_escape_string($query, $id)."'";
}
?>
[b] var_dump uitkomst[/b]
["artiest"]=>
array(6) {
[14]=>
string(7) "Antonio"
[15]=>
string(5) "Johan"
[16]=>
string(14) "Manuela Rokven"
[17]=>
string(12) "Patrick Dano"
[18]=>
string(10) "Sam Gooris"
[19]=>
string(13) "Zeeuwse Ricky"
}
["titel"]=>
array(6) {
[14]=>
string(9) "Kom terug"
[15]=>
string(26) "Jij hebt de hemel verdient"
[16]=>
string(17) "7 dagen 7 nachten"
[17]=>
string(21) "Jij bent het helemaal"
[18]=>
string(9) "Saragossa"
[19]=>
string(39) "Daar waar de liefde jou naam weer roept"
}
["cover"]=>
array(6) {
[14]=>
string(64) "Antonio.jpg"
[15]=>
string(62) "Johan.jpg"
[16]=>
string(71) "manuela-Rokven.jpg"
[17]=>
string(69) "Patrick-dano.jpg"
[18]=>
string(76) "samgooris-saragossa.jpg"
[19]=>
string(70) "Zeeuwse-Ricky.jpg"
}
["checkbox"]=>
array(1) {
[19]=>
string(2) "ja"
}
["submit"]=>
string(6) "Update"
$strQuery = "UPDATE
ts_optie
SET
artiest = '".mysqli_real_escape_string($query, $artiest)."',
titel = '".mysqli_real_escape_string($query, $_POST['titel'][$id])."',
cover = '".mysqli_real_escape_string($query, $_POST['cover'][$id])."'";
if(isset($_POST['checkbox'][$id]))
{
$strQuery .= ",checkbox = 'ja'
WHERE
ts_id = '".mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '".mysqli_real_escape_string($query, $id)."'";
}
else
{
$strQuery .= ",checkbox = 'nee'
WHERE
ts_id = '".mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '".mysqli_real_escape_string($query, $id)."'";
}
?>
[b] var_dump uitkomst[/b]
["artiest"]=>
array(6) {
[14]=>
string(7) "Antonio"
[15]=>
string(5) "Johan"
[16]=>
string(14) "Manuela Rokven"
[17]=>
string(12) "Patrick Dano"
[18]=>
string(10) "Sam Gooris"
[19]=>
string(13) "Zeeuwse Ricky"
}
["titel"]=>
array(6) {
[14]=>
string(9) "Kom terug"
[15]=>
string(26) "Jij hebt de hemel verdient"
[16]=>
string(17) "7 dagen 7 nachten"
[17]=>
string(21) "Jij bent het helemaal"
[18]=>
string(9) "Saragossa"
[19]=>
string(39) "Daar waar de liefde jou naam weer roept"
}
["cover"]=>
array(6) {
[14]=>
string(64) "Antonio.jpg"
[15]=>
string(62) "Johan.jpg"
[16]=>
string(71) "manuela-Rokven.jpg"
[17]=>
string(69) "Patrick-dano.jpg"
[18]=>
string(76) "samgooris-saragossa.jpg"
[19]=>
string(70) "Zeeuwse-Ricky.jpg"
}
["checkbox"]=>
array(1) {
[19]=>
string(2) "ja"
}
["submit"]=>
string(6) "Update"
Gewijzigd op 03/04/2012 00:44:46 door remco schrubben
Wat je nog kan gebruiken, is de ternary operator (Gooogle zelf maar voor details en documentatie)
Dat wordt dan zoiets
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$strQuery = "
UPDATE ts_optie
SET
artiest = '" . mysqli_real_escape_string($query, $artiest) . "',
titel = '" . mysqli_real_escape_string($query, $_POST['titel'][$id]) . "',
cover = '" . mysqli_real_escape_string($query, $_POST['cover'][$id]) . "',
checkbox = " . ( empty($_POST['checkbox'][$id]) ? 'nee' : 'ja') . "
WHERE
ts_id = '" . mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '" . mysqli_real_escape_string($query, $id)."'";
?>
$strQuery = "
UPDATE ts_optie
SET
artiest = '" . mysqli_real_escape_string($query, $artiest) . "',
titel = '" . mysqli_real_escape_string($query, $_POST['titel'][$id]) . "',
cover = '" . mysqli_real_escape_string($query, $_POST['cover'][$id]) . "',
checkbox = " . ( empty($_POST['checkbox'][$id]) ? 'nee' : 'ja') . "
WHERE
ts_id = '" . mysqli_real_escape_string($query, $_GET['id'])."'
AND
id = '" . mysqli_real_escape_string($query, $id)."'";
?>