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 :

Formulaire avec checkbox


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Par défaut Formulaire avec checkbox
    voila j'ai un formulaire comprenant des checkbox et j'aimerais récupérer toutes les valeur du formulaire y compris TOUS les choix pris dans les checkbox

    et j'ai aussi un autre soucis c est que cela me renvoie tjr sur le "else : problème"

    j'aimerais donc trouver une solution ^^"

    j'ai déjà coder un truc mais je ne suis pas sur que cela soit la manière la plus simple ^^" si quelqu un peut m'aider


    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
     
    <!-- debut du menu -->
     
    <?php
    include('menu.php');
    ?>
    <!-- fin du menu -->
     
    <!-- debut du menu -->
     
    <!-- Déclaration du type de document -->
    <!DOCTYPE HTML>
    <html>
    	<head>
    		<title>Inscription_user</title>
    		<link rel="stylesheet" type="text/css" href="../../CSS/style_base.css" />
     
    	</head>
    	<body>
    		<div id="fond">
     
     
     
    			<div id="contenu">
    				<table>
     
    					<!-- debut du contenu de la partie sombre -->
    					<?php
    						if (!empty($_POST['nom']) && !empty($_POST['prenom'])&& !empty($_POST['adresse']) && !empty($_POST['bday']) && !empty($_POST['mail']) && !empty($_POST['mot_de_passe']) && !empty($_POST['liste']) && !empty($_POST['sexe'])&& !empty($_POST['os[]'])&& !empty($_POST['genre[]'])) 
    						{
    							// on entre le code pour ecrire les tableaux
     
    							include('experience.php');
    							$nom= $_POST['nom'];
    							$prenom= $_POST['prenom'];
    							$adresse= $_POST['adresse'];
    							$bday= $_POST['bday'];
    							$mail= $_POST['mail'];
    							$mail2= $_POST['mail2'];
    							$mot_de_passe=	$_POST['mot_de_passe'];
    							$mot_de_passe2=	$_POST['mot_de_passe2'];
    							$liste=$_POST['liste'] ;
    							$sexe=$_POST['sexe'];
    							$os=$_POST['os[]'];
     
     
    								for ($i=0;$i<sizeof($os);$i++)
    									{
    										if (isset($os[$i])) 
    											{
     
     
    											// Enregistre le tableau $array dans le fichier os.txt
    												tabtofile($os, "os.txt");
     
    											}
    									}
    									// Récupere le tableau dans le fichier
    								$tableau = filetotab("os.txt");
     
    							$genre=	$_POST['genre[]'];
     
    								for ($i=0;$i<sizeof($genre);$i++)
    									{
    										if (isset($genre[$i])) 
    											{
     
    											// Enregistre le tableau $array dans le fichier genre.txt
    												tabtofile($genre, "genre.txt");
     
    											}
    									}
    																	// Récupere le tableau dans le fichier
    								$tableau2 = filetotab("genre.txt");
     
    								file_put_contents("../../TXT/user.txt", $nom .'|'. $prenon .'|'. $adresse .'|'. $bday .'|'. $mail .'|'. $mot_de_passe .'|'. $liste .'|'. $sexe .'|'. $tableau .'|'. $tableau2 . "\r\n" ,FILE_APPEND);
    								echo '		<TABLE BORDER="0" width= 80% align="center">
    
    								<tbody>
    									<tr align="center" width="1300">
    										<td colspan="2" >
    										<div id="inscription_validation">
    										Votre inscription est validée !</div></br>
    										<input type="button" name="Accueil" value="Accueil" onClick="javascript:document.location.href=\'acceuil.php\'"/>
    										</td>
    									</tr>';
    						}
    						else
    						{
    							echo '		
    								<TABLE BORDER="0" width= 80% align="center">
    
    									<tbody>
    										<tr align="center" width="1300">
    											<td colspan="2" >
    
    												<div>
    													Problème</br>
    												</div>
    												<input type="button" name="Accueil" value="Accueil" onClick="javascript:document.location.href=\'acceuil.php\'"/>
    											</td>
    										</tr>
    								';
    						}
     
    					?>
    				</table>
    				<!-- fin du contenu de la partie sombre -->
     
    			</div>
    		</div>
     
     
     
    	</body>
    </html>
    <!-- debut du footer -->
     
    <?php
    include('footer.php');
    ?>
     
    <!-- fin du footer -->
    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
     
     
    <?php
     
    function tabtostring($tab)
    {
        if (!is_array($tab)) return false;
        $string = "array";
        foreach($tab as $key => $content)
        {
            if(is_array($tab[$key]) && gettype($key)!="object" && gettype($key)!=
    "resource" && gettype($key)!= "unknown")
            {
                $string.="\n".gettype($key)."\n".base64_encode($key)."\n".
    tabtostring($content);    // Récursivité
            }
            else
            {
                if(gettype($key)!="object" && gettype($key)!="resource" && gettype(
    $key)!= "unknown" && gettype($content)!="object" && gettype($content)!=
    "resource" && gettype($content)!= "unknown")
                {
                    $string.="\n".gettype($key)."\n".base64_encode($key)."\n".
    gettype($content)."\n".base64_encode($content);
                }
            }    
        }
        $string.="\nendarray";
        return $string;
    }
     
    function stringtabtotab($stringtab, $begin)
    {
        if (!is_array($stringtab)) return false;
        $i=$begin;
        while($i<(count($stringtab)-1))
        {
            if(@$stringtab[$i+2]=="array")
            {
                $cle = base64_decode($stringtab[$i+1]);
                settype($cle, $stringtab[$i]);
                $tab[$cle]=stringtabtotab($stringtab, $i+3);
                while($stringtab[$i]!="endarray"){ $i++; }
                $i++;
            }
            elseif($stringtab[$i]=="endarray")
            {
                return $tab;
            }
            else
            {
                $cle = base64_decode($stringtab[$i+1]);
                $valeur = base64_decode($stringtab[$i+3]);
                settype($cle, $stringtab[$i]);
                settype($valeur, $stringtab[$i+2]);
                $tab[$cle]=$valeur;
                $i+=4;
            }
        }
        return $tab;
    }
     
    function tabtofile($tab, $filename)
    {
        $donnees = tabtostring($tab);
        if(($fp=fopen($filename, 'w')) && $donnees)
        {
            fwrite($fp, $donnees);
            fclose($fp);
            return true;
        }
        else
        {
            return false;
        }
    }
     
    function filetotab($filename)
    {
        if(!file_exists($filename)) return false;
        $donnees = file($filename);
        foreach($donnees as &$content) $content=trim($content);
        return stringtabtotab($donnees, 1);    
    }
     
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tes checkbox s'appellent name="os[]" tu récupère un tableau $_POST['os'] pas $_POST['os[]'].

    Seules sont renvoyées les valeurs des cases cochées.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Par défaut
    merci , cela a régler le soucis du renvoie vers le 'else: problème'
    par contre le soucis de la chekbox n'est pas résolue :/

    au lieu d obtenir un fichier .txt de ce style

    nom|prenoms|adresse|mots_de_passe|date_de_naissance|os[os1;os2;os3;...]|categorie[categorie1;categorie2....]

    j'obtient un fichier texte de ce style

    lol|lol|lol|2016-04-05|lol@lol.fr|lol|chomeur|homme|Array|Array

    et quand j 'envoie mon formulaire cela m'ecrit cette erreur

    Nom : erreur.jpg
Affichages : 128
Taille : 68,5 Ko

    (le but étant ensuite de voir les cases ayant étaient cocher pour ensuite 'dispatcher' les jeux sur plusieurs page correspondant chacune a une case )
    si tu veux voir a quoi resemble mon formulaire ^^
    Nom : formulaire.jpg
Affichages : 132
Taille : 91,5 Ko

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut que tu debugues : est-ce que $_POST['os'] est conforme à ce que tu attends, est-ce que la fonction tabtostring() donne le résultat attendu avec les données de $_POST['os'] etc.

    Honnetement ce code est une telle usine à gaz que cela ne donne pas envie de le démonter.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Par défaut
    hahahaha ^^ pour cela que je demander aussi si quelqu un connaissait une méthode plus fluide ^^"
    car c est vrai que c est un monstre ce code mdr
    mon soucis etant que je n'est le droit d utiliser que php , javascrype css html et comme 'base de données' des fichier.txt

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    mon soucis etant que je n'est le droit d utiliser que php
    Ca tombe bien c'est ton PHP qui est moche. Je suppose que c'est une fonction que tu as recopié ? Tu n'as en tout cas pas besoin de cette artillerie.

    Un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau = implode('|', $_POST['os']);
    ferra l'affaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Ce n'est pas parce que tu dois coder en PHP que tu es obligé de tout réinventer

    Si tu dois travailler avec des fichiers pour stocker les informations, tu peux utiliser les fonctions natives pour la lecture/écriture : fgetcsv et fputcsv, qui ont l'avantage de gérer toutes seules le découpage sur les séparateurs.

    Pour transformer un tableau de chaines en chaine concaténée, il y a la fonction implode (et son inverse explode)

    Il faut aussi savoir ce que font tes fonctions, parce que honnêtement, ta fonction tabtostring me donne mal à la tête. Tu essayes d'avoir quoi en sortie exactement ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'envoi formulaire avec checkboxes
    Par neospirit dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2011, 11h14
  2. problème formulaire avec checkbox
    Par toinou62 dans le forum Langage
    Réponses: 1
    Dernier message: 30/09/2007, 14h07
  3. [MySQL] Modifier un formulaire avec checkbox
    Par isa150183 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/01/2007, 21h32
  4. Timeout sur POST formulaire avec checkbox
    Par shyangel dans le forum Langage
    Réponses: 16
    Dernier message: 11/05/2006, 12h59
  5. Pb validation formulaire avec checkbox
    Par wolfe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/12/2005, 08h50

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