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

PHP & Base de données Discussion :

INSERT de choix multiples en pdo


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut INSERT de choix multiples en pdo
    Bonjour, j'ai d'insérer les données choix en une ligne dans ma base de donnée déjà une chose et les re sortir en un tableau


    idA pseudo sexe choix jours annonce
    11 webmaster H maison 1423738852 salut
    10 webmaster H appartement 1423738852 salut
    9 webmaster H flat 1423738852 salut

    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
    <?php 
    include'sources/config1.php';
     
     
    if(isset($_POST['Submit'])){
     
     
    $pseudo=addslashes($_POST['pseudo']);
    $jours=addslashes($_POST['jours']);
    $annonce=addslashes($_POST['annonce']);
    $sexe_m=addslashes($_POST['sexe']);
     
     
     
     
    				 if($_POST['Submit'] == TRUE){
     
    				 foreach($_POST['choix'] as $liste){
     
                     $add_annonce=array(':pseudo'=> $pseudo,
    								    ':sexe'=> $sexe_m,
    				                    ':choix'=> $liste,
    				                    ':jours'=> $jours,
    				                    ':annonce'=> $annonce);	
     
                     $values= join(', ',array_keys($add_annonce));
                     $req=$connection->prepare( 'INSERT INTO annonce ('.str_replace(':','',$values).') VALUES('.$values.')' );
                     $req->execute($add_annonce);	
    				 }
     
    	  echo' <script>
          $(document).ready(function() {
          $("#dialog").dialog({
    	  modal: true,
    	  opacity: 0.9,		 
    	  minWidth: 400 ,
    	  height: 120,
    	  position: [480,350],	                      
    	  });
          });
          setTimeout( function() { 
    	  window.location.href = ("http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/membre.php?idm='.$_SESSION['idm'].'");
          }, 15000 );
          </script>';
    	  echo'<div id="dialog" style="display:none;font-size:10px;" title="Réussi"><img src="images/1.gif" width="24" height="24" border="0"><br />
    	  <center><b>Votre annonce est inserée!!!!<br/>';echo $sexe_m; echo'&nbsp;&nbsp;';echo $pseudo;echo'&nbsp;&nbsp;';echo $jours; echo'&nbsp;&nbsp;';echo $liste; echo'&nbsp;&nbsp;';echo $annonce; echo'</b></center></div>';	
     
    	  include'pieds.php';
          }
    //////////////////////////////////////////////////////////////////////////////////////////////////////
          }else {
    	   echo' <script>
          $(document).ready(function() {
          $("#dialog").dialog({
    	  modal: true,
    	  opacity: 0.9,		 
    	  minWidth: 400 ,
    	  height: 120,
    	  position: [480,350],	                      
    	  });
          });
          setTimeout( function() { 
    	  window.location.href = ("http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/add_annonce.php?idm='.$_SESSION['idm'].'");
          }, 5000 );
          </script>';
    	  echo'<div id="dialog" style="display:none;font-size:10px;" title="Erreur inscription"><img src="images/1.gif" width="24" height="24" border="0"><br />
    	  <center><b>Une erreur à l\'inscription <br/> veuillez recommencez!!!!<br/></b></center></div>';
    	  include'pieds.php';
          }	
     
    ?>

  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
    Et quel est ton problème ?

    Au passage quand même : présente correctement ton code et soit logique ; par exemple ta ligne 16 est redondante avec ta ligne 5.
    Egalement tes addslashes ne servent à rien.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    Bonjour merci du conseil pour la redondance, en quelques mots j'aimerais ajouter les choix avec un implode et avoir une seule entrée dans la base de données.

    Le seul souci j'ai fait plein de test avec implode et à chaque fois je me plante

    Merci;

    La redondance est retiré

  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
    Tu peux etre plus precis que "plante" ?
    Au passage quand meme, ce que tu veux faire n'est pas conforme à une base de données relationnelle.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    Dans l'insert sur le idA disons 1 avoir sur le champ choix appartement,maison,flat en une seule insertion et pas avoir plusieurs idA un avec maison, etc...

  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
    Je ne vois pas ta difficulté pour utiliser implode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $add_annonce=array(':pseudo'=> $pseudo,
    					            ':sexe'=> $sexe_m,
    				                    ':choix'=> implode(',', $liste),
    				                    ':jours'=> $jours,
    				                    ':annonce'=> $annonce);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par speedylol Voir le message
    Bonjour, j'ai d'insérer les données choix en une ligne dans ma base de donnée déjà une chose et les re sortir en un tableau
    Je tire mon chapeau à sabotage , qui semble avoir compris cette phrase du premier coup.

    Cela dit...... speedylol, peux-tu montrer :
    • le bout de formulaire avec les checkbox "choix" ? (ou radio ?)
    • ce que renvoie var_dump['choix'] (quand tu testes le formulaire)
    • et echo implode(',', $liste); ?
    • comment est défini le champ "choix" dans ta table (en base de données) ? VARCHAR ? ... ?
    • la requête SQL ?

    Bref, le minimum nécessaire et suffisant pour trouver la luciole.
    Dernière modification par Invité ; 16/03/2015 à 02h38.

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    Bonjour j'ai trouvé une solutions la cela s'insérer bien dans la base de donnée mais en décroissance, je coche trois checkbox, j'ai une ligne avec les trois cases données, la seconde avec deux données , et la dernière avec une seule donnée, pour la même insertion?.

    Il reste à trouver comment faire une seule insertion et non pas trois quand j'ai cocher trois checkbox.

    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
    				 //Préparation de la chaîne pour l'insertion
                     $chaine_liste = ""; $separateur = "";
                     for ($i = 0 ; $i < count($liste) ; $i++)
    	             {
    	             $chaine_liste .= $separateur . $liste[$i];
    	             $separateur = ",";
     
     
     
                     $add_annonce=array(':pseudo'=> $pseudo,
    								    ':sexe'=> $sexe_m,
    				                    ':choix'=> $chaine_liste,
    				                    ':jours'=> $jours,
    				                    ':annonce'=> $annonce);	
     
                     $values= join(', ',array_keys($add_annonce));
                     $req=$connection->prepare( 'INSERT INTO annonce ('.str_replace(':','',$values).') VALUES('.$values.')' );
                     $req->execute($add_annonce);	
    				}

  9. #9
    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 tu mets un INSERT dans une boucle, tu auras forcement une insertion à chaque tour de boucle.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    Bonjour merci de tes réponse, je vois pas avec l' insert stp? serait tu m'éclairè ?

  11. #11
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 817
    Billets dans le blog
    14
    Par défaut
    La phrase la plus importante dans les réponses données par sabotage est quand même celle-ci :
    Au passage quand meme, ce que tu veux faire n'est pas conforme à une base de données relationnelle.
    Vouloir stocker tous les choix d'un utilisateur sur une seule ligne, c'est anti-BDD relationnelle !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [MySQL] Liste déroulante choix multiples + insertion MYSQL
    Par snorky94 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/07/2012, 10h10
  2. [PDO] insertion multiple avec PDO
    Par kate59 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 01/07/2011, 17h32
  3. [MySQL] choix multiple case a coché et insertion dans la base
    Par sooprano dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/03/2010, 16h57
  4. Insertion d'icône dans un choix multiple
    Par groupe51 dans le forum Java ME
    Réponses: 4
    Dernier message: 12/01/2007, 10h41
  5. formulaire choix multiple
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 02/02/2003, 18h59

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