IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Requête qui ne fonctionne plus avec php 5.6.30


Sujet :

Langage SQL

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Requête qui ne fonctionne plus avec php 5.6.30
    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 :
    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
    la sélection pour l'affichage:
    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&amp;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

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il nous faudrait le texte de la requête "complétée" (et virer * dans le select...).
    Sans ça impossible de répondre ici.

    Si c'est un problème de PHP, il faut pauser la question dans la section PHP.

    Tatayo.

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    J'ai repris le post car ce qui ne marche pas c'est le comptage des membres

    La requête
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //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();
     }

    Si le choix est de tout afficher ça marche mais si je sélectionne Allemands ou Français le comptage ne se fait pas

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    "Ça ne marche pas" n'est pas une description d'erreur...
    La requête s'exécute mais ne retourne aucune ligne ou déclenche-t-elle une erreur ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    j'avais donné l'erreur affichée :

    
    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
    // 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;
    }
    //la requête
    $sql = "SELECT COUNT(*) AS nb FROM membres" . $strWhere; //compte le nombre de personnes en fonction du choix effectué
    La requête marche avec T puisque je n'ai pas la clause Where !!
    Merci

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    bonjour,

    Ce n'est plus le même script que celui posté initialement, ou vous utilisiez la variable $nationalite

    La vous utilisez la variable $strWhere

    Dans cette version, il n'y a pas d'espace entre le nom de la table et le WHERE, ce qui explique l'erreur

  7. #7
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    merci pour la réponse

    le code modifié
    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
    // choix de l'affichage
    switch($choix){ //teste quel choix est sélectionné
      case "A":
    	$nationalite = "'Allemande'";
      	break;
      case "F":
    	$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 WHERE nationalite = $nationalite";//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();
     }

    j'ai bien le comptage des personnes et le nombre de pages !!
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête qui ne fonctionne pas avec LIMIT ?
    Par jfab66 dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/03/2017, 10h04
  2. Compteur PHP qui ne fonctionne plus (version PHP !)
    Par Droïde Système7 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 19
    Dernier message: 14/09/2014, 20h53
  3. Qu'est qui ne va plus avec PHP ?
    Par Idelways dans le forum Langage
    Réponses: 209
    Dernier message: 21/07/2011, 07h37
  4. Qu'est qui ne va plus avec PHP ?
    Par Idelways dans le forum Actualités
    Réponses: 200
    Dernier message: 03/12/2010, 16h36
  5. (UNION) Requete qui ne fonctionne plus avec mysql4
    Par kreatik dans le forum Requêtes
    Réponses: 0
    Dernier message: 13/11/2007, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo