Salut
J'ai fais un code qui fonctionne bien, mais avec une faute de manipulation je l'ai effacé et lorsque je l'ai répété il ne fonctionne plus !
C'est un formulaire de recherche, j'ai testé le contenu de $_POST ça fonctionne, je pense que j'ai une faute dans la requête SELECT.
Est ce que je peux affecter une valeur dans une requête directe ?
formulaire recherche:
recherche_simple.php
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 <!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=utf-8" /> <title>Untitled Document</title> </head> <body> <h3> Recherche simple </h3> <p> Saisissez votre requête puis cliquez sur le bouton Titre, Artiste ou Film pour valider. </p> <form action="recherche_simple.php" method="post"> <input type="text" name="recherche" id="recherche" rows="50" cols="200" /> <input type="submit" name="titre" id="titre" value="Titre"/> <input type="submit" name="artiste" id="artiste" value="Artiste" /> <input type="submit" name="film" id="film" value="Film" /> </form> </body> </html>
erreur:
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 <?php try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=projet', 'root', '', $pdo_options); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } ?> <?php if ((isset($_POST['titre'])) || (isset($_POST['artiste'])) || (isset($_POST['film']))) { if (isset($_POST['titre'])) { $titre = $_POST['recherche']; print_r($_POST); $req = $bdd->query('SELECT titre, artiste, quantite FROM cd_audio WHERE titre = \'' . $titre . ' \''); while ($resultat = $req->fetch()) { echo 'la chanson ' . $titre . ' de l\'artiste ' . $resultat['artiste'] . ' est: '; if ($resultat['quantite'] > '0') { echo '<br>Diponible<br><a href="acheter.php">Acheter</a>'; } else { echo 'Non disponible'; } $req->closeCursor(); } } else if (isset($_POST['artiste'])) { $artiste = $_POST['recherche']; $req = $bdd->query('SELECT titre, artiste, quantite FROM cd_audio WHERE artiste = \'' . $artiste . ' \''); while ($resultat = $req->fetch()) { $chansons = $req->fetchALL(PDO::FETCH_ASSOC); $total_chanson = count($chansons); echo 'les chansons trouvés de l\'artiste ' . $artiste . ' sont: ' . $total_chanson . ''; foreach( $chansons as $chanson) { echo '<br>' . $chanson['titre'] . ''; } } $req->closeCursor(); } else if (isset($_POST['film'])) { $film = $_POST['recherche']; $req = $bdd->query('SELECT titre, realisateur, quantite FROM cd_film WHERE titre = \'' . $film . ' \''); while ($resultat = $req->fetch()) { echo 'le film ' . $film . ' réalisé par ' . $resultat['realisateur'] . ' est: '; if ($resultat['quantite'] > '0') { echo '<br>Diponible<br><a href="acheter.php">Acheter</a>'; } else { echo 'Non disponible'; } } $req->closeCursor(); } } else echo 'aucun résultat ne correspond à votre recherche'; ?> <!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=utf-8" /> <title>Untitled Document</title> </head> <body> </body> </html>
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'es ma femme '' à la ligne 1' in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\mediatheque\recherche_simple.php:19 Stack trace: #0 C:\Program Files (x86)\EasyPHP-5.3.8.0\www\mediatheque\recherche_simple.php(19): PDO->query('SELECT titre, a...') #1 {main} thrown in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\mediatheque\recherche_simple.php on line 19
Partager