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 :

Php-Mysql : insérer un couple de variables issu d'un checkbox [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Par défaut Php-Mysql : insérer un couple de variables issu d'un checkbox
    Bonjour !

    Après avoir trouvé tant de réponses si efficaces dans ces forums, je me lance car la suis bien bloqué...
    - je génère mes checkbox dynamiquement depuis une base de données, jusque la tout va bien
    - j'envoi les valeurs des checkbox cochées (valeurs A) + une autre valeur en chp masqué elle aussi générée dynamiquement (valeurs B)
    - Je les récupèrent et souhaitent créer des lignes avec ces 2 valeurs : soit une checkbox cochée = 1 variable A + 1 variable B

    Si je n'utilises pas la 2eme variable mon script marche bien, mais impossible de combiner avec une 2ème variable, soit un couple de variable...
    Dans ce cas il me mets toujours la même valeur pour ID_DEPARTEMENT
    la table est faite de 3 champs : code Ecole ($MNT_CODE) / code stage ($ID_S) / code département ($ID_DEPARTEMENT)

    Côté formulaire :
    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
     
    <input type="hidden" name="ID_S" id="ID_S" value="<?php echo "$ID_S"; ?>"/>
    <?php
    $sql_eco = "select * from ecoles WHERE active='1'";
    $rsTemp_eco = mysql_query($sql_eco) or die ('Erreur : '.mysql_error()); 
     
    while ($rowTemp_eco = mysql_fetch_array($rsTemp_eco)) {
    $MNT_CODE = $rowTemp_eco['MNT_CODE'];
    $MNT_NOM = $rowTemp_eco['MNT_NOM'];
    $ID_DEPARTEMENT = $rowTemp_eco['ID_DEPARTEMENT'];						
     
    $html_ecochoix=<<<EOD
    <div class="ecolechoix"><input type="checkbox" name="MNT_CODE[]" id="MNT_CODE[]" value="$MNT_CODE" $checked> $MNT_NOM
    <input type="hidden" name="$MNT_CODE" id="$MNT_CODE" value="0"/><input type="hidden" name="ID_DEPARTEMENT" id="ID_DEPARTEMENT" value="$ID_DEPARTEMENT"/></div>
    EOD;
    echo $html_ecochoix;}
    			  ?>
    Côté traitement des données :
    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
    <?php
     
    $ID_STAGE = $_POST['ID_S'];
     
    $box=$HTTP_POST_VARS['MNT_CODE'];
    $box_count=count($box);
    $i = 0; 
    		foreach ($box as $valeur) {
    		$ID_DEPARTEMENT=$_POST['ID_DEPARTEMENT'];	
    		$insert_eco_stage = "INSERT INTO stages_c VALUES('$valeur','$ID_S','$ID_DEPARTEMENT')";
    		$result = mysql_query($insert_eco_stage) or die ("<h1>Erreur 0001</h1>");
    		$i++;
     
    		}
    $renvoi = "../../index.php?update=1"; 
    header("Location: $renvoi");
     
    ?>
    Merci beaucoup pour votre aide...

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 319
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 319
    Billets dans le blog
    17
    Par défaut
    Dans ce cas il me mets toujours la même valeur pour ID_DEPARTEMENT
    Normal puisque tes champs HIDDEN ont tous le même nom.

    Es-tu sûr de la nécissité d'envoyer ID_DEPARTEMENT via le formulaire ?

    1. A priori tu peux les récupérer lors du traitement du formulaire ;
    2. Puisque l'info est déjà présente dans la table écoles il ne faudrait mieux pas la répliquer par ailleurs ;
    3. Il ne faut plus utiliser $HTTP_POST_VARS mais $_POST

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Par défaut
    Merci pour ce retour.
    Effectivement tu parles de traiter la recherche ID_DEPARTEMENT dans le foreach... en ajoutant une requête qui va cherche la valeur...

    Je part tester cette solution !

    Merci.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Par défaut
    Pour expliquer mon cas, et la répliquaton des donnes :
    - j'ai une table d'ecoles et une table de stages
    mais j'ai des stages affectés a plusieurs ecoles, donc j'ai une table supplémentaire qui me lie id_ecole et id_stage.

    Seulement quand j'affiche tout ça, je veux trier mes données par départements, hots ma requete allant dans la dernière table chercher les ecoles qui correspondent aux stage choisi, impossible de trier par département.

    Donc je veux ajouter cette valeur dans la table qui liera donc : ecole - stage - departement.

    Mes compétences étant limitées ja'i chercher a trier des valurs issues d'une table avec un critère d'une autre table mais sans succès.
    Pour info la requete d'affichage ressemble à ça avec "order by ID_DEPARTEMENT desc" qui sert a rien...

    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
     
    $sql_eco = "select * from stages_c where ID_PRODUIT_COMMUN='$ID_STAGE'";
    $rsTemp_eco = mysql_query($sql_eco) or die ($sql_eco); 
    	while ($rowTemp_eco = Mysql_Fetch_Assoc($rsTemp_eco)) {
    	$ID_STRUCTURE2 = $rowTemp_eco['ID_STRUCTURE'];
    	$sqlID_STRUCTURE2 = "select * from ecoles WHERE MNT_CODE='$ID_STRUCTURE2' order by ID_DEPARTEMENT desc";
    	$rsTempID_STRUCTURE2 = mysql_query($sqlID_STRUCTURE2) or die ($sqlID_STRUCTURE2); 
    		while ($rowTempID_STRUCTURE2 = mysql_fetch_array($rsTempID_STRUCTURE2)) {
    		$id_art = $rowTempID_STRUCTURE2['idj'];
    		$MNT_NOM = Utf8_Encode($rowTempID_STRUCTURE2['MNT_NOM']);
    		$ID_DEPARTEMENT = $rowTempID_STRUCTURE2['ID_DEPARTEMENT'];
    		$lien_ecole_temp = 'index.php?id='.$id_art.'';
    		$lien_ecole= '<a href="'.$lien_ecole_temp.'">'.$MNT_NOM.'</a><br>';
    	}
    }

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 319
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 319
    Billets dans le blog
    17
    Par défaut
    Hum, pour afficher les stages triés par département il suffit de faire une jointure.

    Mettons que tu aies une bdd de la sorte :

    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
    ecoles
    ----------------
    ecole_id
    ecole_nom
    ecole_departement # Clef sur departements.departement_id
    ...
     
    departements
    ----------------
    departement_id # 75 = Paris, 94 = Val-de-Marne, etc.
    departement_nom
     
    stages
    ----------------
    stage_ecole  # Clef sur ecoles.ecole_id
    ...
    Pour afficher les stages triés par départements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ALL departement_nom, departement_id, etc.
    FROM stages
    INNER JOIN ecoles ON stage_ecole = ecole_id
    INNER JOIN departements ON ecole_departement = departement_id
    ORDER BY departement_id ASC
    Comme tu peux le voir inutile de stocker le département dans le stage puisque le stage est rattaché à 1 école et que l'école est rattachée à un département.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Par défaut
    Merci bcp et dsl pour mes faibles connaissances, je vais approfondir cet exemple !!

    Je me coucherais moins bête ce soir !

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

Discussions similaires

  1. [MySQL] PHP & MySQL > insérer résultat d'une requête dans un tableau
    Par Mousshaker dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/07/2014, 17h20
  2. Réponses: 26
    Dernier message: 01/07/2006, 13h14
  3. [SGBD] [Problème insertion variable php/mysql]
    Par vincedjs dans le forum Installation
    Réponses: 20
    Dernier message: 08/02/2006, 16h41
  4. Réponses: 9
    Dernier message: 05/01/2006, 12h24
  5. [SGBD] afficher infos issues de php/mysql dans html
    Par php_de_travers dans le forum Requêtes
    Réponses: 11
    Dernier message: 22/10/2005, 00h28

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