Affiche array au lieu du titre

Zetomate Messages postés 11 Statut Membre -  
Darshu Messages postés 303 Statut Membre -
Bonjour tous le monde,

Ca fait 3 semaines que je développe une application de recherche en php pour mon travail, et aujourd'hui j'arrive presque a la fin.
J'ai juste un petit problème dans l'affichage de mon traitement.
En effet, mon affichage se fait sous forme de tableau mais les titres des colonnes sont appelé Array au lieu du titre exact.

Je précise que me titre de colonnes sont ecrit en fonction de cases à cocher.

Voici mon formulaire:

<table width="100%" border="1" align="left" bordercolor="#000000">
<tr align="left">
<td width="10%">
  <input type="checkbox" name="request[STDFMM]" value="1" />Mois </td>
<td width="10%">
  <input type="checkbox" name="request[STDFAA]" value="1" />Année </td>
<td width="9%"> 
  <input type="checkbox" name="request[STDEPO]" value="1" />Dépot</td>
<td width="10%"> 
  <input type="checkbox" name="request[STACTI]" value="1" />Activité</td>
<td width="9%"> 
  <input type="checkbox" name="request[STSERV]" value="1" />Services</td>
<td width="11%">
  <input type="checkbox" name="request[STCLIE]" value="1" />Num Client </td>
<td width="10%"> 
  <input type="checkbox" name="request[STCHAP]" value="1" />Chapitre</td>
<td width="9%"> 
  <input type="checkbox" name="request[STZLB1]" value="1" />Famille</td>
<td width="10%"> 
  <input type="checkbox" name="request[STNART]" value="1" />Code Art.</td>
<td width="12%"> 
  <input type="checkbox" name="request[STREPR]" value="1" />Représentant</td>


Et ma requête php:

 foreach($_POST['request'] as $criterion => $value) {
   	echo "<td>";
  	echo $_POST['request'];
  	echo "</td>";


Mon but étant de récupérer les mots: Mois, Année, Activités ...

7 réponses

Darshu Messages postés 303 Statut Membre 64
 
Salut. Si tu veux récupérer les mots, ne fais pas comme ça, mais essaie plutôt ceci :
table width="100%" border="1" align="left" bordercolor="#000000">
<tr align="left">
<td width="10%">
  <input type="checkbox" name="request[]" value="Mois" />Mois </td>
<td width="10%">
  <input type="checkbox" name="request[]" value="Année" />Année </td>
<td width="9%"> 
  <input type="checkbox" name="request[]" value="Dépot" />Dépot</td>
<td width="10%"> 
  <input type="checkbox" name="request[]" value="Activité" />Activité</td>
<td width="9%"> 
  <input type="checkbox" name="request[]" value="Services" />Services</td>
<td width="11%">
  <input type="checkbox" name="request[]" value="Client" />Num Client </td>
<td width="10%"> 
  <input type="checkbox" name="request[]" value="Chapitre" />Chapitre</td>
<td width="9%"> 
  <input type="checkbox" name="request[]" value="Famille" />Famille</td>
<td width="10%"> 
  <input type="checkbox" name="request[]" value="Article" />Code Art.</td>
<td width="12%"> 
  <input type="checkbox" name="request[]" value="Représentant" />Représentant</td>

et le code PHP sera comme ça :
$tab_request = $_POST['request'];
foreach ($tab_request as $request)
   echo "<TD>".$request."</TD>";

0
Zetomate Messages postés 11 Statut Membre
 
Ca ne marche pas car j'utilise mes valeurs de request avant.

Voila tous mon code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Recherche statistique sur GUILLEMET MATERIAUX</title>
<style type="text/css">
<!--
.Style1 {
	font-size: 14px;
	font-style: italic;
	font-family: Geneva, Arial, Helvetica, sans-serif;
}
-->
</style>
</head>

<?php

$dbc=mysql_connect('localhost','root',''); //connexion mysql
mysql_select_db('essais'); //selection de la base

php?>

<body>
<div><img src="LogoWeb.jpg" hspace="0" vspace="0" border="0" / ></div>
<div align="center">
<h1>Vous êtes sur la page de recherche de GUILLEMET MATERIAUX </h1>
</div>

<div align="center" class="Style1" >
  La première ligne de ce tableau permet de sélectionner les champs que vous voulez faire apparaitre dans votre résultat.
    La seconde ligne permet de choisir les diffférents critères de selection nécessaires à votre demande.<br /> 
  ATTENTION !!!, ne pas oubliez pas de cocher les cases correspondantes à vos critères de recherche.
</div>
<BR /><BR />
<form method="post" action="req.php">


<table width="100%" border="1" align="left" bordercolor="#000000">
<tr align="left">
<td width="10%">
  <input type="checkbox" name="request[STDFMM]" value="1" />Mois </td>
<td width="10%">
  <input type="checkbox" name="request[STDFAA]" value="1" />Année </td>
<td width="9%"> 
  <input type="checkbox" name="request[STDEPO]" value="1" />Dépot</td>
<td width="10%"> 
  <input type="checkbox" name="request[STACTI]" value="1" />Activité</td>
<td width="9%"> 
  <input type="checkbox" name="request[STSERV]" value="1" />Services</td>
<td width="11%">
  <input type="checkbox" name="request[STCLIE]" value="1" />Num Client </td>
<td width="10%"> 
  <input type="checkbox" name="request[STCHAP]" value="1" />Chapitre</td>
<td width="9%"> 
  <input type="checkbox" name="request[STZLB1]" value="1" />Famille</td>
<td width="10%"> 
  <input type="checkbox" name="request[STNART]" value="1" />Code Art.</td>
<td width="12%"> 
  <input type="checkbox" name="request[STREPR]" value="1" />Représentant</td>

</tr>
<tr>
<td height="46">
  <input type="checkbox" name="criteria[STDFMM]" value="1" />
<select name="keywords[STDFMM]" >
<option value='0'>Mois</option>
<?php
$res = mysql_query('select distinct STDFMM from statvene');
while ($stdfmm = mysql_fetch_row($res))
{
echo '<option value="'.$stdfmm[0].'">'.$stdfmm[0].' </option>';
}
?> 

</select></td>

<td height="46">
<input type="checkbox" name="criteria[STDFAA]" value="1">
<select name="keywords[STDFAA]">
<option value='0'>Année</option>
<?php
$res = mysql_query('select distinct STDFAA from statvene');
while ($stdfaa = mysql_fetch_row($res))
{
echo '<option value="'.$stdfaa[0].'">'.$stdfaa[0].' </option>';
}
?>

</select></td>
<td>

<input type="checkbox" name="criteria[STDEPO]" value="1" />
<select name="keywords[STDEPO]">
<option value="0">--</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
</select>
</td>

<td height="46">
  <input type="checkbox" name="criteria[STACTI]" value="1" />
<select name="keywords[STACTI]">
<option value="0">Act</option>
<?php
$res = mysql_query('select distinct STACTI from statvene');
while ($stacti = mysql_fetch_row($res))
{
echo '<option value="'.$stacti[0].'">'.$stacti[0].' </option>';
}
?>
</select></td>

<td height="46">
  <input type="checkbox" name="criteria[STSERV]" value="1" />
<select name="keywords[STSERV]">
<option value="0">--</option>
<?php
$res = mysql_query('select distinct STSERV from statvene');
while ($stserv = mysql_fetch_row($res))
{
echo '<option value="'.$stserv[0].'">'.$stserv[0].' </option>';
}
?>
</select></td>

<td>
<input type="checkbox" name="criteria[STCLIE]" value="1" />
<input type="text" name="keywords[STCLIE]" size="7" />
</td> 

<td>
<input type="checkbox" name="criteria[STCHAP]" value="1" />
<input type="text" name="keywords[STCHAP]" size="7" />
</td> 

<td>
<input type="checkbox" name="criteria[STZLB1]" value="1" />
<input type="text" name="keywords[STZLB1]" size="5" />
</td> 

<td>
<input type="checkbox" name="criteria[STNART]" value="1" />
<input type="text" name="keywords[STNART]" size="7" />
</td> 

<td>
<input type="checkbox" name="criteria[STREPR]" value="1" />
<input type="text" name="keywords[STREPR]" size="7" />
</td> 
</tr>

</table>

<br><br><br><br><br>
<p>
<input type="checkbox" name="order" value="1" />
Classé par : 
<select name="Ordby">
<option value="">---</option>
<option value="STDFAA">Année</option>
<option value="STDFMM">Mois</option>
<option value="STDEPO">Dépot</option>
<option value="STACTI">Activité</option>
<option value="STSERV">Services</option>
<option value="STCLIE">Client</option>
<option value="STCHAP">Chapitre</option>
<option value="STZLB1">Famille</option>
<option value="STNART">Code Article</option>
<option value="STREPR">Représentant</option>

</select>
</p>

<div align="center">
  <input name="submit" type="submit" value="Envoyer la requ&ecirc;te" />
</div>
</form>
</body>
</html>


Code php:
<?php 

$dbc=mysql_connect('localhost','root',''); //connexion mysql 
mysql_select_db('essais'); //selection de la base 


$whereclause = "";
 foreach($_POST['criteria'] as $criterion => $value) {
   $whereclause .= mysql_escape_string($criterion)."='".mysql_escape_string($_POST['keywords'][$criterion])."' AND ";
 }
 $whereclause = rtrim($whereclause," AND ");


$select = "";
 foreach($_POST['request'] as $criterion => $value) {
   $select .= mysql_escape_string($criterion)." , "; 
 }
 $select = rtrim($select," , ");
 
 // Fonction du ORDER BY
 if ( isset ( $_POST['order'] ))
{ $order  = "ORDER BY ".$_POST['Ordby']."";
} else $order = "" ; // ceci pour indiquer que ce critère n'est pas à prendre en compte !

$sql = "SELECT DISTINCT $select FROM statvene WHERE $whereclause $order "; 
$res = mysql_query($sql) or die ('Erreur SQL : impossible d\'effectuer la requête : <br />'.$sql); 
$total = mysql_num_rows($res); 

if ($total) { 
echo "<div><img src=\"LogoWeb.jpg\"></div>";
echo $sql;
echo"<table width=\"100%\" border=\"1\" align=\"left\" bordercolor=\"#000000\">
	<tr>";

 foreach($_POST['request'] as $criterion => $value) {
   	echo "<td>";
  	echo $_POST['request'];
  	echo "</td>";
   }
   
 
echo	"</tr>"; 

while($row = mysql_fetch_row($res)) { 
echo "  

	<tr>
		<td>$row[0]</td>
		<td>$row[1]</td>
		<td>$row[2]</td>
		<td>$row[3]</td>
		<td>$row[4]</td>
		<td>$row[5]</td>
		<td>$row[6]</td>
		<td>$row[7]</td>
		<td>$row[8]</td>
		<td>$row[9]</td>
	</tr>";

} 

} 

echo "</table>";
?>
0
Darshu Messages postés 303 Statut Membre 64
 
Je ne comprend pas pourquoi tu dis que ça ne marche pas. Pour la suite tu n'as pas besoin des valeurs de request ...
0
Zetomate Messages postés 11 Statut Membre
 
Si tu regarde bien mon code php, j'utilise les valeurs de mes request pour créer le SELECT de ma requête en fonction des cases que j'ai cochées dans mon formulaire. Donc quand je fait ta manip, ma requete se transforme en SELCET 1,2,3 au lieu de prendre mes valeurs de request.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Darshu Messages postés 303 Statut Membre 64
 
Ok je vois, mais tu voulais récupérer les valeurs "Mois" "Année" et c'est le seul moyen que je vois pour le faire : tu affectes ça comme valeur au checkbox et tu le récupères par la suite en $_POST['request'], qui est alors un tableau (et non pas une simple variable).

N'empêche qu'il y a des trucs louches dans ton code, comme ça :
foreach($_POST['request'] as $criterion => $value) {
   echo "<td>";
  echo $_POST['request'];
  echo "</td>";
}

Tu fais as $criterion et tu utilises juste après $_POST['request'] ! Ca n'a pas de sens :) Peut-être que ton erreur vient de la alors ...
0
Darshu Messages postés 303 Statut Membre 64
 
Rectification, c'est même sur que c'est ça, car vu ton écriture $_POST['request'] est un tableau (comme je l'ai dit juste au dessus). Et donc, quand tu demandes l'affichage il te met tout simplement Array car tu ne spécifies pas ce que tu veux voir dans le tableau ... Bref, utilise $criterion et ça devrait marcher :)
0
Zetomate Messages postés 11 Statut Membre
 
Merci,

C'est ce que je venais de faire avant de lire ta réponse. Certes cela affiche l'ibtitule des champs des ma table que j'interroge, mais cela reste compréhensible.

Merci beaucoup quand même.

Sinon tu connaitrais pas une fonction pour que je puisse exporter mon fichier en csv sous excel?
0
Darshu Messages postés 303 Statut Membre 64
 
Non je ne sais pas faire ça, mais pour ton affichage tu peux faire un str_replace juste pour le nom des colonnes.

Regardes sur https://www.php.net/str_replace pour voir comment l'utiliser, c'est assez pratique, surtout en passant par des tableaux.
0