Page 1 sur 5

recharger une page par une liste déroulante

Posté : 09 mai 2005, 18:47
par FAbrice
Bonsoir tout le monde.

a une époque (cad il y a 3 mois), on m'a dit qu'il était possible de recharger une page lorsque l'on effectuait un choix dans une liste déroulante. est ce que cela est possible???

je cherche en fait le moyen d'envoyer une variable qui sera utilisée par un enregistrement.

Actuelement, j'ai un tableau qui m'affiche tous les enregistrements présents dans mon registre. mon but est d'afficher les enregistrements correspondant au numéro du dossier, qui est choisi dans une liste déroulante?

est ce que quelqu'un aurait une solution???

merci de votre aide,
FAb

Posté : 09 mai 2005, 19:35
par mere-teresa
Une liste déroulante peut envoyer sur une page, par exemple ou effectuer une fonction Javascript.
Google est ton ami !

Posté : 09 mai 2005, 19:46
par riccardo
Ok moi aussi je vais me servire de menu déroulant.

Comment faire pour que quand l'internaute sélectionne un menu les données concernants ce choix s'affichent en dessous du menu ( sur la meme page). Les données a afficher sont dans une bdd.

Merci

Posté : 09 mai 2005, 19:48
par mere-teresa
Prends un papier et un crayon et demande toi où sont tes données, où tu veux qu'elles arrivent, et par où elles doivent passer.

Posté : 09 mai 2005, 19:50
par FAbrice
Salut Mère-teresa

je viens de regarder tes liens mais je pense qu'il ne va pas pouvoir s'intégrer a mon code actuel :(

Mon Pb actuellement est que j'ai un bouton qui me permet d'enregistrer les données saisies.

J'ai pensés au rechargement auto de la page avec la liste déroulante mais si tu comment je pourrai intégrer un boutton qui me permettrait d'envoyer dans l'url (par ex) le N° dudossier, je suis preneur!!!!! :)

voila ou j'en suis actuellement:
<?php require_once('../../Connections/ateliermeca.php'); ?>
<?php
mysql_select_db($database_ateliermeca, $ateliermeca);
$query_actionselect = "SELECT ID, NumDossier, Cloture FROM registre WHERE Cloture = 'non' ORDER BY NumDossier ASC";
$actionselect = mysql_query($query_actionselect, $ateliermeca) or die(mysql_error());
$row_actionselect = mysql_fetch_assoc($actionselect);
$totalRows_actionselect = mysql_num_rows($actionselect);

mysql_select_db($database_ateliermeca, $ateliermeca);
$query_actionrealisation = "SELECT * FROM realisations ORDER BY Liste ASC";
$actionrealisation = mysql_query($query_actionrealisation, $ateliermeca) or die(mysql_error());
$row_actionrealisation = mysql_fetch_assoc($actionrealisation);
$totalRows_actionrealisation = mysql_num_rows($actionrealisation);

mysql_select_db($database_ateliermeca, $ateliermeca);
$query_actionintervenant = "SELECT * FROM personnel ORDER BY Nom ASC";
$actionintervenant = mysql_query($query_actionintervenant, $ateliermeca) or die(mysql_error());
$row_actionintervenant = mysql_fetch_assoc($actionintervenant);
$totalRows_actionintervenant = mysql_num_rows($actionintervenant);

mysql_select_db($database_ateliermeca, $ateliermeca);
$query_actionzone = "SELECT * FROM zones ORDER BY Zones ASC";
$actionzone = mysql_query($query_actionzone, $ateliermeca) or die(mysql_error());
$row_actionzone = mysql_fetch_assoc($actionzone);
$totalRows_actionzone = mysql_num_rows($actionzone);

$maxRows_actionaffiche = 10;
$pageNum_actionaffiche = 0;
if (isset($_GET['pageNum_actionaffiche'])) {
  $pageNum_actionaffiche = $_GET['pageNum_actionaffiche'];
}
$startRow_actionaffiche = $pageNum_actionaffiche * $maxRows_actionaffiche;

mysql_select_db($database_ateliermeca, $ateliermeca);
$query_actionaffiche = "SELECT actions.Realisation, actions.Intervenants, actions.Duree, actions.Heure FROM actions ORDER BY actions.Realisation";
$query_limit_actionaffiche = sprintf("%s LIMIT %d, %d", $query_actionaffiche, $startRow_actionaffiche, $maxRows_actionaffiche);
$actionaffiche = mysql_query($query_limit_actionaffiche, $ateliermeca) or die(mysql_error());
$row_actionaffiche = mysql_fetch_assoc($actionaffiche);

if (isset($_GET['totalRows_actionaffiche'])) {
  $totalRows_actionaffiche = $_GET['totalRows_actionaffiche'];
} else {
  $all_actionaffiche = mysql_query($query_actionaffiche);
  $totalRows_actionaffiche = mysql_num_rows($all_actionaffiche);
}
$totalPages_actionaffiche = ceil($totalRows_actionaffiche/$maxRows_actionaffiche)-1;
?>
<p class="titrezone">Ajout d'une action: </p>
  <? 
//********************************************* 
if(isset($_POST['numdossier'])){ 
   $action = $_POST['action']; 
   $numdossier=$_POST['numdossier']; 
   $real=$_POST['real']; 
   $inter=$_POST['inter']; 
   $zone=$_POST['zone']; 
   $duree=$_POST['duree']; 
} 
else{ 
   $action = ""; 
} 

switch($action){ 
case "inserer": //INSERTION DANS LA BASE 

/* déclaration de quelques variables */ 
$host = "localhost"; 
$user = "root"; 
$pass = "xxx"; 
$bdd = "ateliermeca"; 
$table = "actions"; 

/* connection avec MySQL */ 
@mysql_connect($host,$user,$pass) or die("Impossible de se connecter à la base de données"); // Le @ ordonne a php de ne pas afficher de message d'erreur 
@mysql_select_db("$bdd") or die("Impossible de se connecter à la base de données"); 

/* affichage de la selection */
echo "Vous venez d'enregistrer un(e) $real, effectuée par $inter, sur la zone $zone pour une durée de $duree heure(s) concernant le dossier $numdossier";

/* stockage dans la bdd */ 
$query = "INSERT INTO $table (Numdossier,Realisation,Intervenants,Duree,Zones,Heure) VALUES ('" . $_POST['numdossier'] . "','" . $_POST['real'] . "','" . $_POST['inter'] . "','" . $_POST['duree'] . "','" . $_POST['zone'] . "', NOW())";    
$result = mysql_query($query); 

/* déconnection avec MySQL */ 
mysql_close(); 

break; 

default: // FORMULAIRE HTML 

?> 
  <br>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
<p>Votre num&eacute;ro de dossier :
  <select name="numdossier" id="numdossier">
    <?php
do {  
?>
    <option value="<?php echo $row_actionselect['ID']?>"><?php echo $row_actionselect['NumDossier']?></option>
    <?php
} while ($row_actionselect = mysql_fetch_assoc($actionselect));
  $rows = mysql_num_rows($actionselect);
  if($rows > 0) {
      mysql_data_seek($actionselect, 0);
	  $row_actionselect = mysql_fetch_assoc($actionselect);
  }
?>
  </select>
  <br>
Action effectu&eacute;e:
<select name="real" id="real">
  <?php
do {  
?>
  <option value="<?php echo $row_actionrealisation['ID']?>"><?php echo $row_actionrealisation['Liste']?></option>
  <?php
} while ($row_actionrealisation = mysql_fetch_assoc($actionrealisation));
  $rows = mysql_num_rows($actionrealisation);
  if($rows > 0) {
      mysql_data_seek($actionrealisation, 0);
	  $row_actionrealisation = mysql_fetch_assoc($actionrealisation);
  }
?>
</select>
<br>
  Intervenant :
  <select name="inter" id="inter">
    <?php
do {  
?>
    <option value="<?php echo $row_actionintervenant['ID']?>"><?php echo $row_actionintervenant['Nom']?></option>
    <?php
} while ($row_actionintervenant = mysql_fetch_assoc($actionintervenant));
  $rows = mysql_num_rows($actionintervenant);
  if($rows > 0) {
      mysql_data_seek($actionintervenant, 0);
	  $row_actionintervenant = mysql_fetch_assoc($actionintervenant);
  }
?>
  </select>
  <br>
Zone concern&eacute;e:
<select name="zone" id="zone">
  <?php
do {  
?>
  <option value="<?php echo $row_actionzone['ID']?>"><?php echo $row_actionzone['Zones']?></option>
  <?php
} while ($row_actionzone = mysql_fetch_assoc($actionzone));
  $rows = mysql_num_rows($actionzone);
  if($rows > 0) {
      mysql_data_seek($actionzone, 0);
	  $row_actionzone = mysql_fetch_assoc($actionzone);
  }
?>
</select>
<br>
Dur&eacute;e de la r&eacute;alisation:
<input name="duree" type="text" id="duree">
<br>
      <br> 
      <input type="submit" name="Submit" value="Ok"> 
      <input type="hidden" name="action" value="inserer"> 
</p>
<table border="1">
  <tr>
    <td><div align="center"><strong>Realisation</strong></div></td>
    <td><div align="center"><strong>Intervenants</strong></div></td>
    <td><div align="center"><strong>Duree</strong></div></td>
    <td><div align="center"><strong>Heure</strong></div></td>
  </tr>
  <?php do { ?>
  <tr>
    <td><div align="center"><?php echo $row_actionaffiche['Realisation']; ?></div></td>
    <td><div align="center"><?php echo $row_actionaffiche['Intervenants']; ?></div></td>
    <td><div align="center"><?php echo $row_actionaffiche['Duree']; ?></div></td>
    <td><div align="center"><?php echo $row_actionaffiche['Heure']; ?></div></td>
  </tr>
  <?php } while ($row_actionaffiche = mysql_fetch_assoc($actionaffiche)); ?>
</table>
</form> 
<? 
break; 
} 
?>
est ce que tu as une petiote idée??? :?

en tout cas, merci de ton aide!
FAb

Re: recharger une page par une liste déroulante

Posté : 09 mai 2005, 20:02
par Cyrano
... on m'a dit qu'il était possible de recharger une page lorsque l'on effectuait un choix dans une liste déroulante. est ce que cela est possible??? ...
Oui, c'est possible : dans ta balise select, rajoute un évènement onchange="this.submit();"
Ça va faire le même effet que si on cliquait sur le bouton submit. Si l'url de l'attribut action dans ta balise form pointe sur la page elle-même, elle va se recharger. Il te reste donc à tester en début de page si une valeur correspondant à l'attribut name de ta balise sélect a été envoyée et laquelle. Puis tu fais ton traitement comme tu l'entends.

Posté : 09 mai 2005, 20:12
par FAbrice
alut Cyrano 8)

si g bien compris (c bo de rever en couleur et en 3D!!!), je doit avoir un truc du genre:
(c'est le code de la liste déroulante)
mysql_select_db($database_ateliermeca, $ateliermeca); 
$query_actionselect = "SELECT ID, NumDossier, Cloture onchange="this.submit(nom_de_la_vraible_utilisée_dans_mon_tableau) FROM registre WHERE Cloture = 'non' ORDER BY NumDossier ASC"; 
$actionselect = mysql_query($query_actionselect, $ateliermeca) or die(mysql_error()); 
$row_actionselect = mysql_fetch_assoc($actionselect); 
$totalRows_actionselect = mysql_num_rows($actionselect); 
est ce que c ca??? :?

FAb, (qui encore bcq bcq bcq de chimin à parcourir!!!

Posté : 09 mai 2005, 20:22
par Cyrano
Au risque de te paraître rabat-joie: ceci n'est pas le code d'une liste déroulante, c'est le code d'une requête SQL et sa récupération dans une variable.

J'avoue que je capte pas bien l'évènement JavaScript dans une requête SQL... J'ai dis dans la balise <select>, pas dans la requête. Là, c'est sur que MySQL va te jeter sans aucun remords

Posté : 09 mai 2005, 20:27
par FAbrice
autant pour moi, dsl 8)
<select name="numdossier" id="numdossier"> 
    <?php 
do {   
?> 
    <option value="<?php echo $row_actionselect['ID']?>"><?php echo $row_actionselect['NumDossier']?></option> 
    <?php 
} while ($row_actionselect = mysql_fetch_assoc($actionselect)); 
  $rows = mysql_num_rows($actionselect); 
  if($rows > 0) { 
      mysql_data_seek($actionselect, 0); 
      $row_actionselect = mysql_fetch_assoc($actionselect); 
  } 
onchange="this.submit(nom_de_la_vraible_utilisée_dans_mon_tableau) 
?> 
  </select> 

et comme ca???
le nom de lavarible qui est attendue dans mont ableau se place là???

FAb

Posté : 09 mai 2005, 20:37
par Cyrano
<select name="numdossier" id="numdossier" onchange="this.submit()"> 
C'est en fin de compte plus simple non ? Et tu récupèreras $_POST['numdossier'] si une valeur existe dedans ;)

Posté : 09 mai 2005, 20:51
par FAbrice
il ne se passe rien! :(

voici le code que j'obtiens:
<select name="numdossier" id="numdossier" onchange="this.submit()">
    <?php
do {  
?>
    <option value="<?php echo $row_actionselect['ID']?>"><?php echo $row_actionselect['NumDossier']?></option>
    <?php
} while ($row_actionselect = mysql_fetch_assoc($actionselect));
  $rows = mysql_num_rows($actionselect);
  if($rows > 0) {
      mysql_data_seek($actionselect, 0);
	  $row_actionselect = mysql_fetch_assoc($actionselect);
  }
?>
  </select>
et
mysql_select_db($database_ateliermeca, $ateliermeca);
$query_actionaffiche = sprintf("SELECT actions.Realisation, actions.Intervenants, actions.Duree, Heure, actions.Numdossier FROM actions WHERE actions.Numdossier = %s ORDER BY Realisation ASC", $colname1_actionaffiche);
$query_limit_actionaffiche = sprintf("%s LIMIT %d, %d", $query_actionaffiche, $startRow_actionaffiche, $maxRows_actionaffiche);
$actionaffiche = mysql_query($query_limit_actionaffiche, $ateliermeca) or die(mysql_error());
$row_actionaffiche = mysql_fetch_assoc($actionaffiche);
tu aurais encore 5 min pour m'aider???? :oops:

Posté : 09 mai 2005, 21:09
par Cyrano
Je pense FAbrice que tu vas me faire devenir un sale intégriste anti-dreamweaver :langue:

Bon, ceci dit, le code que tu obtiens .... ? ou que tu crées à la mimine ??? Débranche les fonctions WYSIWYG de Dreamweaver et plonge donc un peu dans le code: fais le exécuter et vois le résultat: là, tu auras peut-être des messages d'erreur que tu pourras indiquer ici avec les lignes de code correspondantes.

Je regarde ce code et les cheveux qui me restent se dressent d'horreur. Le pire, c'est que j'ai vaguement idée que tu ne comprends pas trop ce code....

La forme que devrait avoir ton select est ceci :
<select name="numdossier" id="numdossier" onchange="this.submit()">
    <?php
    while ($row_actionselect = mysql_fetch_assoc($actionselect))
    {
?>
    <option value="<?php echo $row_actionselect['ID']?>"><?php echo $row_actionselect['NumDossier']?></option>
    <?php
    }
?>
</select>
Point barre, on a pas besoin de toutes les cochonneries que DW a foutu au milieu, pour l'instant, on construit une liste déroulante et on veut qu'il y ait un submit qui soit exécuté au changement de sélection. Après, on verra les fioritures.

Posté : 09 mai 2005, 21:14
par pjl
C'est quoi ce code ?
$query_actionaffiche = sprintf("SELECT actions.Realisation, actions.Intervenants, actions.Duree, Heure, actions.Numdossier FROM actions WHERE actions.Numdossier = %s ORDER BY Realisation ASC", $colname1_actionaffiche); 
:shock: :shock: :shock: :shock:
et la condition de la requête ? C'est quoi ce %s ?

Posté : 09 mai 2005, 21:17
par Cyrano
C'est quoi ce code ?
C'est du code PHP généré par DreamWeaver MX :P Création de requête dynamique... passionnant non ?

Posté : 09 mai 2005, 21:18
par pjl
Génial pour débugger. #-o