Bonjour à tous,

Je suis en train de faire une page php avec des requêtes mysql selon un champ de recherche dans une page.

L'affichage de la page de la page de base marche, mais c'est lorsque je fait une recherche que ça se ne marche plus.

j'ai le message:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Warning: mysqli_prepare() expects parameter 1 to be mysqli, resource given in /volume1/web/filmessai-codebarre/recherche-simple.php on line 27
 
Warning: mysqli_error() expects parameter 1 to be mysqli, resource given in /volume1/web/filmessai-codebarre/recherche-simple.php on line 36


voici le code php de ma page de recherche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
// Inclusion du fichier qui contient les fonctions générales.
include('./include/fonctions.inc.php');
// Variable pour un éventuel message.
$message = '';
// Traitement du formulaire.
if (isset($_POST['ok'])) {
  // Supprimer la protection "magic quotes" éventuelle
  // des tableaux GPC.
  supprimer_encodage_MQ_GPC();
  // Récupérer le texte saisi.
  $recherche = $_POST['recherche'];
  if (empty($recherche)) {
    $message = 'Vous devez saisir le texte recherché.';
  } else {
    // Connexion.
    // Utilisation de l'opérateur @ pour masquer les alertes.
    $db = mysql_connect('localhost', 'root', 'xxxxxxx');
 
    if ($db === FALSE) {
      $message = 'Erreur de connexion à la base de données.';
    } else {
      // Exécuter la requête de recherche.
      $sql = "SELECT c.ISBN,c.Numero,c.box,c.IDFilm " .
             "FROM filmessai.codebarre c " .
             "WHERE c.IDFilm='?'";
      if ($requête = mysqli_prepare($db,$sql)) {
        $ok = mysqli_stmt_bind_param($requête,'s',$recherche);
        if ($ok) { 
          $ok = mysqli_stmt_bind_result
                  ($ISBN,$id,$Numero,$box,$IDFilm);
        }
        if ($ok) { $ok = mysqli_execute($requête); }
        if (! $ok) { $message = mysqli_stmt_error($requête);}
      } else {
        $message = mysqli_error($db);
      }
      if ($message) {
        $message = "Erreur lors de la recherche ($message).";
      }
    }
  }
}
// Affichage de la page ...
?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>',"\n"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head><title>Rechercher un livre</title></head>
  <body>
    <!-- Formulaire de recherche (très simple !) -->
    <form action="recherche-simple.php" method="post">
    <div>Rechercher : 
    <input type="text" name="recherche" 
       value="<?php echo vers_formulaire($recherche) ?>" />
    <input type="submit" name="ok" value="OK" /></div>
    </form>
    <!-- Résultat de la recherche -->
    <?php
    // Compteur du nombre de livres trouvés.
    $nombre_livres = 0;
    if ($requête) { // S'il y a un résultat à afficher
      // Balise d'ouverture de la table HTML.
      echo '<table border="0" cellpadding="4">',"\n";
      // Boucle de fetch.
      while (mysqli_stmt_fetch($requête)) {
        $nombre_livres++;
        // Mise en forme des données.
        $ISBN = vers_page($ISBN);
        $id = vers_page($id);
        $Numero = vers_page($Numero);
		$$box = vers_page($box);
		$IDFilm = vers_page($IDFilm);
      } // while
      // Balise de fermeture de la table HTML.
      echo '</table>',"\n";
      // Si le résultat est vide, afficher un message.
      if ($nombre_livres == 0) {
        $message = 'Aucun livre trouvé.';
      }
    } // if ($requête)
    ?>
    <div><?php echo vers_page($message); ?></div>
  </body>
</html>
voici les fonctions qui sont incluse dans la page de recherche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<?php
 
function afficher_tableau($tableau,$titre="",$niveau=0) {
 
  // Paramètres
  //    - $tableau = tableau dont il faut afficher le contenu
  //    - $titre = titre à afficher au dessus du contenu
  //    - $niveau = niveau d'affichage
 
  // s'il y a un titre, l'afficher
  if ($titre != "") {
    echo "<P><B>$titre</B><BR>\n";
  }
 
  // tester s'il y des données
  if (isset($tableau)) { // il y a des données
 
    // parcourir le tableau passé en paramètre
    reset ($tableau);
    while (list ($cle, $valeur) = each ($tableau)) {
 
      // afficher la clé (avec indentation fonction 
      // du niveau)
      echo
        str_pad("",12*$niveau, "&nbsp;").
            htmlentities($cle)." = ";
 
      // afficher la valeur
      if (is_array($valeur)) { // c'est un tableau ...
 
        // mettre une balise <BR>
        echo "<BR>";
        // et appeler récursivement afficher_tableau pour 
        // afficher le tableau en question (sans titre et au
        // niveau supérieur pour l'indentation)
        afficher_tableau($valeur,"",$niveau+1);
 
      } else { // c'est une valeur scalaire
 
        // afficher la valeur
        echo htmlentities($valeur)."<BR>";
 
      }
 
    }
 
  } else { // pas de données
 
    // mettre une simple balise <BR>
    echo "<BR>\n";
 
  }
 
}
 
 
function supprimer_encodage_MQ_GPC() {
  // Si magic quotes est actif ...
  if (get_magic_quotes_gpc()) {
    // Définir une fonction "strip_slashes" qui accepte un 
    // paramètre par référence (important) et qui lui applique 
    // la fonction "stripslashes".
    function strip_slashes(&$valeur) {
      $valeur = stripslashes($valeur);
    }
    // Appliquer cette fonction "strip_slashes" de façon récursive
    // à tous les tableaux GPC.
    array_walk_recursive($_POST, 'strip_slashes');
    array_walk_recursive($_GET, 'strip_slashes');
    array_walk_recursive($_REQUEST, 'strip_slashes');
    array_walk_recursive($_COOKIE, 'strip_slashes');
  }
}
 
 
function supprimer_encodage_MQ($valeur) {
  // si magic quotes est actif, retourner
  // la valeur après suppression de l'encodage
  // (=> appel à stripslashes), sinon, retourner
  // la valeur
  return (get_magic_quotes_gpc())?
    stripslashes($valeur):$valeur;
}
 
 
function valeur_saisie($valeur) {
  return supprimer_encodage_MQ (trim($valeur));
}
 
 
function vers_formulaire($valeur) {
 
  // affichage dans un formulaire
 
  // encoder tous les caractères HTML spéciaux
  //  - ENT_QUOTES : dont " et '
  return htmlentities($valeur,ENT_QUOTES,'UTF-8');
 
}
 
 
function vers_page($valeur) {
 
  // affichage direct dans une page
 
  // 1. encoder tous les caractères HTML spéciaux
  //  - ENT_QUOTES : dont " et '
  // 2. transformer les sauts de ligne en <BR>
  return nl2br(htmlentities($valeur,ENT_QUOTES,'UTF-8'));
 
}
 
 
function construire_requête($db,$sql) {
 
  // Récupérer le nombre de paramètre.
  $nombre_param = func_num_args();
 
  // Boucler sur tous les paramètres à partir du troisième
  // (le premier contient la requête de base).
  for($i=2;$i<$nombre_param;$i++) {
 
    // Récupérer la valeur du paramètre.
    $valeur = func_get_arg($i);
 
    // Si c'est une chaîne, l'échapper.
    if (is_string($valeur)) {
      $valeur = mysqli_escape_string($db,$valeur);
    }
 
    // Mettre la valeur à son emplacement %n (n = $i-1).
    $sql = str_replace('%'.($i-1),$valeur,$sql);
 
  }
 
  // Retourner la requête.
  return $sql;
 
}
 
 
function identifiant_unique() {
 
  // génération de l'identifiant
  return md5(uniqid(rand()));
 
}
 
 
function url($url) {
 
  // si la directive de configuration session.use_trans_sid 
  // est à 0 (pas de transmission automatique par l'URL) et 
  // si SID est non vide (le poste a refusé le cookie) alors
  // il faut gérer soi même la transmission
 
  if ((get_cfg_var("session.use_trans_sid") == 0) and (SID != "")) {
 
    // ajouter la constante SID derrière l'URL avec un ? 
    // s'il n'y a pas encore de paramètre ou avec un & dans
    // le cas contraire
 
    $url .= ((strpos($url,"?") === FALSE)?"?":"&").SID;
 
  }
 
  return $url;
 
}
 
?>
si je fait une requête avec le query de mysql ça me donne une réponse:
Nom : recherche-simple-mysql query browser 01.jpg
Affichages : 451
Taille : 176,0 Ko

Donc je viens vers vous pour connaitre ce qu'il y a de pas juste dans mon code.

D'avance merci de votre aide.

Bonne journée

Chris