Page 1 sur 1

erreur de l'exécution du programme

Posté : 22 mars 2013, 04:47
par Tricepha
Bonjour à tous,
J'ai des erreurs sur le programme que je n'arrive pas à résoudre. Voici le premier fichier qui récupère des requêtes :
<!DOCTYPE HTML>
<html>
<head>
<title>Recherche dans le catalogue </title>
</head>

<body>
<form action="resultats.php" method="post">
Choisissez un type de recherche;:<br />

<select name="type_recherche">
<option value="auteur">Par auteur</option>
<option value="titre">Par titre</option>
<option value="isbn">Par ISBN</option>
</select>
<br />
Entrez le terme recherché: <br />
<input name="terme_recherche" type="text" size="40"/>
<br />
<input type="submit" value="Rechercher"/>
</form>

</body>
</html>
=======================================================================================================

Voici le fichier qui pose problème: resultat.php
<?php
// Création de variables aux noms abrégés
$type_recherche = $_POST['type_recherche'];
$terme_recherche = trim($_POST['terme_recherche']);

if (!$type_recherche || !$terme_recherche){
echo "Vous n'avez pas saisi les détails de la recherche";
exit();
}

if (!get_magic_quotes_gpc()){
$type_recherche = addslashes($type_recherche);
$terme_recherche = addslashes($terme_recherche);
}

@$db = new mysqli('localhost', 'root', '', 'livres');

if (mysqli_connect_errno()){
echo "Impossible de se connecter à la base de données.";
exit();
}

$requete = "select * from livres where ". $type_recherche .
"like '%$terme_recherche%'";
$resultat = $db->query($requete);

$nb_lig_resultat = $resultat->num_rows;

echo '<p>Nombre de livres trouvés: ' . $nb_lig_resultat . '<br/>';

for($i = 0; $i < $nb_lig_resultat; $i++){
$ligne = $resultat -> fetch_assoc();
echo "<p><strong>" .($i+1) . ". Titre&nbsp;: ";
echo htmlspecialchars(stripslashes($ligne['titre']));
echo "</strong><br/>Auteur&nbsp;: ";
echo "<br/>ISBN&nbsp;: ";
echo stripslashes($ligne['isbn']);
echo "<br/>Prix&nbsp;: ";
echo stripslashes($ligne['prix']);
echo '</p>';
}

$resultat->free();
$db->close();
?>
=======================================================================================
Quand je lance le programme j'ai l'erreur suivante:

( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Trying to get property of non-object in C:\wamp\www\Test\Chapitre-11\resultats.php on line 44
Call Stack
# Time Memory Function Location
1 0.0006 262528 {main}( ) ..\resultats.php:0
Nombre de livres trouvés:


( ! ) SCREAM: Error suppression ignored for
( ! ) Fatal error: Call to a member function free() on a non-object in C:\wamp\www\Test\Chapitre-11\resultats.php on line 60
Call Stack
# Time Memory Function Location
1 0.0006 262528 {main}( ) ..\resultats.php:0
=========================================================================
Merci de votre aide

Re: erreur de l'exécution du programme

Posté : 22 mars 2013, 05:56
par Fre3z69
Pour ma part concernant la ligne 40 (qui n'est pas à sa place pas dans le code montré, on dois pas avoir la page complète ^^) je pense que ça viens du fait que tu utilise ceci:
$resultat->num_rows;
Ce format correspond au type de requête pour PDO, et tu ne l'utilise pas.

Essaye plutôt ce format:
$nb_lig_resultat = mysql_num_rows($resultat);
ou
$résultat->mysql_num_rows;
Je te conseil quand même de regarder du coté de PDO, qui une fois bien pris en mains, fait des merveilles, et facilite grandement la vie, mais c'est un suggestion, pas un ordre ;-)

Pour la ligne 60, il te dit en gros qu'il connais pas l'objet free(), donc tu dois regarder de ce coté, mais j'avoue (vu l'heure j'ai pas tout analyser ton code)

Et pour info

Pour mettre du code dans les pages et te simplifier la vie, dans les boutons au dessus du textarea, tu a le bouton "PHP"

Clique dessus et met ton code dedans ;-)

Pareil pour HTML, JS CSS et autre code qui sont "SQL", "HTMl", "JavaScript", "CSS", "Code"

Ça donne un meilleur rendu et c'est plus facile pour sélectionner un code, pour t'aider ;-)

exemple:
<?php

$var = 'Salut à toi!';
echo $var;

?>
Voila, en espérant que tout ça t'aideras mieux

Cordialement

Re: erreur de l'exécution du programme

Posté : 22 mars 2013, 09:17
par Tricepha
Bonjour,
Merci de votre réponse. J'ai testé votre solution, mais j'ai toujours l'erreur. Cette fois-ci le message est le suivant:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\Test\Chapitre-11\resultats.php on line 39

Re: erreur de l'exécution du programme

Posté : 22 mars 2013, 21:10
par moogli
salut,

garde ton code de départ et test le retour de query car la requête est foireuse, tu pourras afficher un message d'erreur correct et résoudre ton soucis.
voir la doc de query pour plus d'infos.

N'utilise pas les magic quote, et protège tes données correctement avec http://www.php.net/manual/fr/mysqli.rea ... string.php



@+