Probleme PHP mySQL

Résolu/Fermé
remoh - 22 oct. 2007 à 12:06
 remoh - 22 oct. 2007 à 20:14
Bonjour,

Je débute en PHP, j'ai récuperé un script sur PHP débutant...
J'ai créé un formulaire html où on selectionne le "Type" qui permet d'afficher les resultats en fonction de ce "Type"
Tout fonctionne très bien mais lorsque j'ajoute WHERE Type='.$_POST['Type'].' à ma requete mySQL, les résultats ne s'affiche plus... il n'y a pourtant pas d'erreur de syntax???

Merci de votre aide.

Je vous donne mon code :

<html>
<body>
<?php
//=========================================
// includes du fichier fonctions
//=========================================
require 'fonctions.php';
//=========================================
// information pour la connection à le DB
//=========================================
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'test';

//=========================================
// initialisation des variables
//=========================================
// on va afficher 5 résultats par page.
$nombre = 5;
// si limite n'existe pas on l'initialise à zéro
if (!$limite) $limite = 0;
// on cherche le nom de la page.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];

//=========================================
// connection à la DB
//=========================================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

//=========================================
// requête SQL qui compte le nombre total
// d'enregistrements dans la table.
//=========================================
$select = 'SELECT count(id) FROM Sorties';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];

//=========================================
// vérifier la validité de notre variable
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=========================================
// requête SQL qui ne prend que le nombre
// d'enregistrement necessaire à l'affichage.
//=========================================
$select = 'select Date,Type,Désignation,Lieu FROM Sorties WHERE Type='.$_POST['Type'].' ORDER BY Date ASC limit '.$limite.','.$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

//=========================================
// si on a récupéré un resultat on l'affiche.
//=========================================
if($total) {
// début du tableau
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Date</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Type</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Désignation</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Lieu</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row['Date'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['Type'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['Désignation'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['Lieu'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result);

//=========================================
// si le nombre d'enregistrement à afficher
// est plus grand que $nombre
//=========================================
if($total > $nombre) {
// affichage des liens vers les pages
affichePages($nombre,$page,$total);
}
?>
</body>
</html>
A voir également:

4 réponses

bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
22 oct. 2007 à 17:55
salut, essaye d'affecter la valeur de $_POST['Type'] dans une variable temporaire et d'utiliser cette dernière dans ta ligne de commande MySQL, on sait jamais
0
Salut bbar,
merci de ton aide. En effet ça fonctionne, j'ai fait $type = $_POST['type'] que j'ai remplacé dans ma ligne de commande. Mais par contre je n'arrive pas à passer d'une page de résultats à l'autre. La première avec une limite=0 s'affiche correctement mais ensuite quand je clique sur les liens page2 ou page3 ..., j'obtiens le message "pas d'enregistrements dans cette table"...!

Apparement il faut que j'envoie dans l'url du lien la valeur de ma variable $type...

je donne le code de ma fonction pour les liens entre les pages de résultats :

<?php
function affichePages($nb,$page,$total) {
$nbpages=ceil($total/$nb);
$numeroPages = 1;
$compteurPages = 1;
$limite = 0;
echo '<table border = "0" ><tr>'."\n";
while($numeroPages <= $nbpages) {
echo '<td ><a href = "'.$page.'?limite='.$limite.'&type='.$type.'">'.$numeroPages.'</a></td>'."\n";
$limite = $limite + $nb;
$numeroPages = $numeroPages + 1;
$compteurPages = $compteurPages + 1;
if($compteurPages == 10) {
$compteurPages = 1;
echo '<br>'."\n";
}
}
echo '</tr></table>'."\n";
}
?>

Je vois pas où est le problème...
Merci à tous ceux qui pourront m'aider!
0
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
22 oct. 2007 à 19:24
ce qui m'intéresserait, c'est juste le bout de code pour récupérer $limite et $type envoyés par ta fonction affichePages, parce qu'à priori, tu récupères tes variables par la méthode post ($_POST ...) alors qu'en mettant tes variables dans l'url, il s'agit de la méthode get ($_GET).
0
en fait je recupere $type par le biais d'un formulaire html et $limite est calculé directement par la fonction que j'ai postée $limite=0 au départ puis $limite = $limite + $nb (nombre de resultats dèja affichés)...

Je pense vraiment que le probleme se situe au niveau du lien ><a href = "'.$page.'?limite='.$limite.'&type='.$type.'">'.$numeroPages.'</a>

...merci
0