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 :

Divers petits problèmes avec mon script


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut Divers petits problèmes avec mon script
    Bonjour,

    Ce script me permet d'afficher les personnes associées à des comités. L'usager sélectionne la liste désirée et l'année.

    1) mes deux sélect (liste et an n'affiche pas le choix de l'usager

    2) si la requête est vide, le message en fin de code s'affiche avec mes deux sélect

    3) Est-ce possible d'optimiser lf if pour l'affichage de la date ?

    Merci!

    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
    <div class="framebloc">
    				<?php
            echo '<FORM action="ca2.php?" METHOD="GET">';
            echo '<table align="center" border=3">';
            echo '<tr><th>Liste désirée</th><th>Année</th><th>Action</th></tr>';
            echo '<tr><td>';
    				require("config.inc.php");
            $r_liste = "SELECT code,description FROM TB_statut where web_site='O' order by description";
            $d_liste = mysql_query($r_liste);
            echo '<select name="liste">';
            while($ch_liste=mysql_fetch_array($d_liste)) {
              echo '<option value="'.$ch_liste["code"].'" '.selected.'>'.$ch_liste["description"].'</option>\n';
            }
            echo '</select>';
            echo '</td><td>';
    				$r_an = "SELECT distinct an FROM ATS_statut where type='CA' order by an desc";
    				$d_an = mysql_query($r_an);
    				echo '<p align="center"><select name="an">';
    				while($val=mysql_fetch_array($d_an))	{
    					echo "<option>".$val["an"]."</option>\n";
    					if($an == $val["an"]) {echo ' selected="selected"';} 
    				}
    				echo '</select>';
    				echo '</td><td>';
    				echo '<INPUT TYPE="submit" VALUE="Afficher"></p>';
    				echo '</FORM>';
    				echo '</td></tr>';
     
          if (mysql_num_rows($d_an)>0) {
            $r_ca = mysql_query("SELECT * FROM `ATS_statut`
    				LEFT JOIN ATS_membre ON ATS_statut.passeport = ATS_membre.passeport
      where ATS_statut.aff_web='O' and ATS_statut.type='$liste' and ATS_statut.an='$an' order by ATS_statut.tri_ordre,ATS_membre.nom,ATS_membre.prenom");
     
            if (mysql_num_rows($r_ca)>0) {
              echo '<table align="center" border="1" cellpadding="3">';
              echo '<tr>';
              echo '<th width="175">Identification</th>';
              echo '<th>CE</th>';
              echo '<th>Poste occupé</th>';
              echo '<th>Photo</th>';
              echo '<th>Début</th>';
              echo '<th>Fin</th>';								
              echo '<th>Note</th>';
              echo '</tr>';
              while ($var = mysql_fetch_array($r_ca) )
              {
                echo '<tr>';
                echo '<td><strong>'.htmlspecialchars($var['nom']).' '.htmlspecialchars($var['prenom']).'</strong></td>';
                echo '<td align="center">'.htmlspecialchars($var['ce']).'</td>';
                $atscourriel=htmlspecialchars($var['ats_courriel']);
                if (empty($atscourriel)) {
                  echo '<td>'.htmlspecialchars($var['poste_occupe']).'</td>';
                }
                else {
                  echo '<td><a href="mailto:'.$atscourriel.'">'.htmlspecialchars($var['poste_occupe']).'</a></td>';
                }		
     
                echo '<td align="center">NA</td>';	
     
                if ($var['dt_debut']=="0000-00-00") {
                  echo '<td>&nbsp;</td>';
                }
                else {
                  echo '<td>'.htmlspecialchars($var['dt_debut']).'</td>';
                }
                if ($var['dt_fin']=="0000-00-00") {
                  echo '<td>&nbsp;</td>';
                }
                else {
                  echo '<td>'.htmlspecialchars($var['dt_fin']).'</td>';
                }
     
                echo '<td>'.htmlspecialchars($var['note']).'</td>';
                echo '</tr>';	
              }	
              echo '</table>';
            }		
            else	{
              echo '<p align="center"><h2>Aucune fiche ne correspond à cette requête</h2></p>';			
            }	
          }	
          else {
              echo '<p align="center"><h2>Aucune fiche ne correspond à cette requête</h2></p>';	
          }
          mysql_close(); //Deconnection...		
          ?>	
          </div> <!-- Fin Frame -->

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    liste et an n'affiche pas le choix des usagers ??

    C'est un peu paradoxal puisque c'est liste et an qui permettent de faire ce choix. Ils affichent tout deux le choix dans le menu déroulant..


    Si ton message en fin de code s'affiche avec tes deux select c'est parce que tu n'as mis aucunes contraintes d'affichage sur les select.

    tu peux mettre un if(!isset($_POST['liste'])) pour dire que si l'utilisateur n'a pas validé son choix, on affiche les select sinon, on fait les traitements des données choisies, qui, en l'occurence, sont $_POST['liste'] et $_POST['an'];

    ++

  3. #3
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Je viens de rejeter un coup d'oeil sur ton code, on ne récupère pas la valeur d'un champ de formulaire en faisant $lechamp, on fait $_POST['lechamp']; en supposant bien sur que ton formulaire soit en method="post"

    edit : ah ben t'es en get, jte conseille de passer en post, mais bon.. dans ton cas c'est donc $_GET['lechamp']

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Merci, je vais regarder cela.

    Je ne sais pas trop où mettre le if(!isset($_POST['liste']))

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Bonjour,

    Mes deux listes déroulantes n'affichent pas le choix de l'usager. Pour l'affichage, tout est ok!


    Aussi, comment puis-je mettre à jour la 2e liste selon le choix de la première liste ?

    Merci!


    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
      1. <?php
       2. $an = $_POST['an'];
       3. $liste = $_POST['liste'];
       4. ?>
       5.   <div class="conteneur">
       6.     <div class="header"><p class="top"><a href="http://www.ats3r.org"><img src="site/images/accueil.gif" border="0" alt="ATS"> </img></a></p>
       7.     </div>
       8.       <div class="framebloc">
       9.    <?php
      10.
      11.         echo '<FORM action="ca2.php" METHOD="POST">';
      12.         echo '<table align="center" border=3">';
      13.         echo '<tr>';
      14.    echo '<th>Liste disponible</th>';
      15.    echo '<th>Année</th>';
      16.    echo '<th>Action</th>';
      17.    echo '</tr>';
      18.    require("config.inc.php" );
      19.    $r_liste = "SELECT code,description FROM TB_statut where web_site='O' order by description";
      20.         $d_liste = mysql_query($r_liste);
      21.         echo '<tr>';
      22.    echo '<td valign="center">';
      23.         echo '<select name="liste">';
      24.         while($ch_liste=mysql_fetch_array($d_liste)) {
      25.           echo '<option value="'.$ch_liste["code"].'" '.selected.'>'.$ch_liste["description"].'</option>\n';
      26.       }
      27.         echo '</select>';
      28.         echo '</td>';
      29.
      30.    $r_an = "SELECT distinct an FROM ATS_statut where type='$liste' order by an desc";
      31.    $d_an = mysql_query($r_an);
      32.    echo '<td valign="center">';
      33.    echo '<select name="an">';
      34.    while($ch_an=mysql_fetch_array($d_an)) {
      35.           echo '<option value="'.$ch_an["an"].'" '.selected.'>'.$ch_an["an"].'</option>\n';
      36.       }
      37.    echo '</select>';
      38.    echo '</td>';
      39.    echo '<td valign="center">';
      40.    echo '<INPUT TYPE="submit" VALUE="Visualiser">';
      41.    echo '</FORM>';
      42.    echo '</td>';
      43.    echo '</tr>';

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 64
    Points : 55
    Points
    55
    Par défaut
    via ajax par exemple, cf ce tuto pour les listes liées :
    http://siddh.developpez.com/articles/ajax/#LIV-A

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Merci beaucoup !

    J'ai essayé le premier exemple et c'est le code de ma page qui s'Affiche dans une boîte et non le résultat,

    ça dit quelques chose à quelqu'un ? Est-ce mon hébergeur ?

    J'ai essayé avec IE et Firefox.

  8. #8
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    Modifie ton code de la sorte....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       while($ch_an=mysql_fetch_array($d_an)) {
               echo '<option value="'.$ch_an["an"].'" '.selected.'>'.$ch_an["an"].'</option>\n';
           }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      while($ch_an=mysql_fetch_array($d_an)) {
         if {$ch_an["an"]!=$_POST['an'];
             echo "<option value=\"".$ch_an[an]."\">".$ch_an[an]."</option>";
         }else
            {
               echo "<option value=\"".$ch_an[an]."\" selected>".$ch_an[an]."</option>";
            }
          }

    de même pour les autres select....

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Bonjour,

    Merci pour la réponse mais je n'y arrive pas. J'ai tout repris selon l'exemple qu j'ai et ça ne fonctionne pas mieux.

    Contenu de mon 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
    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
    <html>
    	<head>
    		<title>Liste déroulante</title>
    		<script type='text/javascript'>
     
    			function getXhr(){
            var xhr = null;
    				if(window.XMLHttpRequest){ // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
     
    				}
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    							xhr = new ActiveXObject("Msxml2.XMLHTTP");
    						} catch (e) {
    							xhr = new ActiveXObject("Microsoft.XMLHTTP");
    						}
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
            return xhr;
    			}
     
     
     
    			/*** Méthode qui sera appelée sur le click du bouton */
    			function change(){
     
    				var xhr = getXhr();
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					alert(xhr.readyState);
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						di = document.getElementById('livre');
    						di.innerHTML = xhr.responseText;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ca1_an.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id de l'auteur
    				idauteur = document.getElementById('auteur').options[document.getElementById('auteur').selectedIndex].value;
    				//alert(idauteur);
    				xhr.send("idAuteur="+idauteur);
    			}
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<legend><strong>Critères de sélection</strong></legend>
    				<label>Comité</label>
    				<select name='auteur' id='auteur' onchange='change()'>
    					<option value='-1'>Aucun</option>
    					<?php
    						require("../config.inc.php");
    						$res = mysql_query("SELECT * FROM TB_statut ORDER BY description");
    						while($row = mysql_fetch_assoc($res)){
    							echo "<option value='".$row["id"]."'>".$row["description"]."</option>";
    						}
    					?>
    				</select>
    				<label>Année</label>
    				<div id='livre' style='display:inline'>
    				<select name='livre'>
    					<option value='-1'>Choisir un comité</option>
    				</select>
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>

    Contenu pour obtenir l'année : ca1_an.php

    Mon constat, cette variable est vide: $_REQUEST["idAuteur"];

    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
     
    //echo 'entrer';
    //echo $_REQUEST["idAuteur"];
     
    	echo "<select name='livre'>";
    	if(isset($_REQUEST["idAuteur"])){
    		echo 'Passer';
    		require("../config.inc.php");
    		$res = mysql_query("SELECT id,an FROM ATS_statut WHERE type=".$_REQUEST["idAuteur"]." ORDER BY an");
    		while($row = mysql_fetch_assoc($res)){
    			echo "<option value='".$row["id"]."'>".$row["an"]."</option>";
    		}
    	}
    	else
    		echo "<option value='-1'>Choisir un comité</option>";
    	echo "</select>";
    ?>

Discussions similaires

  1. Un tout petit problème avec mon menu contextuel
    Par jbrasselet dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/10/2007, 15h40
  2. Problème avec mon script shell case in esac
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 22h54
  3. Problème avec mon script
    Par Toinou0123 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 30/09/2006, 18h37
  4. (Batch et VBS) Petit probléme avec un script batch VBS
    Par Edoxituz dans le forum Windows
    Réponses: 11
    Dernier message: 27/02/2006, 17h21
  5. [Mail] Problème avec mon script d'envoi de mail
    Par leroivert dans le forum Langage
    Réponses: 18
    Dernier message: 02/12/2005, 00h26

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