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 :

Case à cocher pour une page de modification [Fait]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 60
    Points : 33
    Points
    33
    Par défaut Case à cocher pour une page de modification
    Bonjour,
    je suis en train de me prendre la tête depuis une journée pour faire un page de modification... je fais que de retourner le problème dans tous les sens mais j'ai l'impression que je pars super compliqué alors que je pourrais faire ça plus rapidement.

    Je vous explique mon problème.

    J'ai 3 tables

    ABONNE: num_abo // je stock les infos de mes abonnés
    SEGMENT: num_seg // catégorie d'abonné ex : webmaster, chef d'entreprise...
    LIENSEGMENT : num_lien, num_seg, num_abo // je stock les liens entre ces 2 tables

    Admettons que j'ai un ABONNE avec un num_abo = 23

    SEGMENT de num_seg =1,2,3,4,5

    et l'abonné est associé un quelques segments

    LIENSEGMENT (1,2,23)
    LIENSEGMENT (1,5,23)

    Comment faire pour afficher toutes les cases à cocher donc tous les segments et mettre checked au segment correspondant au num_abo = 23 ?

    Je ne sais pas si c'est possible à faire en faisant une seule requête...

    J'ai essayé avec plusieurs façon (avec tableaux...) mais trop fastidieuse et qui n'aboutit au final à rien...

    merci de m'éclairer...
    merci d'avance

    langage : php/sql

    Jonathan

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    tu vas devoir utiliser les jointures pour pouvoir interroger plusieurs tables en même temps. ya un tutoriel sur Developpez: ici

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 60
    Points : 33
    Points
    33
    Par défaut
    oui j'avais déjà utilisé les jointures mais comment faire que pour la requête renvoie :

    - la liste cochée où l'abonné est inscrit
    - la liste où il ne l'est pas
    - classer par ordre alphabétique

    tout cela dans une requête.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 308
    Points : 15 638
    Points
    15 638
    Par défaut
    Citation Envoyé par jiojio Voir le message
    oui j'avais déjà utilisé les jointures mais comment faire que pour la requête renvoie :

    - la liste cochée où l'abonné est inscrit
    - la liste où il ne l'est pas
    - classer par ordre alphabétique

    tout cela dans une requête.
    le classement alphabétique est pour toutes les cases mélangés ou bien avec les deux listes séparées ?

    montre nous ce que tu as déjà fait, c'est possible de retourner toute les informations avec une seule requête

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 60
    Points : 33
    Points
    33
    Par défaut
    c'est pour les 2 cases séparés

    l'idéal ça serait de retourner ce genre de résultat

    num_seg
    lib_seg
    num_abo
    *checked (une sorte d'alias si l'abonné est relié à ce segment. Je ne sais pas si c'est possible)

    1 | webmaster | 23 | checked
    2 | maire |12 | vide
    3 | chef entreprise | 14 | vide
    5 | responsable | 3 | checked

    je vous mets mon code mais bon je pense que vous allez rire ! j'ai cherché bien compliqué... pour au final rien ! enfin je bloque sur le tableau "checked"

    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
    req_nb_segment = mysql_query("SELECT count(num_seg) from segment");
    $nb_seg = (mysql_result($req_nb_segment,0,0));
     
    $req_seg = mysql_query("SELECT * FROM segment");
     
    $req_lien_seg = mysql_query("SELECT liensegment.num_seg, segment.lib_seg
                                 FROM segment, liensegment
    						     WHERE segment.num_seg = liensegment.num_seg
    						     AND num_abo = ".$_GET['idabo']."");
     
    $req_nb_lien_seg = mysql_query("SELECT count(*)
                                    FROM segment, liensegment
    						        WHERE segment.num_seg = liensegment.num_seg
    						        AND num_abo = ".$_GET['idabo']."");
    $nb_seg_lien = (mysql_result($req_nb_lien_seg,0,0));								
     
    ##########
     
    for ($i=0;$i<$nb_seg;$i++)
      { 
         $tabnumseg[$i]=$i+1; // tableau regroupant le nombre de segment dans la bdd
    	 $tabvalue[$i]=mysql_result($req_seg,$i,0); // tableau regroupant les values du segment dans la bdd
         $tablibseg[$i]=mysql_result($req_seg,$i,1); // tableau regroupant les libéllés de segment dans la bdd
      }	
     
    for  ($i=0;$i<$nb_seg_lien;$i++)
      {
         $tabnumseglien[$i]=mysql_result($req_seg,0,$i);
    	 echo $tabnumseglien[$i];
      }
     
    // tableau qui indiquera si le segment est checked par défaut
    for ($i=0;$i<$nb_seg;$i++)
      {
        if($tabvalue[$i]==mysql_result($req_lien_seg,$i,0))
    	  {
    	    $tabchecked[$i]="checked";
    	  }
    	  else
    	  {
    	    $tabchecked[$i]="";
    	  }	
    	  echo $tabchecked[$i];
       }
     
     
     
    $p=4; // valeur pour les cellules du tableau - 4 colonnes
     
    echo '<table width="100%" border="1">';
                for ($i=0;$i<$nb_seg;$i++)
                 {
    			    if($p==4) // ouverture de la ligne pour faire le 4 colonnes
    				   {
    				     echo  '<tr>';
    				   }
     
    					echo '<td width="25%"><input type="checkbox" name="checkbox'.$tabnumseg[$i].'" value="'.$tabvalue[$i].'" >'.$tablibseg[$i].'</td>';  
     
    				  if($p==7)
    				   {
    				     echo  '</tr>';
    					 $p=3;
    				   }
    					$p++;                        
                  }
    	  echo'</table>';

Discussions similaires

  1. [MySQL] Une case à cocher pour chaque enregistrement d'un tableau
    Par batoule80 dans le forum PHP & Base de données
    Réponses: 29
    Dernier message: 28/09/2008, 16h48
  2. Ajouter case à cocher pour une nouvelle ligne
    Par skunkies dans le forum Excel
    Réponses: 3
    Dernier message: 30/05/2008, 01h13
  3. Réponses: 12
    Dernier message: 03/12/2007, 18h53
  4. Requête pour case à cocher d'une table.
    Par Milyshyn76 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/11/2007, 12h06
  5. Sélection de toutes les cases à cocher d'une page
    Par maverick56 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 11/07/2007, 15h14

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