Multiple checkbox antwoorden in een function
Ik haal bovendien alle provincies uit een database (ik weet het is achterhaald maar ik exporteer deze later om makkelijk te kunnen verhuizen en aanpassen)
Als een checkbox is aangevinkt en de form word verstuurd word dezelfde pagina geladen om resultaten te laten zien. Maar ik wil dat die checkboxen die geselecteerd waren nog steeds geselecteerd zijn. Daar zit ik nu mee in de knoei
Albert de Wit op 14/05/2012 13:17:11:
Verder heb ik bovenaan de functie een return gezet maar omdat dat niks oplevert levert de rest ook niks op.
Dat moet je natuurlijk nooit doen. Een return haalt je uit de functie. Alles wat na de return staat wordt dus niet meer uitgevoerd.
dat weet ik maar dat was de enige manier om te controleren of de functie wel werd aangeroepen maar ik kreeg niks terug. Gek genoeg krijg ik wel de foutmeldingen als ik een ; ofzo weghaal
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
// query uitvoeren om alle provincies op te halen
while($row - mysql_fetch_assoc($result))
{
echo '<input type="checkbox" name="provincie[]" value="' . $row['provincie'] . '"';
echo (isset($_POST['provincie']) and in_array($row['provincie'], $_POST['provincie'])) ? ' checked' : '';
echo '>' . $row['provincie'] . '<br />';
}
?>
// query uitvoeren om alle provincies op te halen
while($row - mysql_fetch_assoc($result))
{
echo '<input type="checkbox" name="provincie[]" value="' . $row['provincie'] . '"';
echo (isset($_POST['provincie']) and in_array($row['provincie'], $_POST['provincie'])) ? ' checked' : '';
echo '>' . $row['provincie'] . '<br />';
}
?>
Ik voer het uit in een functie omdat ik met OOP wat probeer te knutselen. Daarom werkt echo niet. Maar het gaat er vooral om dat hij helemaal niks returnd.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// query uitvoeren om alle provincies op te halen
$return = '';
while($row - mysql_fetch_assoc($result))
{
$return .= '<input type="checkbox" name="provincie[]" value="' . $row['provincie'] . '"';
$return .= (isset($_POST['provincie']) and in_array($row['provincie'], $_POST['provincie'])) ? ' checked' : '';
$return .= '>' . $row['provincie'] . '<br />';
}
return $return;
?>
// query uitvoeren om alle provincies op te halen
$return = '';
while($row - mysql_fetch_assoc($result))
{
$return .= '<input type="checkbox" name="provincie[]" value="' . $row['provincie'] . '"';
$return .= (isset($_POST['provincie']) and in_array($row['provincie'], $_POST['provincie'])) ? ' checked' : '';
$return .= '>' . $row['provincie'] . '<br />';
}
return $return;
?>
Het probleem ligt hem niet bij het genereren van die checkboxen maar het probleem ligt erbij dat hij helemaal niks returnd in de functie zelf.
Gewijzigd op 14/05/2012 14:06:23 door Albert de Wit
Laat die functie eens zien. En hoe roep je die aan?
Albert, nogmaals de oproep om eens duidelijk te worden. Met de informatie die je geeft is bijzonder weinig te doen.
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
<table class='zoekmachine'>
<tr>
<td class='sorteeropties'>
<form action='index.php' method='GET'>
<?php
if (isset($GET['sorteer']))
{
for ($i=0;$i<count($_GET['provincie']);$i++)
{
$provincie[$i] = $_GET['provincie'][$i];
}
}
else
{
$provincie = '';
}
$function->sorteeropties($provincie);
?>
<input type='submit' value='Sorteer' name='zoek'>
</form>
</td>
<td class='zoekresultaten'>
</td>
</tr>
</table>
<tr>
<td class='sorteeropties'>
<form action='index.php' method='GET'>
<?php
if (isset($GET['sorteer']))
{
for ($i=0;$i<count($_GET['provincie']);$i++)
{
$provincie[$i] = $_GET['provincie'][$i];
}
}
else
{
$provincie = '';
}
$function->sorteeropties($provincie);
?>
<input type='submit' value='Sorteer' name='zoek'>
</form>
</td>
<td class='zoekresultaten'>
</td>
</tr>
</table>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php public function sorteeropties()
{ // connectie maken met de database
$this->Connect('localhost','root','','test');
$result = mysql_query("SELECT provincie FROM sorteeropties WHERE provincie!=''");
$return = '';
while($row = mysql_fetch_assoc($result))
{
$return .= '<input type="checkbox" name="provincie[]" value="' . $row['provincie'] . '"';
$return .= (isset($_POST['provincie']) and in_array($row['provincie'], $_POST['provincie'])) ? ' checked' : '';
$return .= '>' . $row['provincie'] . '<br />';
}
return $return;
}
?>
{ // connectie maken met de database
$this->Connect('localhost','root','','test');
$result = mysql_query("SELECT provincie FROM sorteeropties WHERE provincie!=''");
$return = '';
while($row = mysql_fetch_assoc($result))
{
$return .= '<input type="checkbox" name="provincie[]" value="' . $row['provincie'] . '"';
$return .= (isset($_POST['provincie']) and in_array($row['provincie'], $_POST['provincie'])) ? ' checked' : '';
$return .= '>' . $row['provincie'] . '<br />';
}
return $return;
}
?>
- SanThe - op 14/05/2012 13:53:45:
Ik ben uitgegaan van een formulier die met POST wordt verzonden.
Jouw formulier gebruikt GET. Pas in mijn stukje dan wel POST naar GET aan.
Je moet dit dan wel in een echo zetten:
$function->sorteeropties($provincie);
dat was em!!! WAT ACHTERLIJK VAN MIJ!
dit soort foutjes kom ik altijd wel weer tegen en dit zal niet de laatste keer zijn
Alleen die functie heeft geen argumenten, dus die hele variabele $provincie heb je niet meer nodig. In de functie gebruik je namelijk de $_POST waarde direct.
En dan, wat Santhe al zegt, de uitkomst van de functie moet je nog wel echoen, anders zie je inderdaad helemaal niets.
En een opmerkingen van andere aard: een object $function noemen is misschien niet de meest duidelijke keuze.
dus je hoeft $_POST waardes nooit in de haakjes () te zetten van een functie?
Maar in elk geval moet je dan wel zorgen dat de functie een argument accepteert, nu is dat niet het geval.
hartstikke bedankt allemaal voor jullie hulp