IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Recuperation de checkbox


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 35
    Points : 2
    Points
    2
    Par défaut Recuperation de checkbox
    bonjour à tous,

    Voilà j'ai créé un formulaire pour ensuite l'envoyer par mail..

    donc j'ai un petit soucis, j'arrive a récupérer une fois les données o_O des checkbox seulement ... a chaque fois il me renvoit i... a comprendre pourtant avec le code ci dessous j'ai déjà réussi a récupérer des données sur d'autres checkbox

    Dans ce formulaire figure des checkbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="checkbox" name="EpoqueBien[]" value="Ancien" id="ancien" /> <label for="ancien">Ancien</label>
    								<input type="checkbox" name="EpoqueBien[]" value="Recent" id="recent" /> <label for="recent">Récent</label>
    								<input type="checkbox" name="EpoqueBien[]" value="Indifferent" id="indifferent" /> <label for="indifferent">Indifférent</label>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $EpoqueBien=''; 
    				for ($i=0 ; $i<count($_POST['EpoqueBien']) ; $i++)
    				{
    					if(isset($_POST['EpoqueBien'][$i]))
    						{
    						$EpoqueBien .= $_POST['EpoqueBien'][$i].", "; //on rajoute une virgule après chaque élément coché...
    						}
    				}
    				$EpoqueBien=rtrim($EpoqueBien," ,"); // on suprime la dernière virgule de la chaine

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Si tu change la méthode en GET, tu devrais pouvoir voir dans l'URL ce qui est mis. Cela sera plus facile pour trouver l'erreur je pense (juste pour trouver l'erreur, après tu remet à POST).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 35
    Points : 2
    Points
    2
    Par défaut
    hmm

    ca ne change rien ...

    comment expliquer que ce code exactement mot pour mot est le m^me est qu'il fonctionne correctement et on rcupére bien dans notre mail les valeurs

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Je ne comprend pas ce que tu dis. Déjà pour ton premier post j'ai essayer de deviner un petit peu mais je ne suis pas sûr d'avoir tout compris, il doit te manquer quelques mots dans tes phrases.


    Si je t'ai conseillé d'utiliser la méthode GET, c'est pour voir l'URL, ainsi tu pourra voir pour chacun des champs, son nom et sa valeur.

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Il faut savoir que s'il y a plusieurs checkbox, il sont indépendant les uns des autres.
    Ce qui par ailleurs est différent des boutons radios (on dit même : groupe de bouton radios)
    Or, ton code donne l'impression que tu souhaite quelles soient liées entre elles.


    Peut être faudrait il mettre des noms différents pour chaque type de paramètres (Ancien, Recent, Indifferent) pour récupérer indépendamment leur état (Oui ou Non).
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="checkbox" name="ancien" value="1" id="ancien" />
    <input type="checkbox" name="recent" value="1" id="recent" />
    <input type="checkbox" name="indifferent" value="1" id="indifferent" />
    Ensuite il suffit de vérifier si chaque checkbox est retourné ou pas (pas besoin de boucle normalement).

    Un simple if (empty()) ... suffit pour savoir si c'est coché ou pas.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    if (!empty($_POST['ancien'])) {
        // Ok, "ancien" est Coché
    }
    else {
        // "ancien" pas coché
    }
     
    // Idem pour recent et indifferent
    ?>
    Par ailleurs, il faut avoir le réflexe de faire des print_r() (ou var_dump) sur $_POST (ou $_GET, etc ...) pour vérifier qu'est ce qui a été retourné par le formulaire, et aussi comment.
    Raison de plus s'il y a des données structurées en tableau.
    Sinon c'est quelque peu l'inconnu, donc on est bloqué.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    J'aurais une petite question, est-il possible de les nommer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input type="checkbox" name="c[1]" value="1" id="c[1]" />
    <input type="checkbox" name="c[2]" value="1" id="c[2]" />
    <input type="checkbox" name="c[3]" value="1" id="c[3]" />
    Et de les récupérer comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for($i = 1; $i <= 3; $i++)
          if(isset($_POST['c[' . $i . ']')) .... ;
    Car j'ai l'impression que c'est ce que le PO voudrait faire.
    (Au pire les nommer c1, c2, c3)

    Parce que si on a 100 checkbox et qu'on veut compter le nombre de checkbox cochée, faire 100 if(isset()) à la main c'est un peu long...

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 35
    Points : 2
    Points
    2
    Par défaut
    je serai sans doute plus clair :

    le code HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    <div id="formulaire">
    		<form method="post" action="TraitementConseilAchat.php">
    			<div id="Coordonne">
    				<fieldset class="Coordonne">
    					<legend>Vos coordonnées </legend>
    					<table align="center">
    						<tr>
    							<td>
    								<label for="nom">Nom </label>
    							</td>
    							<td width="40px"></td>
    							<td>
    								<input required type="text" name="nom" maxlength="35" size="22" id="ConseilNom" autofocus/><br />
    							</td>
    						</tr>
    						<tr>
    							<td>
    								<label for="prenom">Prenom </label>
    							</td>
    							<td width="40px"></td>
    							<td>
    								<input required type="text" name="prenom" maxlength="35" size="22" id="ConseilPrenom" /><br />
    							</td>
    						</tr>
    						<tr>
    							<td>
    								<label for="telephone">Telephone </label>
    							</td>
    							<td width="40px"></td>
    							<td>
    								<input required type="tel" name="tel" maxlength="20" size="22" id="ConseilTel"/>
    							</td>
    						</tr>	
    						<tr>
    							<td>
    								<label for="email">E-mail </label>
    							</td>
    							<td width="40px"></td>
    							<td>
    								<input required type="email" name="email" maxlength="50" size="22" id="ConseilMail" placeholder="mail@domaine.com"/>
    							</td>
    						</tr>
    						<tr>
    							<td>
    								<label for="ville">Ville </label>
    							</td>
    							<td width="40px"></td>
    							<td>
    								<input required type="texte" name="ville" maxlength="100" size="22" id="ConseilVille"/>
    							</td>
    						</tr>
    					</table>
    				</fieldset>
    			</div>
     
    			<div id="nature">
    				<fieldset class="nature">
    					<legend>Nature des biens recherchés </legend>
    					<table align="center">
    						<tr>
    							<td>
    								<input type="checkbox" name="nature[]" value="Maison" id="Maison" /> <label for="Maison">Maison</label>
    							</td>
    							<td>
    								<input type="checkbox" name="nature[]" value="Appartement" id="Appartement" /> <label for="Appartement">Appartement</label>
    							</td>
     
    							<td>
    								<input type="checkbox" name="nature[]" value="Bureaux" id="Bureaux" /> <label for="Bureaux">Bureaux / Locaux Commerciaux</label>
    							</td>
    						</tr>
    						<tr height="5px">
    							<td></td>
    						</tr>
    						<tr>
    							<td>
    								<input type="checkbox" name="nature[]" value="Garages" id="Garages" /> <label for="Garages">Garage</label>
    							</td>
    							<td>
    								<input type="checkbox" name="nature[]" value="TerrainBatir" id="TerrainBatir" /> <label for="TerrainBatir">Terrains à batir</label>
    							</td>
    							<td>
    								<input type="checkbox" name="nature[]" value="TerrainAgricole" id="TerrainAgricole" /> <label for="TerrainAgricole">Terrain Agricole</label>
    							</td>
    						</tr>
    					</table>
    				</fieldset>
    			</div>
     
    			<div id="EpoqueBien">
    				<fieldset class="EpoqueBien">
    					<legend>Epoque du bien </legend>
    					<table align="center">
    						<tr>
    							<td>
    								<input type="checkbox" name="EpoqueBien[]" value="Ancien" id="Ancien" /> <label for="ancien">Ancien</label>
    								<input type="checkbox" name="EpoqueBien[]" value="Recent" id="Recent" /> <label for="recent">Récent</label>
    								<input type="checkbox" name="EpoqueBien[]" value="Indifferent" id="Indifferent" /> <label for="indifferent">Indifférent</label>
    							</td>
    						</tr>			
    					</table>
    				</fieldset>
    			</div>
     
    			<div id="SecteurGeo">
    				<fieldset class="SecteurGeo">
    					<legend>Veuillez préciser le nom des communes / secteur géographique </legend>
    					<table align="center">
    						<tr>
    							<td>
    								<label for="surface">Surface habitable </label>
    							</td>
    							<td width="40px"></td>
    							<td>
    								<input required type="text" name="surface" maxlength="50" size="10" id="ConseilSurface"/>&nbsp;&nbsp;&nbsp;m<sup>2</sup>
    							</td>
    						</tr>
    						<tr>
    							<td>
    								<label for="budget">Budget </label>
    							</td>
    							<td width="40px"></td>
    							<td>
    								<input required type="text" name="budgetMin" maxlength="100" size="5" id="ConseilBudget"/>&nbsp;&nbsp;et
    								<input required type="text" name="budgetMax" maxlength="100" size="8" id="ConseilBudget"/>&nbsp;&nbsp;&nbsp;&euro;
    							</td>
    						</tr>
    						<tr>
    							<td>
    								<label for="secteur">Secteur géographique </label>
    							</td>
    							<td width="40px"></td>
    							<td>
    								<input required type="texte" name="secteur" maxlength="150"  size="22" id="ConseilSecteur"/>
    							</td>
    						</tr>
    					</table>
    				</fieldset>
    			</div>
     
    			<div id="critere">
    				<fieldset class="critere">
    					<legend>Autres critères incontournables </legend>
     
    					<input type="checkbox" name="critere[]" value="Renove" id="Renove" /> <label for="renove">A rénover</label><br />
    					<input type="checkbox" name="critere[]" value="Recent" id="Recent" /> <label for="recent">Absence de travaux autres que décoratifs</label><br />
    					<input type="checkbox" name="critere[]" value="Plainpied" id="Plainpied" /> <label for="plainpied">Plain pied</label><br />
    					<input type="checkbox" name="critere[]" value="Mitoyennete" id="Mitoyennete" /> <label for="mitoyennete">Absence de mitoyenneté</label><br />
    					<input type="checkbox" name="critere[]" value="Garage" id="Garage" /> <label for="garage">Garage</label><br />
    					<input type="checkbox" name="critere[]" value="Ascenseur" id="Ascenseur" /> <label for="ascenseur">Ascenseur</label><br /><br />
    					<label for="budget">Autres critères : </label>
    					<input type="text" name="autrecritere" maxlength="50" id="critere"/>
    				</fieldset>
    			</div>
    			<input style="margin-left:200px;margin-top:5px;" type="submit" value="Envoyer">
    		</form>	
    	</div>
    le php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php	 
     
    if (isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['email']) && isset($_POST['tel']) && isset($_POST['ville']) 
    		&& isset($_POST['nature']) && isset($_POST['EpoqueBien']) && isset($_POST['surface']) && isset($_POST['budgetMin']) && isset($_POST['budgetMax'])
    			&& isset($_POST['secteur']) && isset($_POST['critere']))
    {	
     
     
    				$nature='';
    				for ($i=0 ; $i<count($_POST['nature']) ; $i++)
    				{
    					if(isset($_POST['nature'][$i]))
    						{
    						$nature .= $_POST['nature'][$i].", "; //on rajoute une virgule après chaque élément coché...
    						}
    				}
    				$nature=rtrim($nature," ,"); // on suprime la dernière virgule de la chaine 
    				echo $nature;
     
    				$EpoqueBien=''; 
    				for ($i=0 ; $i<count($_GET['EpoqueBien']) ; $i++)
    				{
    					if(isset($_GET['EpoqueBien'][$i]))
    						{
    						$EpoqueBien .= $_GET['EpoqueBien'][$i].", "; //on rajoute une virgule après chaque élément coché...
    						}
    				}
    				$EpoqueBien=rtrim($EpoqueBien," ,"); // on suprime la dernière virgule de la chaine 
    				echo $EpoqueBien;
     
    				$critere='';
    				for ($i=0 ; $i<count($_POST['critere']) ; $i++)
    				{
    					if(isset($_POST['critere'][$i]))
    						{
    						$critere .= $_POST['critere'][$i].", "; //on rajoute une virgule après chaque élément coché...
    						}
    				}
    				$critere=rtrim($critere," ,"); // on suprime la dernière virgule de la chaine 
    				echo $critere;
     
    		$destinataire = "gauthier.hornoy@gmail.com";
    		$sujet = "Formulaire Conseil Achat";
    		$message = 'Un message est arrivé \n
    					Nom : '.$_POST['nom'].'
    					Prenom : '.$_POST['prenom'].'
    					Email : '.$_POST['email'].'
    					Telephone : '.$_POST['tel'].'
    					ville : '.$_POST['ville'].'
    					Nature des biens recherchés : '.$nature.'
    					Epoque du bien :'. $EpoqueBien.'
    					Surface : '.$_POST['surface'].'
    					Budget Minimum : '.$_POST['budgetMin'].'
    					Budget Maximum : '.$_POST['budgetMax'].'
    					Secteur : '.$_POST['secteur'].'
    					Autres critères incontournables: '.$_POST['critere'].'
    					Critère supplémentaire: '.$_POST['autrecritere'].'
    					';
    		$entete = 'From '.$_POST['nom'].' \n Reply-To: Email : '.$_POST['email'].'	';
     
     
    		if(mail($destinataire, $sujet, $message, $entete))
    			{
    			echo "Le mail a bien été envoyé.";
    			}
    			else
    			{
    			echo "Vous n'avez pas remplis tous les champs";
    			}
    	}
     
     
    ?>
    En faites quand je vous dit que le code fonctionne c'est par rapport a nature ou il récupére bien tous

  8. #8
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Est-ce que tu peux nous montrer :

    - un imprim. écran (screen) de ton formulaire remplis ;
    - l'URL produite par ce formulaire une fois validée (méthode GET) ;
    - le résultat attendu ;
    - le résultat obtenu ?

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Il y a pas mal de données effectivement.

    Il y a plus simple pour récupérer les checkbox en les cumulant dans une chaine : la fonction implode()

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $EpoqueBien = '';
    if (!empty($_POST['EpoqueBien'])) $EpoqueBien = implode(',', $_POST['EpoqueBien']);
    print_r($EpoqueBien);
    ?>
    On obtient le ou les données séparées par une virgule sans boucle, sans devoir supprimer la dernière, implode() le gère.

    Si tu tiens à faire des boucles, alors utilise une boucle foreach() plus pratique que for().
    Par ailleurs, il n'est théoriquement pas nécessaire de vérifier si un élément du tableau retourné existe ou pas car le navigateur retourne uniquement les checkbox cochées.
    Donc les élément dans $_POST['EpoqueBien'] existent obligatoirement, et donc ont été cochés.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $EpoqueBien = '';
    if (!empty($_POST['EpoqueBien'])) {
        foreach ($_POST['EpoqueBien'] as $Epoque) {
            $EpoqueBien[] = $Epoque;
        }
        if (!empty($EpoqueBien)) $EpoqueBien = implode(', ', $EpoqueBien);
        print_r($EpoqueBien);
    }
    ?>
    Ce qui revient quasi au même que le 1er code ci-dessus en plus de code.


    Au passage, il n'y a pas lieu de changer de méthode POST par GET pour voir ce qu'il y a dans l'URL.
    Un simple print_r() (ou var_dump) sur $_POST ou $_POST['EpoqueBien'] me semble plus simple et plus efficace pour vérifier ce que ça contient et comment c'est structuré.


    En faites quand je vous dit que le code fonctionne c'est par rapport a nature ou il récupére bien tous
    Pige pas.
    Si le code fonctionne, il est ou le problème alors ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 35
    Points : 2
    Points
    2
    Par défaut
    Maintenant plus gros soucis... ca ne fait plus rien alors qu'hier il marchait et envoyer bien des mails la nada ............

    voici l'image du formulaire rempli



    J'ai réussi à retrouver ce que sa donné hier lorsque qu'on recevait le mail :

    Un message est arrivé
    Nom : dupont
    Prenom : jean
    Email : mail@orange.fr
    Telephone : 0222222
    ville : arras
    Nature des biens recherchés : maison, appartement, bureaux, garages, TerrainBatir, TerrainAgricole
    Epoque du bien : i
    Surface : 55
    Budget Minimum : 0
    Budget Maximum : 111100
    Secteur : nnn
    Autres critères incontournables: ascenseura
    Critère supplémentaire: dsdsd


    Donc on peut voir que la 1ere checkbox recupére bien tous alors les autres je ne comprends meme pas ce quelles font ... EpoqueBien recupére un "i" et critére "ascenseura"

    Avant tous je dois trouver pourquoi plus rien ne fonctionne, si vous avez une idée je suis preneur

  11. #11
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Ok, j'avais pas compris ce problème de i

    Mais tu ne fournis toujours pas une information qu'on te demande depuis le début : Qu'est-ce que tu obtiens et comment ?
    C'est essentiel de le fournir car on peu espérer avec de conclure que l'erreur viendrait soit du formulaire (étape d'avant) où du code d'envoi (boucles etc ...).

    Donc Neckara avait suggéré de changer de méthode par GET pour voir ce qu'il y a dans l'URL.
    Il faudrait faire un copier/coller et poster cette URL.
    De mon coté j'avais plutôt suggérer de faire un prin_r($_POST) (méthod POST pour le formulaire), puis faire un copier/coller et poster.


    Par ailleurs, as tu essayé le code que j'ai mis dernièrement avec la fonction implode() ?
    Obtiens tu les même erreurs ?
    (tu ne dis rien la dessus).


    Mais aussi, as tu conservé les mêmes noms au niveau des checkbox du formulaire que tu avais au départ, c'est à dire : EpoqueBien[]
    Et non EpoqueBien (sans les crochets).
    Car ton erreur ressemble étrangement à des oublis de crochets.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 35
    Points : 2
    Points
    2
    Par défaut
    Dsl pour le retard

    Url de la méthode GET :

    http://www.houzet-wemaere-notaires.f...e=arras&nature[]=Appartement&nature[]=Bureaux&nature[]=TerrainBatir&nature[]=TerrainAgricole&surface=250&budgetMin=0&budgetMax=555&secteur=arras&critere[]=Renove&critere[]=Recent&critere[]=Mitoyennete&critere[]=Ascenseur&autrecritere=sqsqs

    print_r($_POST) me renvoi : Array ( )

    non je n'ai pas encore testé le code que tu as mis auparavant car en ce moment même l'envoie de mail ne fonctionne plus ...

  13. #13
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Je pense qu'il voulait que tu fasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print_r($_POST['critere'])
    Mais est-ce que tu es sûr que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $tab[] = 4;
    $tab[] = 5;
    $tab[] = 6;
    Est bien considéré comme un tableau contenant 4; 5 et 6 ?
    Je ne touche pas beaucoup au PHP donc je ne suis pas sûr, mais ça ne me semble pas très "beau" niveau lisibilité. De plus tu es obligé de transmettre une valeur sous forme de chaîne de caractère ou identifier chacune de tes checkbox.

    As-tu essayé d'utiliser ma proposition, c'est à dire d'essayer de nommer des champs critere1, critere2 et de les récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_POST['critere' . $i];
    Ainsi tu as juste à transmettre une valeur de 1 et à vérifier l'existence de la variable $_POST, cela me semble donc plus lisible et plus rapide.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 35
    Points : 2
    Points
    2
    Par défaut
    print_r($_POST['critere']) ne renvoi rien

    et j'ai essayé ta proposition en changeant le nom critère et faire $_POST['critere' . $i];

    Mais en vain

    Comme sa se fait qu'aujourd'hui plus rien ne marche ... même pas l'envoi .. surtout que le code na pas bougé de la nuit ..

  15. #15
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    print_r($_POST) me renvoi : Array ( )
    Là ça relève du BABA en Php tout de même.

    -> Si on défini comme méthode GET dans le formulaire les données seront renvoyée en GET et donc il faudra en toute logique faire :
    print_r($_GET)
    -> si on défini comme méthode POST dans le formulaire alors :
    print_r($_POST)

    http://www.houzet-wemaere-notaires.f...e=arras&nature[]=Appartement&nature[]=Bureaux&nature[]=TerrainBatir&nature[]=TerrainAgricole&surface=250&budgetMin=0&budgetMax=555&secteur=arras&critere[]=Renove&critere[]=Recent&critere[]=Mitoyennete&critere[]=Ascenseur&autrecritere=sqsqs
    C'est pour cette raison que voir ce qu'il y a dans l'URL n'est pas super super, car on a pas l'incrémentation, puis c'est un poil fouilli.
    Ceci dit on ne vois pas d'élément "EpoqueBien".
    En as tu cochés pour les tests ?

    Faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    print_r($_POST); // ou $_GET selon le cas
    echo '</pre>';
    Sera plus clair, compréhensible.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 35
    Points : 2
    Points
    2
    Par défaut
    Avec print_r($_Post) renvoi un array

    et GET

    Array
    (
    [nom] => dupont
    [prenom] => jean
    [tel] => 0202020
    [email] => monmail@domain.fr
    [ville] => arras
    [nature] => Array
    (
    [0] => Appartement
    [1] => Bureaux
    [2] => TerrainBatir
    [3] => TerrainAgricole
    )

    [EpoqueBien] => Array
    (
    [0] => Recent
    [1] => Indifferent
    )

    [surface] => 250
    [budgetMin] => 0
    [budgetMax] => 555
    [secteur] => arras
    [critere] => Array
    (
    [0] => Renove
    [1] => Recent
    [2] => Mitoyennete
    [3] => Ascenseur
    )

    [autrecritere] => sqsqs
    )

  17. #17
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Avec print_r($_Post) renvoi un array
    C'est normal si as tu mis GET comme méthode au niveau du formulaire.

    Les données sont correctement obtenues, c'est déjà ça.
    Avec le code que j'ai mis dernièrement avec implode() fonctionne correctement.

    Donc si tu fait cela lors des récupérations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $EpoqueBien = '';
    if (!empty($_POST['EpoqueBien'])) $EpoqueBien = implode(',', $_POST['EpoqueBien']);
    echo '<pre>';
    print_r($EpoqueBien);
    echo '</pre>';
    Ceci affiche normalement : Recent, Indifferent


    Donc bis : As tu essayé ?
    Obtiens tu le même problème ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 35
    Points : 2
    Points
    2
    Par défaut
    Si on regarde juste avant on voit grâce au print_r que indiffrent et recent sont bien sélectionné

    Le gros soucis là c'est que les mails ne s’envoie plus

  19. #19
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le gros soucis là c'est que les mails ne s’envoie plus
    Ceci aussi fait parti du BABA en Php, c'est à dire qu'on active l'affichage des erreurs de Php lorsqu'on est en phase de développement.
    Sens cela on nage totalement dans l'inconnue.
    C'est la directive display_errors du php.ini (ou faire un ini_set()) qu'il faut activer.


    Par ailleurs, comme tu as à un moment changé de méthode coté formulaire (changé par GET), et bien tous les codes qui prévoient de récupérer les données dans $_POST vont faire "planter" ton code.

    Donc remet POST (au lieu de GET) au niveau du formulaire comme ça l'était au départ, et bien sûr remplacer les $_GET par $_POST s'il y en a.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  20. #20
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 35
    Points : 2
    Points
    2
    Par défaut
    hummm

    Chose que j'ai deja faites

    Method="POST" mais renvoie array toujours et ne fait absolument rien

    Vous pouvez voir mon code HTML plus haut et celui que j'ai en ligne sont exactement les mêmes ..

Discussions similaires

  1. Recuperation de checkbox et nommage avec crochet
    Par arnogb69 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/11/2008, 09h12
  2. recupere un checkBox d'un selectManyCheckbox
    Par Esil2008 dans le forum JSF
    Réponses: 3
    Dernier message: 16/10/2008, 09h57
  3. Recuperer les checkboxes d'un form
    Par yoskater dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 14/02/2008, 10h13
  4. recuperer les checkbox cochés d'une arbre de checkbox
    Par 01211983 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 12/02/2008, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo