passage de variable

zab
Eléphanteau du PHP | 40 Messages

20 févr. 2008, 15:25

Bonjour
voici mon code
<?php session_start();
require("conf.php3");
if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
	die('Vous n\'êtes pas autorisez à acceder à cette page.'); //Si non, on arrete le script
}


define ("USER", "root") ;
define ("PASSWORD", "") ;

$connexion =mysql_connect("localhost",USER,PASSWORD)
or exit("Erreur 101") ;

mysql_select_db( "aviatec" ,$connexion)
or exit("Erreur 102") ;

if (isset($_POST['rechercher'])) //si on a validé le formulaire
{
$recherche = mysql_real_escape_string(htmlspecialchars($_POST['recherche'])); //sécurisation des variables

$mots = explode(' ', $recherche); //séparation des mots de la recherche à chaque espace
$nombre_mots = count ($mots); //compte le nombre de mots
$valeur_requete = '';
for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle on continue en augmentant la variable $nombre_mots_boucle de 1 à chaque fois
{
$valeur_requete .= 'OR DESCRIPTIONFRANCAISE LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; //modification de la variable $valeur_requete
}
$valeur_requete = ltrim($valeur_requete,'OR'); //suppresion de OR au début de la boucle
 
$selection_recherche = mysql_query("SELECT * FROM base_articles WHERE $valeur_requete ORDER BY id");
$nombre_resultats = mysql_num_rows($selection_recherche); 
$sql= "SELECT * FROM base_articles WHERE DESCRIPTIONFRANCAISE='$selection_recherche'";
$req=mysql_query($sql)or exit ('Erreur SQL !'.$sql.'<br>'.mysql_error());

if ($nombre_resultats == 0) //si il n'y a pas de résultat
{
echo 'aucun resultat.<a href="recherche.php">recommencer</a>';
}
else //il y a au moins un resultat
{
echo 'nombre de résultats: ' . $nombre_resultats . '<br /><br />'; //nombre de résultats
while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les resultats
{
echo '<strong>Numero d\'article:</strong> ' . $resultats['id'] . '<br />
<strong>Désignation:</strong> ' . $resultats['DESCRIPTIONFRANCAISE'] . '<br />
<strong>Référence:</strong> ' . $resultats['REFERENCE'] . '<br />
<strong>Specifications:</strong> ' . $resultats['SPECIFICATIONS'] . '<br />
<br />';
?>
<form method="post" action="recherche2.php">
<input type="hidden" value="<?php echo $resultats['id']; ?>" name="id"> 

<input type="submit" value="commander" name="cder" />
</form>
<?php

}
echo '<a href="recherche.php">recommencer</a>';
}
}
else //si on a pas validé le formulaire on l'affiche
{
?>

<form method="post" action="recherche.php">
Votre recherche:
<input type="text" name="recherche" />

<br />
<input type="submit" value="Rechercher" name="rechercher" />
</form>
<?php
}
mysql_close(); //déconnexion de la bdd
?>
Je cherche à afficher LE produit que la personne veut commander dans une nouvelle page voici mon code :
<H1 align="center">&nbsp;</H1>
<H1 align="center">Ma Boutique en ligne</H1>
<table border="1" bgcolor="cccccc" align="center" width="75%">
<tr  bgcolor='white'>
<td colspan=3 align="center" width="">
Catégorie</td>
  </tr>
   <tr bgcolor='white'>
	<td width="">Noms</td>
	<td width="">Désignation</td>
	<td width="">quantité</td>
   </tr>
   </table>
   
<?php
$connexion =  mysql_connect("localhost","root","")
or exit("Erreur 101") ;
 mysql_select_db( "aviatec" , $connexion)
or exit("Erreur 102") ;
echo "id=".$resultats['id']."<br>"; 


$sql="Select* from base_articles where id=$resultats['id']";
$req=mysql_query($sql,$connexion)or exit ('Erreur SQL !'.$sql.'<br>'.mysql_error());
while( $data=mysql_fetch_array($req) ) {
echo"<tr><td>".$data['DESCRIPTIONFRANCAISE']." </td><td> ".$data['DESIGNATION']."</td><td> <a href='panier4_1.php?prod=".$data['id']."'>Détail+Cde</a></td></tr>";


}
mysql_close();
?>
Mais c'est complètement faux, si quelqu'un veut bien m'aider s'il vous plait
merci

Mammouth du PHP | 881 Messages

20 févr. 2008, 16:19


$selection_recherche = mysql_query("SELECT * FROM base_articles WHERE $valeur_requete ORDER BY id");
$nombre_resultats = mysql_num_rows($selection_recherche);
Jusqu'ici ça va.

Mais pourquoi cette seconde requête?


$sql= "SELECT * FROM base_articles WHERE DESCRIPTIONFRANCAISE='$selection_recherche'";
$req=mysql_query($sql)or exit ('Erreur SQL !'.$sql.'<br>'.mysql_error());

Maintenant, sachant que tu veux une page avec LE produit, préparons dès ici cette page.
Tu as produit une table de résultats complets (SELECT *). La quantité d'informations pourrait être limitée (SELECT id_produit, description ... ) aux seuls éléments utiles, mais c'est une autre discussion.


Indenter ton code serait aussi une bonne idée.

if ($nombre_resultats == 0) //si il n'y a pas de résultat {
echo 'aucun resultat.<a href="recherche.php">recommencer</a>';
} else {
echo 'nombre de résultats: ' . $nombre_resultats . '<br /><br />'; //nombre de résultats
while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les resultats
{
echo '<strong>Numero d\'article:</strong> ' .$resultats['id']. '<br />
<strong>Désignation:</strong> ' . $resultats['DESCRIPTIONFRANCAISE'] . '<br />
<strong>Référence:</strong> ' . $resultats['REFERENCE'] . '<br />
<strong>Specifications:</strong> ' . $resultats['SPECIFICATIONS'] . '<br />
<br />
<form method="post" action="recherche2.php">
<input type="hidden" value="'.$resultats['id'].'" name="id">

<input type="submit" value="commander" name="cder" />
</form>';
}
echo '<a href="recherche.php">recommencer</a>';
} //Fin du else
Pourquoi utiliser une formulaire pour chacun?
Je privilégierais les simples liens <a href> avec target="_blank" ou encre target="Formulaire_de_Commande" de la manière suivante: (à l'intérieur de la boucle WHILE comme tu as fais:

Code : Tout sélectionner

echo ' <a href="recherche2.php?id='.$resultats['id'].'" Target="_blank"><strong>Désignation:</strong> ' . $resultats['DESCRIPTIONFRANCAISE'] . '</a><br /> <strong>Référence:</strong> ' . $resultats['REFERENCE'] . '<br /> <strong>Specifications:</strong> ' . $resultats['SPECIFICATIONS'] . '<br /> ';

Et pour la page recherche2.php, la recherche est simple et rapide. Voici à quoi peut ressembler son code:

Code : Tout sélectionner

<?php $connexion = mysql_connect("localhost","root","") or exit("Erreur 101") ; $db = mysql_select_db( "aviatec" , $connexion) or exit("Erreur 102") ; $requete = "SELECT * FROM base_articles WHERE id = ".$_GET["id"]; while( $data=mysql_fetch_array($req) ) { echo"<tr><td>".$data['DESCRIPTIONFRANCAISE']." </td><td> "; echo $data['DESIGNATION']."</td>"; echo "<td> <a href='panier4_1.php?prod=".$data['id']."'>Détail+Cde</a></td></tr>"; }

Ce n'est pas complet, mais ça te donne des pistes.
Soyez artisans de paix

zab
Eléphanteau du PHP | 40 Messages

21 févr. 2008, 12:10

Ah merci c'est parfait en fait j'ai créé une variable id égal à resultat[id], que j'ai passé à l'autre page puis je récupérais cette valeur et affichait tout l'article avec une requête mysql
merci beaucoup