bonjour,
j'ai une requête qui fonctionnait mais j'ai téléchargé Easyphp Devserver 17 avec PHP 5.6.30 et ma requête ne fonctionne plus !!
Il s'agit d'afficher des membres dans un tableau en sélectionnant un type d'affichage. Soit on affiche tous les membres quelque soit leur nationalité soit on affiche que les Français ou que les allemands.
Si je clique sur tous les membres je n'ai pas de problème, le tableau s'affiche correctement mais si je choisis Français OU Allemands le tableau s'affiche mais j'ai un message d'erreur.
Je ne comprends pas pourquoi ce message puisque l'affichage se fait.
le message d'erreur :
la sélection pour l'affichage:Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 'Allemande'' at line 1
Code php : 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 require_once "connect.php"; $sessionChoix = !empty($_SESSION['choix']) ? $_SESSION['choix'] : NULL; //prendre la valeur de session si remplie $choix = !empty($_POST['choix']) ? $_POST['choix'] : $sessionChoix; // prendra la valeur de post si elle est remplie, sinon celle de session $_SESSION['choix'] = $choix; $lapage = !empty($_GET['lapage']) ? $_GET['lapage'] : 1; // prend la valeur de la page $_SESSION['lapage'] = $lapage; $TotalMembres = ''; $membresParPage = 15; $pageActuelle = 1; $nombreDePages = ''; $premiereEntree = 0; $message = ''; $nationalite = ''; $strWhere = ''; // choix de l'affichage switch($choix){ //teste quel choix est sélectionné case "A": $strWhere = "WHERE nationalite = 'Allemande'"; $nationalite = "'Allemande'"; break; case "F": $strWhere = "WHERE nationalite = 'Française'"; $nationalite = "'Française'"; break; case "T": $nationalite = "'Allemande' OR nationalite = 'Française'"; break; } //comptage des membres et des pages selon le choix effectué $sql = "SELECT COUNT(*) AS nb FROM membres" . $strWhere; //compte le nombre de personnes en fonction du choix effectué try { $req = $cnx->query($sql); $data = $req->fetch(); $TotalMembres = $data['nb']; // récupère le nombre d'enregistrements $nombreDePages = ceil($TotalMembres/$membresParPage); // compte le nombre de pages } catch(Exception $e) { echo "Mon Erreur : " . $e->getMessage(); } //--------------------------- //calcul du nombre de pages et définition de la page actuelle if (isset($_POST['envoyer']) && $choix){ //teste si le bouton envoyer et le choix de la nationalité sont cliqués if (isset($_GET['lapage'])) { // teste si le numéro de la page est cliqué $pageActuelle = intval($_GET['lapage']); // affecte le numéro de la page à la page actuelle if ($pageActuelle > $nombreDePages) { // teste si la page actuelle est supérieure aux nombre de pages $pageActuelle = $nombreDePages; // si oui la page actuelle est égale aux nombre de pages } } else { $pageActuelle = 1; // si le numéro de page n'est pas sélectionné,la page actuelle est la n°1 } $premiereEntree = ($pageActuelle - 1) * $membresParPage; // on calcule la première entrée à lire } else if (isset($_GET['lapage'])) { // teste si la un numéro de page est sélectionné $pageActuelle = intval($_GET['lapage']); if ($pageActuelle > $nombreDePages) { $pageActuelle = $nombreDePages; } $premiereEntree = ($pageActuelle - 1) * $membresParPage; // on calcule la première entrée à lire } //affichage du nombre de page et de la page en cours if (!empty($message)){ echo $message; echo '<br />'; } if (empty($message)){ if (!empty($choix)){ for ($i = 1; $i <= $nombreDePages; $i++) { if ($i == $pageActuelle) { echo ' [ '.$i.' ] '; } else { echo '<a href= "index.php?page=comodmember&lapage='.$i.'" style="text-decoration:none">'.' '.$i.'</a>'; } } } }
Tout ça marchait avec une version php inférieure !!
Je pense que le problème vient de "Switch" mais je ne vois pas quoi faire
Partager