include et formulaire...

Eléphant du PHP | 90 Messages

18 janv. 2006, 17:06

Désolé d'insister... je vais changer de probleme puisque personne ne me répond :(

j'ai une liste déroulante dans un tableau en "require". (pour vous donner une idée http://sceno.fr/v3 )

j'utilise la méthode post de cette façon :


<form name="form" method="post" action="agenda/lieux_resultat.php">
  <p> 
    <select name="maliste" class="Questcequisepasse">
      <?php  
require("conf.php");

$db_link = mysql_connect("$serveur","$user","$mdp") or die ("Connexion à la base Scéno impossible, merci de revenir un peu plus tard");
mysql_selectdb("$bdd") or die ("Connexion à la base Scéno impossible, merci de revenir un peu plus tard");

$sql = 'SELECT codelieux, libellelieux FROM lieux;';  
$query = mysql_query($sql) or die('Erreur');  
$nb = mysql_fetch_array($query);  
if ( !$nb[0] ) {  
echo '<option>Aucun lieux</option>';  
} else {  
while ($list = mysql_fetch_array($query)) {  
echo '<option value="'.$list['codelieux'].'">'.$list['libellelieux'].'</option>';  

}  
}  
 mysql_close();  
?>
    </select>
    <br>
    <input type="submit" name="submit" value="Valider"/>
  </p>
  </form>
et dans le fichier lieux_resultat.php j'ai ceci

<?php
require("../conf.php");

$db_link = mysql_connect("$serveur","$user","$mdp") or die ("Connexion à la base Scéno impossible, merci de revenir un peu plus tard");
mysql_selectdb("$bdd") or die ("Connexion à la base Scéno impossible, merci de revenir un peu plus tard");

$codeLieu = $_POST["maliste"];
$requete= "SELECT heure, type, prix FROM ag_fev1 WHERE codelieux = '$codeLieu'";

$var = mysql_query("$requete") or die('Erreur Requete');

$data=mysql_fetch_assoc($var);
echo mysql_num_rows($var);
echo "<br>";
for($i=0;$i<mysql_num_rows($var);$i++)
{
	for($j=0;$j<3;$j++)
	{
		echo mysql_result($var,$i,$j);
	}

	echo "<br>";
   }

mysql_close();
?>
pas de soucis, il va bien chercher les champs correspondants et les affichent... MAIS j'aimerai qu'il les affiche dans mon tableau central alors j'ai essayé plusieurs chose qu'on m'avait conseillé comme la célèbre fonction
 <?php echo($_SERVER['PHP_SELF']); ?> 

mais dans ce cas, il se passe rien... si j'utilise mes alias déclaré dans mon index, il m'interdit l'accès aussi... je vois vraiment pas comment inclure les résulats de ma recherche dans le tableau central....

Mammouth du PHP | 768 Messages

18 janv. 2006, 17:16

$sql = 'SELECT codelieux, libellelieux FROM lieux;';   
$query = mysql_query($sql) or die('Erreur');   

if (mysql_num_rows === 0){   
   echo '<option>Aucun lieux</option>';   
} 
else 
{   
   while ($list = mysql_fetch_assoc($query)) {
      echo '<option value="'.$list['codelieux'].'">'.$list['libellelieux'].'</option>';   
   }   
}   
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 90 Messages

18 janv. 2006, 17:41

Merci, c'est vrai que ton code fonctionne mieux. Mais ca résout pas mon problème d'affichage dans le tableau central... avec la fonction php_self, rien n'apparait et avec le chemin de la page résultat, ca s'affiche dans une autre page...

Mammouth du PHP | 768 Messages

18 janv. 2006, 19:18

c'est le terme "tableau central" que je ne comprend pas bien.
Si tu souhaites avoir sur une même page le formulaire et le résultat SQL,
tu dois avoir

Code : Tout sélectionner

<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
cela permettra au formulaire d'être traité sur la même page

voici un schéma qui peut être utile.

<?php

// établissement d'une connexion
$link = mysql_connect($serveur,$user,$mdp) or die (mysql_error()); // les " " ne sont pas utiles ici

mysql_selectdb($bdd) or die (mysql_error());


/*

   REPREND LA PARTIE FORMULAIRE ICI


*/

if ( isset($_POST['submit']) ){  // SI LE FORMULAIRE A ETE REMPLI

   $codeLieu = $_POST['maliste'];  
   $requete= "SELECT heure, type, prix 
   FROM ag_fev1 
   WHERE codelieux = '".$codeLieu."'";

   $req = mysql_query($requete) or die(mysql_error()); 

   $num = mysql_num_rows($req); // retourne le nombre    d'enregistrement trouvé


   if ($num !== 0){ // SI CA RETOURNE 1 ENREGISTREMENT (ou +)
      echo "<table border='1'>";
      echo "<tr><th>HEURE</th><th>TYPE</th><th>PRIX</th></tr>";

      $data=mysql_fetch_assoc($req); 
   
      echo "<tr><td>".$data['heure']."</td><td>".$data['type']."</td><td>".$data['prix']."</td></tr>";

      echo "</table>";
   }
   else
   {
      echo "Erreur: Pas d'enregistrement trouvé pour le code lieu ".$codeLieu;
   }

}

mysql_close($link); 
?> 
Au fait, il est possible qu'il y ai plusieurs enregistrements à partir d'un code lieux ?
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 90 Messages

18 janv. 2006, 19:49

salut mario et merci pour tes réponses :)

pour te donner une idée regarde sur la version en cours http://sceno.fr/v3

y a un tableau (<tr><td></tr></td>) avec un intitulé "qu'est ce qui se passe ?"
et une liste déroulante avec les lieux. quand on sélectionne un lieu et que l'on valide, le navigateur ouvre une nouvelle page avec les réponses. moi je voudrais qu'elles aparaissent au centre du site dans lequel j'ai toutes mes include... comme lorsqu'on clique sur les dates 2, 3, 4 février (sur le site)

Mammouth du PHP | 768 Messages

18 janv. 2006, 21:18

peux tu me montrer la portion de code (de la page principale) ou tu fais des includes ?
comment procédes tu ? avec un switch() ?

je pense que tu dois soumettre le formulaire en direction de la page principale (là où tu as les includes).

dans le style:
if ( (isset($_POST['submit']) && (isset($_POST['maliste']) ){
   include('lieux_resultat.php');
}
dans lieux_resultat.php reprend mon précédent code.
Si la connexion est déjà établie dans la page principale, ne l'ajoute pas une seconde fois dans lieux_resultat.php
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 90 Messages

18 janv. 2006, 21:46

Dans la page principale j'ai ce code (je peux pas te dire si ça s'appelle un switch par contre :oops: )
 <?php  $pageOK = array('ce_mois-ci' => 'ce_mois-ci.php',
		 						     'archives' => 'archives/archives.php',
								    'archives2' => 'archives/archives2.php', (etc...));

  if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
    include($pageOK[$_GET['page']]);
  } else {
    include('ce_mois-ci.php');
  }
?>
Je tente ta méthode... et reviens dire ce que ça donne! :)

Eléphant du PHP | 90 Messages

18 janv. 2006, 21:56

j'ai essayé de placer
 if ( (isset($_POST['submit']) && (isset($_POST['maliste']) ){
   include('lieux_resultat.php');
} 

à plusieurs endroits, en premier dans la page principale, parce que ca me paraissait logique. J'avais pensé à utiliser le script d'including de la page principale pour appeler le lieux_resultat.php dans cette meme page mais sans résultat (c'est le cas de le dire)

J'ai fait pas mal de recherches cette après midi pour voir ce que je pouvais placer dans la variable "action" de l'envoi de formulaire mais à part le php_self, j'ai vraiment rien trouvé, c pour ca que je m'étais dit qu'utiliser l'including de la page principale pouvait fonctionner mais... non...

Mammouth du PHP | 768 Messages

18 janv. 2006, 22:41

J'ai fait pas mal de recherches cette après midi pour voir ce que je pouvais placer dans la variable "action" de l'envoi de formulaire mais à part le php_self, j'ai vraiment rien trouvé, c pour ca que je m'étais dit qu'utiliser l'including de la page principale pouvait fonctionner mais... non...
n'oublie pas de modifier dans le formulaire

Code : Tout sélectionner

<form name="form" method="post" action="nom_de_la_page_principale.php">
le formulaire va être soumis vers la page principale
sur cette même page,
if ( (isset($_POST['submit']) && (isset($_POST['maliste']) ){ 
   include('lieux_resultat.php'); 
} 
devrait permettre à lieux_resultat.php d'être inclus

Si ce n'est pas le cas, ](*,)
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 90 Messages

19 janv. 2006, 10:19

Que dire mario... à part un gigantesque MERCI !! ca marche au poil ! :agenouille: