Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/07/2008, 19h50   #1
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Par défaut Erreur sur validation de checkbox

Encore moi.
Cette fois c'est un problème de checkbox.

Dans mon fichier fonctions.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
//vérifie si un type d'action est sélectionné (page 2)
function est_selectionne_action($option) {
    if (!isset($_POST['action'])) {
            return FALSE;
    }
    for ($i = 0, $c = count($_POST['action']); $i < $c; $i++) {
        if ($_POST['action'][$i] == $option) {
            return TRUE;
        }
    }
    return FALSE;
}
dans mon fichier dossier_candidature.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$action = "";
if (isset($_POST['action'])){
    for ($i = 0, $c = count($_POST['action']); $i < $c; $i++) {
        $action .= "" . $_POST['action'][$i] . ",";
    }
	$action= substr($action,0,strlen($action)-1);
}
else {
	$action="";
}
?>
<td>
	<input type="checkbox" name="action[]" value="ponctuelle" <?php if(est_selectionne_action("ponctuelle")) { echo 'checked'; } else if(!empty($action)){ if(in_array("ponctuelle",$action)) { echo 'checked'; }} ?> style="margin-left:60px"/>- ponctuelle<br />
	<input type="checkbox" name="action[]" value="programme" <?php if(est_selectionne_action("programme")) { echo 'checked'; } else if(!empty($action)){ if(in_array("programme",$action)) { echo 'checked'; }} ?> style="margin-left:60px"/>- inscrite dans un programme<br />
	<input type="checkbox" name="action[]" value="interactive" <?php if(est_selectionne_action("interactive")) { echo 'checked'; } else if(!empty($action)){ if(in_array("interactive",$action)) { echo 'checked'; }} ?> style="margin-left:60px"/>- interactive<br />						
	<input type="checkbox" name="action[]" value="poursuite" <?php if(est_selectionne_action("poursuite")) { echo 'checked'; } else if(!empty($_action)){ if(in_array("poursuite",$action)) { echo 'checked'; }} ?> style="margin-left:60px"/>- appelée à se poursuivre<br />
	<input type="checkbox" name="action[]" value="reproductible" <?php if(est_selectionne_action("reproductible")) { echo 'checked'; } else if(!empty($action)){ if(in_array( "reproductible",$action)) { echo 'checked'; }} ?> style="margin-left:60px"/>- reproductible<br />
	<input type="checkbox" name="action[]" value="terminee" <?php if(est_selectionne_action("terminee")) { echo 'checked'; } else if(!empty($action)){ if(in_array("terminee",$action)) { echo 'checked'; }} ?> style="margin-left:60px"/>- terminée<br />
</td>
Je ne vois pas pourquoi j'obtiens ce message d'erreur quand une case n'est pas coché.
Code :
1
2
Warning: in_array(): Wrong datatype for second argument in c:\weblocal\sites\clubeuropeendelasante\prix_sante\appels\formulaire_candidature.php on line 569
style="margin-left:60px"/>- interactive
J'avais déjà utilisé tout ça por un autre site et ça marchait.
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2008, 21h26   #2
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bonjour,

Si tu n'avais pas ce message avant c'est probablement que tu n'avais pas le même niveau de remontée des erreurs (en fait, c'est un avertissement, donc un niveau très faible d'erreur).

Le message te signale que le deuxième argument passé à la fonction in_array() n'est pas du bon type. Ca devrait être un tableau, et tu lui passes une chaîne de caractères ($action).

Le plus simple dans ton cas, c'est de simplement faire :
Code :
1
2
3
4
$action = array();
if (isset($_POST['action'])){
    $action = $_POST['action'];
}
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 09h20   #3
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Merci, ça marche
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h37.


 
 
 
 
Partenaires

Hébergement Web