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 :

Cases à cocher


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Par défaut Cases à cocher
    Bonjour, tout le monde, jai un petit prob avec les cases à cocher, je m'explique, j'ai dans ma base de donnée mysql une table offre qui contient des offres de stages, une table formation qui contient des formations (DUT, LP...) et une table concerne qui associe une offre à une ou des formations.

    Dans ma page php, jai un tableau qui affiche chaque offre et les formations associées.

    Jai une page de modification d'offre (modifier le titre, la descrition...) et dans cette page je peut également modifier les formations associées à l'offre.
    Jai dabord une requete qui maffiche pour chaques formations une cases à cocher, puis une requete pour recuperer les cases qui doivent être coché.

    Cependant les cases qui devraient etre cochées, ne le sont pas... ca fait plusieurs jours que je bloque alors je vient soliciter votre aide, voici mon code

    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
    <?php
    include('../testeurDeSession.php');
    include('../connexion.php');
    $nooffre=$_POST['nooffre'];
    $requete="SELECT * FROM offre WHERE no_offre=".$nooffre;
    if ($result=mysql_query($requete))
    {
    	$rows=mysql_fetch_assoc($result);
    }
     
    $datePub = $rows['date_publication'];
    list($aPub, $mPub, $jPub) = split("-", $datePub);
     
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Modifier une offre</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body bgcolor="#99FF99">
    <p align="center" style="font-weight:bold " >Modification d'une offre</p>
    <br />
    <form action="valide_modif.php" method="post">
    	<input name="nooffre" type="hidden" value="<?php echo $nooffre?>">
    	Date :
    	<input name="date" type="text" maxlength="10" value="<?php echo "$jPub/$mPub/$aPub"?>">
    	<br />
    	Titre :
    	<input name="titre" type="text" maxlength="255" value="<?php echo $rows['titre']?>"><br />
    	Fichier attaché :
    	<input name="fichier" type="text" maxlength="255" value="<?php echo $rows['fichier_attache']?>"><br /><br />
    	Description :
    	<textarea name="texte" cols="50" rows="8"> <?php echo $rows['texte']?></textarea>  <br /><br />
    	<?php
    	$SQL = "SELECT * FROM formation ";
    	$res = mysql_query($SQL);
    	$SQL2 = "SELECT * FROM concerne, formation, offre WHERE offre.no_offre=concerne.no_offre_concerne AND concerne.no_formation_concerne=formation.no_formation AND concerne.no_offre_concerne=".$nooffre;
    	$res2 = mysql_query($SQL2);
    	while($rows2=mysql_fetch_assoc($res))
    	{
    	?>
    	<?php
    	echo $rows2['libelle'];
    	?> 
    	<input name="formation<?php echo $rows2['no_offre_concerne'];?> " type="checkbox" value="true"
    	<?php
    	while($rows3=mysql_fetch_assoc($res2))
    	{
    	?>
    	checked="checked"/>
    	<?php
    	}
    	?>
     
    	<?php
    	}
    	?>
    	<br /><br />
    	<input name="annuler" type="reset" value="Effacer">
    	<input name="valider" type="submit" value="Valider">
    </form>
    <br />
    <form action="../clients.php" method="post">
    	<input name="annuler" type="submit" value="Annuler">
    </form>
    </body>
    </html>

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    tu fais une boucle avec while sur $res

    à l'intérieur de cette boucle tu en fais une autre avec while sur $res2

    donc : au premier passage de ta première boucle, tu vides $res2 en faisant une boucle avec while($rows3=mysql_fetch_assoc($res2)).

    donc : aux passages suivants dans ta première boucle, il n'y a plus rien dans $res2 et tu n'auras plus jamais de checked="checked"

    enfin si ma compréhension de ton code est correcte

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Par défaut
    C'est possible car j'ai un probléme avec les cases suivantes...
    Donc il faudrait que je sorte la 2éme boucle de ma 1ére?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    désolé pour la réponse tardive j'étais absent

    non je ne pense pas que cela soit la solution si j'ai bien compris ce que tu souhaites faire

    tu dois laisser la seconde dans la première
    mais chaque fois que tu passes dans ta première, tu dois relire $res2

    pour cela deux solutions :
    • soit tu refais une requête mysql $res2 = mysql_query($SQL2); à l'intérieur de ta première boucle, mais cela implique un accès à ta base à chaque fois, et perte de temps
    • soit tu affectes $res2 dans une autre variable, par exemple
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      	$SQL2 = "SELECT * FROM concerne, formation, offre WHERE offre.no_offre=concerne.no_offre_concerne AND concerne.no_formation_concerne=formation.no_formation AND concerne.no_offre_concerne=".$nooffre;
      	$res2 = mysql_query($SQL2);
      	$mem = $res2
      	while($rows2=mysql_fetch_assoc($res))
      et au moment de démarrer ta seconde boucle, tu réinitialises $res2
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      	<?php
      	$res2 = $mem
      	while($rows3=mysql_fetch_assoc($res2))
      	{
      	?>

Discussions similaires

  1. [MIGRATION] champ de type "case à cocher"
    Par The_Nail dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 10/05/2011, 11h07
  2. Case à cocher dans une requête
    Par kloss dans le forum Access
    Réponses: 6
    Dernier message: 14/10/2004, 11h44
  3. Récupérer toutes les cases à cocher
    Par psyco2604 dans le forum ASP
    Réponses: 7
    Dernier message: 14/10/2004, 10h54
  4. Activer cases à cocher
    Par schnito dans le forum MFC
    Réponses: 4
    Dernier message: 24/01/2004, 16h07
  5. [CR] Création de tableau et case à cocher
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/11/2003, 17h07

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