Flux rss
Rechercher : dans
Par :

[PHP] variable de recherche dans un tableau

Riwalenn, le vendredi 11 août 2006 à 13:30:36 
 Signaler ce message aux modérateurs

Bonjour,
j'aimerais mettre la variable ci-dessous dans un tableau, j'ai tenté le coup mais j'ai énormement d'erreurs apparaissant :

variable :

<?php 
include ("connexion.php");
// Récupère la variable 
$recherche = isset($_POST['recherche']) ? $_POST['recherche'] : ''; 
// la requete mysql 
$sql = mysql_query("SELECT denomination, reprise, description, img FROM cartridges WHERE description LIKE ('%$recherche%')  order by denomination") or die (mysql_error()); 

// affichage du résultat 
while(list($denomination, $reprise, $description, $img)=mysql_fetch_array($sql)){ 
echo 'Nom de la cartouche : '.$denomination.'  <br />'; 
echo 'Description : '.$description.'  <br />'; 
echo 'image : '.$img.'  <br />'; 
echo 'Reprend-on la cartouche ? : '.$reprise.'<br />'; 
} 
mysql_close();

?> 


dans le tableau suivant :

<html>
<body>
<table border=1>
<TR>
<TD>Nom de la cartouche</TD><TD>Marque de la cartouche</TD><TD>Type de la cartouche</TD><TD>Description</TD><TD>Image</TD><TD>Reprend-on la cartouche ?</TD></TR>
<TR><TD></TD><TD>  </TD><TD>  </TD><TD>  </TD><TD>  </TD><TD>  </TD>
</TR>
</table>
</body>
</html>


j'ai tenté le coup avec le code suivant mais je ne sais pas où placer le while ni les echo :

<?php
include ("connexion.php");

$sqlquery="SELECT denomination, marqueID, typeID, description, img, reprise FROM cartridges  VALUES('".$_GET['denomination']."','".$_GET['marqueID']."','".$_GET['typeID']."','".$_GET['description']."','".$_GET['img']."','".$_GET['reprise']."');";

$results= mysql_query($sqlquery);

?>
<html>
<body>
<table border=1>
<TR>
<TD>Nom de la cartouche</TD><TD>Marque de la cartouche</TD><TD>Type de la cartouche</TD><TD>Description</TD><TD>Image</TD><TD>Reprend-on la cartouche ?</TD></TR>
<TR><TD></TD><TD>  </TD><TD>  </TD><TD>  </TD><TD>  </TD><TD>  </TD>
</TR>
</table>
</body>
</html>


merci d'avance pour l'aide. Cordialement,
Riwalenn

1

poof65, le vendredi 11 août 2006 à 13:39:01
  • +1

C'est quoi le problème ?
Avec le PHP tu génère du html.
Donc echo '<td>'.$variable.'</td>' ...
--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!

Répondre à poof65

2

Darshu, le vendredi 11 août 2006 à 13:46:17
  • +1

Salut. T'as pratiquement tout fait ! Voila ta page :

<html>
<body>
<table border=1>
   <TR>
      <TD>Nom de la cartouche</TD>
      <TD>Marque de la cartouche</TD>
      <TD>Type de la cartouche</TD>
      <TD>Description</TD>
      <TD>Image</TD>
      <TD>Reprend-on la cartouche ?</TD></TR>
   </TR>

<?php 
include ("connexion.php");
// Récupère la variable 
$recherche = isset($_POST['recherche']) ? $_POST['recherche'] : ''; 
// la requete mysql 
$sqlquery="SELECT denomination, marqueID, typeID, description, img, reprise FROM cartridges  VALUES('".$_GET['denomination']."','".$_GET['marqueID']."','".$_GET['typeID']."','".$_GET['description']."','".$_GET['img']."','".$_GET['reprise']."');";
$result = mysql_query($sqlquery) or die("Erreur = ".mysql_error());

// affichage du résultat 
while($row = mysql_fetch_row($result))
{ 
   echo "<TR>\n";
   echo "<TD>",$row[0],"</TD>\n"; 
   echo "<TD>",$row[1],"</TD>\n"; 
   echo "<TD>",$row[2],"</TD>\n"; 
   echo "<TD>",$row[3],"</TD>\n"; 
   echo "<TD>",$row[4],"</TD>\n"; 
   echo "<TD>",$row[5],"</TD>\n"; 
   echo "</TR>\n";
} 
mysql_close();

?> 

</table>
</body>
</html>
Voila, c'est pratiquement ce que tu avais mis, j'ai juste utilisé mysql_fetch_row() parce que je préfère cette fonction, ça permet de découper par ligne en indiçant comme pour un tableau, sans se soucier de donner un nom à tes variables. Mais c'est exactement la même chose, j'aurais aussi bien pu faire avec mysql_fetch_array.

Après il y a juste echo, utilisé pour afficher du HTML fixe et le contenu de ta requête. "\n" ne sert qu'à dire de passer à la ligne, ça évite d'avoir au final tout écrit en une seule ligne et ça facilite la lecture du code source final, une fois la page générée par PHP.

Si tu as des questions n'hésite pas.

T'as pensé à regarder sur Google avant de poser ta question ? 

Répondre à Darshu

3

Riwalenn, le vendredi 11 août 2006 à 13:49:28
  • +1

Okay je te remercie, mon collègue m'a donné le code suivant un peu plus long apparemment :

<?php 
include ("connexion.php");
// Récupère la variable 
$recherche = isset($_POST['recherche']) ? $_POST['recherche'] : ''; 
// la requete mysql 
$sql = mysql_query("SELECT denomination, reprise, description, img FROM cartridges WHERE description LIKE ('%$recherche%')  order by denomination") or die (mysql_error()); 

/* affichage du résultat 
 while(list($denomination, $reprise, $description, $img)=mysql_fetch_array($sql)){ 
 echo 'Nom de la cartouche : '.$denomination.'  <br />'; 
 echo 'Description : '.$description.'  <br />'; 
 echo 'image : '.$img.'  <br />'; 
 echo 'Reprend-on la cartouche ? : '.$reprise.'<br />'; 
 } 
 mysql_close(); */

?> 

<html>
<body>
<table border=1>
<TR>
<TD>Nom de la cartouche</TD><TD>Marque de la cartouche</TD><TD>Type de la cartouche</TD><TD>Description</TD><TD>Image</TD><TD>Reprend-on la cartouche ?</TD></TR>
<?php while(list($denomination, $reprise, $description, $img)=mysql_fetch_array($sql)){ ?><TR><TD><?php  echo $denomination ; ?></TD><TD></TD><TD></TD><TD><?php  echo $description ; ?></TD><TD><?php  echo $img ; ?></TD><TD><?php  echo $reprise ; ?></TD></TR> <?php } ?>
</table>
<a href="search.php" target="_self">refaire une recherche</a>
</body>
</html>


mais c'est vrai que je n'avais pas pensé aux row, qui facilite la tache... Cordialement,
Riwalenn

Répondre à Riwalenn

4

Riwalenn, le vendredi 11 août 2006 à 14:17:19
  • +1

En fait j'ai une erreur à ton code (finalement voulant afficher sur 3 tables sql j'ai décidé d'utiliser ton code plutôt que le mien)

Notice: Undefined index: reprise in c:\program files\easyphp1-8\www\eurosource-intranet\references\table.ph­p on line 18
Erreur = Erreur de syntaxe près de 'VALUES('','','','','','')' à la ligne 1


j'ai le problème à la ligne 18 pour toutes les occurences... :( Cordialement,
Riwalenn

Répondre à Riwalenn

5

Darshu, le vendredi 11 août 2006 à 15:07:54
  • +1

J'ai fait ce code a partir de ce que tu as donné, j'ai juste incorporé tes lignes. Comme je ne connais pas le contexte d'appel des pages (formulaire, url) ni la procédure d'appel, c'est dur de t'aider plus en en sachant pas plus !

ce que je peux quand même te dire : dans ce que j'ai mis on appelle $_GET['var'], aussi il faut s'assurer que var est bien passé dans l'url ou bien par un form dont la méthode est get. C'est d'ailleur visiblement le cas, le champ "reprise" n'est pas renseigné. Pour palier à ça, tu peux fiare un truc du genre $var = (isset($_GET['var'])) ? $_GET['var'] : ''; par exemple

T'as pensé à regarder sur Google avant de poser ta question ? 

Répondre à Darshu

6

Riwalenn, le vendredi 11 août 2006 à 15:42:36
  • +1

Comme j'ai un peu de mal à comprendre, je vais t'expliquer ce que je veux faire.

j'ai une base de donnée de 3 tables :

cartridges (catridgesID, denomination, marqueID, typeID, description, img, reprise)
type (typeID, nom)
marque (marqueID, nom)

je veux que les personnes dans mon entreprise grâce aux mots clé puissent savoir si la cartouche (cartridge) est reprise ou pas par notre société.

j'ai donc créée un formulaire de recherche avec pour form

<form method="GET" action="table.php"> 


table.php étant notre tableau.

je voudrais que s'affiche dans ce tableau :
- dans la table sql cartrigde : denomination, description, reprise
- dans la table type : nom
- dans la table marque : nom

exemple : cela donnerais un résultat :
HPI4844 (denomination) HP (marque) inkjet (type) cartouche blanche et plate n°10 Black (description) non (reprise).

voilà j'espère m'être bien expliqué... je voudrais que le résultat s'affiche dans un tableau où chaque résultat prendrait une ligne
par exemple si je fais une recherche sur le mot clé "noir" j'aurais le résultat suivant :

première ligne de résultat (enfin la deuxième dans le tableau) : TN2000 ...
deuxième ligne : TN6300 ...
troisième ligne : TN76600 ...
...

voilà en gros j'ai expliqué ce que j'essaie vainement de faire :P

Merci. Cordialement,
Riwalenn

Répondre à Riwalenn

7

Riwalenn, le vendredi 11 août 2006 à 15:47:22
  • +1

Ma page search.php (formulaire de recherche) est configuré de cette sorte :

<?php 
include ("connexion.php");
// Moteur de recherche 
// Le mot est entré dans 1 formulaire puis la recherche se fait 
// sur la table avec LIKE %$query% 
// $recherche est fourni par le formulaire 

// Le formulaire: 
?> <html> 
<form method="GET" action="table.php"> 
<table><tr>
<td>

  <p align=left>Marque imprimante :</p></td><td><p align=left> <?php $req="select nom from marque";
$res=mysql_query($req) or die("erreur dans la requête $req");
while ($tab=mysql_fetch_object($res))
$nom[]=$tab->nom;

echo "<center><select name='liste_marque[]'>";

for ($i=0;$i<count($nom);$i++)
echo "<option value='$nom[$i]'>$nom[$i]</option>";

echo "</select></center>"; 
$nom=array()
?></p></td></tr>
<tr>
<td>

  <p align=left>Marque imprimante :</p></td><td><p align=left> <?php $req="select nom from type";
$res=mysql_query($req) or die("erreur dans la requête $req");
while ($tab=mysql_fetch_object($res))
$nom[]=$tab->nom;

echo "<center><select name='liste_type[]'>";

for ($i=0;$i<count($nom);$i++)
echo "<option value='$nom[$i]'>$nom[$i]</option>";

echo "</select></center>"; ?></p></td></tr>
<tr><td><p align=left>Rechercher un mot :</p></td><td><p align=left> <input type="text" name="recherche"> 
<input type="SUBMIT" value="Recherche">  </p></td></tr></table>
</form> 
</html> 


tu peux constater que l'on voit dans cette page 2 menus déroulants : les noms de la table marque et les noms de la table type.

J'espère être plus clair à ce moment... que donc j'aurais voulu faire un get sur ces 2 occurences permettant aux personne de ne faire une recherche de mots clé que sur ces 2 occurences. par exemple je pourrais sélectionner HP dans le 1er menu et inkjet dans le 2nd.
Avec pour mot clé blanche. La recherche se ferait donc sur ces 3 occurances : HP and inkjet and blanche...

vois-tu où je veux en venir ? Cordialement,
Riwalenn

Répondre à Riwalenn

8

 Riwalenn, le vendredi 11 août 2006 à 17:16:41
  • +1

Au final j'ai réussi à faire un code de ce genre me permettant d'afficher les 2 colonnes manquantes (marque et type) :

<?php 
include ("connexion.php");
// Récupère la variable 
$recherche = isset($_POST['recherche']) ? $_POST['recherche'] : ''; 
// la requete mysql 
$sql = mysql_query("SELECT cartridges.denomination, marque.nom, type.nom, cartridges.reprise, cartridges.description, cartridges.img FROM cartridges, type, marque WHERE cartridges.description LIKE ('%$recherche%')  AND cartridges.marqueID=marque.marqueID AND cartridges.typeID=type.typeID order by cartridges.denomination") or die (mysql_error()); 

/* affichage du résultat 
 while(list($denomination, $reprise, $description, $img)=mysql_fetch_array($sql)){ 
 echo 'Nom de la cartouche : '.$denomination.'  <br />'; 
 echo 'Description : '.$description.'  <br />'; 
 echo 'image : '.$img.'  <br />'; 
 echo 'Reprend-on la cartouche ? : '.$reprise.'<br />'; 
 } 
 mysql_close(); */

?> 

<html>
<body>
<table border=1>
<TR>
<TD>Nom de la cartouche</TD><TD>Marque de la cartouche</TD><TD>Type de la cartouche</TD><TD>Description</TD><TD>Image</TD><TD>Reprend-on la cartouche ?</TD></TR>
<?php while(list($denomination, $marque, $type, $reprise, $description, $img)=mysql_fetch_array($sql)){ ?><TR><TD><?php  echo $denomination ; ?></TD><TD><?php  echo $marque ; ?></TD><TD><?php  echo $type ; ?></TD><TD><?php  echo $description ; ?></TD><TD><?php  echo $img ; ?></TD><TD><?php  echo $reprise ; ?></TD></TR> <?php } mysql_close(); ?>
</table>
<a href="search.php" target="_self">refaire une recherche</a>
</body>
</html>


le seul hic c'est que j'ai toute ma base de donnée qui s'affiche.. j'ai fait un select distinct et cela ne fonctionne pas non plus. Que faire ?

p.s : finalement j'ai trouvé la solution mon formulaire était en GET au lieu de POST... ;) Cordialement,
Riwalenn

Répondre à Riwalenn
Php/ Afficher nouveau tableau depuis bouton Bonjour, je suis sur ma page "index.php" contenant un tableau de variables (l'affichage du tableau est limité car les variables sont très nombres, donc j'en affiche 10) et en dessous de ce tableau figure des boutons visant vers la cible... www.commentcamarche.net/forum/affich-12652665-php-afficher-nouveau-tableau-depuis-bouton
Php : Array => recherche / Tri par nom (Résolu) Bonjour a tous .... J'ai un souci. Suite à une requête MySql, je stock toute la table dans un tableau grâce a mysql_fetch_array. Une fois les données stocké, je voudrai les trier par le nom de colone de ma table MySql. Est ce possible ... Puis je... www.commentcamarche.net/forum/affich-1988542-php-array-recherche-tri-par-nom
PHP MySql, rechercher dans plusieurs tables (Résolu) Bonjour! Je viens de creer une base de donné avec 3 table et je veux un script qui me permet de faire une recherche dans ces 3 tables a la fois en utilisant PHP Mysql. Merci. www.commentcamarche.net/forum/affich-1029703-php-mysql-rechercher-dans-plusieurs-tables
[Shell] Tester une variable numériqueTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à... www.commentcamarche.net/faq/sujet-4605-shell-tester-une-variable-numerique
[PHP] Les ressemblances à ne pas confondreIntroduction Concaténation ou paramètres ? Guillemets/Apostrophe Structure require/include isset vs empty htmlentities ou htmlspecialchars ? Nombre de signes égal Introduction Cette astuce présente plusieurs fonction ou astuces en php... www.commentcamarche.net/faq/sujet-4479-php-les-ressemblances-a-ne-pas-confondre
[javascript]variable PHP ds javascriptbonjour voia j'ai 2 variables PHP $variable1, $variable2 j'aimerai les inclures la dedans dans la variable result var result=new Array('',''); var legend=new Array('Bonne Reponse','Mauvaise Reponse'); www.commentcamarche.net/forum/affich-2240273-javascript-variable-php-ds-javascript
Php : variables de session de page en pagebonsoir ! il parait que c'est tout simple les sessions ! je bloque sur le transfert des variables de sessions de page en page : page1 : l'utilisateur s'identifie avec login et mot de passe, ca fonctionne. page2.php : www.commentcamarche.net/forum/affich-2180170-php-variables-de-session-de-page-en-page
Formulaire PHP : transfert de tableau (Résolu)Bonjour, J’ai un formulaire surlequel l’utilisateur saisie ses données et en arrière plan le script créé (indépandamment de ces saisies) un tableau simple de valeurs (type chaine de caractère). Je souhaite passer toutes ces infos par le formulaire... www.commentcamarche.net/forum/affich-1769694-formulaire-php-transfert-de-tableau
PHP - Les variablesConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois... www.commentcamarche.net/contents/php/phpvar.php3
PHP - Créer un moteur de rechercheIdée générale Le moteur de recherche ci-dessous ne correspond qu'à une idée possible de moteur de recherche simple, ne gérant qu'un seul mot clé. Le concept du fonctionnement de ce moteur est de créer une base de donnée contenant les mots clés de... www.commentcamarche.net/contents/php/phpmoteur.php3
PHP - Les variables d'environnementNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script... www.commentcamarche.net/contents/php/phpenv.php3