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

PHP & Base de données Discussion :

Variable pas prise en compte dans la requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Points : 51
    Points
    51
    Par défaut Variable pas prise en compte dans la requête
    Bonjour,

    je voudrai faire une requete avec LIMIT mais cela ne fonctionne pas.
    Je vous laisse regarder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    		$nombre=3;
    		if(!isset($limite)){
    			$limite=0;
    		}		
    		$limit="$limite,$nombre";
    		echo'<p>'.$limit.'</p>';
    		$req1="select pseudo from membre limit '".$limit."'";
    J'ai dejà utilisé des variables dans des requête mais celle la ne veut passer.
    Est ce une erreur de syntaxe?

  2. #2
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Tu dois t'assurer de deux choses tout d'abord.
    - tu utilise bien une version de mysql qui autorise l'instruction limit;
    - tu dois pluôt écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = 'select pseudo from membre limit '.$limit;
    La clause LIMIT peut être utilisée pour limiter le nombre d'enregistrements retournés par la commande SELECT. LIMIT accepte un ou deux arguments numériques. Ces arguments doivent être des entiers constants.
    Avec un argument, la valeur spécifie le nombre de lignes à retourner depuis le début du jeu de résultat. Si deux arguments sont donnés, le premier indique le décalage du premier enregistrement à retourner, le second donne le nombre maximum d'enregistrement à retourner. Le décalage du premier enregistrement est 0 (pas 1) :
    Pour être compatible avec PostgreSQL, MySQL supporte aussi la syntaxe : LIMIT row_count OFFSET offset.
    mysql> SELECT * FROM table LIMIT 5,10; # Retourne les enregistrements 6 à 15
    Pour obtenir tous les enregistrement d'un certain décalage jusqu'à la fin du résultat, vous pouvez utiliser de grands entier en tant que second paramètre :
    mysql> SELECT * FROM table LIMIT 95,18446744073709551615; # Retourne les enregistrements de 96 jusqu'au dernier.
    Si un seul argument est donné, il indique le nombre maximum d'enregistrements à retourner :
    mysql> SELECT * FROM table LIMIT 5; # Retourne les 5 premiers enregistrements
    Autrement dit, LIMIT n est équivalent à LIMIT 0,n.
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Points : 51
    Points
    51
    Par défaut
    Je te remercie.
    C'est étrangs qu'il faille une syntaxe spéciale pour utiliser LIMIT. J'aurai pu chercher un moment devant mon ordi^^

  4. #4
    Membre habitué Avatar de Azazel.fr
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 170
    Points : 196
    Points
    196
    Par défaut
    Citation Envoyé par Zenerox
    Je te remercie.
    C'est étrangs qu'il faille une syntaxe spéciale pour utiliser LIMIT. J'aurai pu chercher un moment devant mon ordi^^
    ???
    ce n'est pas une synthaxe spéciale ; c'est la bonne.
    pour reprendre ton code, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req1="select pseudo from membre limit ".$limit;
    ainsi ton résultat sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select pseudo from membre limit 0,3
    sinon il aurait été :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select pseudo from membre limit '0,3'
    le probleme, c'était tes cotes...
    l'utilisation des cotes est importante quand tu compares un champ de ta base de type varchar par exemple avec une variable qui est un string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select pseudo from membre where nom = '".$nom."'
    là, les cotes prennent toute leur importance !
    mais pas quand une variable est un "bout de requete" !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Points : 51
    Points
    51
    Par défaut
    Voici mon code à présent :

    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
     
    <?php
    	function affiche_membre(){
     
    		$req="select pseudo from membre";
    		$result=mysql_query($req) or die ("erreur dans la requête");
    		$row=mysql_num_rows($result);
    		$total=$row;
     
    		$nombre=2;
    		$limite=$_GET['limite'];
    		if(!isset($limite)){
    			$limite=0;
    		}
     
    		$limitesuivante = $limite + $nombre;
    		$limiteprecedente = $limite - $nombre;
     
    		$limit="$limite,$nombre";
    		$req1='select pseudo from membre limit '.$limit;
    		$result1=mysql_query($req1) or die ("erreur dans la requete1");
    		while($data=mysql_fetch_array($result1)){
    			echo'<p align="center"><a href="affiche_infos.php?pseudo='.$data['pseudo'].'">'.$data['pseudo'].'<p>';
    		}
     
    		if($limite=0){
    			if($limitesuivante<$total){
    				echo'<p><a href="affiche_membre.php?limite='.$limitesuivante.'">Suivante</a></p>';
    			}
    		}
     
    		if($limite!=0){
    			if($limitesuivante<$total){
    				echo'<p><a href="affiche_membre.php?limite='.$limiteprecedente.'">Precedent</a><a href="affiche_membre.php?limite='.$limitesuivante.'">Suivante</a></p>';
    			}
    			else{
    				echo'<p><a href="affiche_membre.php?limite='.$limiteprecedente.'">Precedent</a>';
    			}
    		}
    	}
    ?>
    Je vais peut être passer pour un ignorant ni précédent ni suivant ne s'affiche. J'ai 7 pseudo dans ma bdd donc suivant devrait s'afficher.
    Quel est le problème?

  6. #6
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    Ta première condition vaudra toujours false, affectation involontaire je pense

    Tu as mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($limite=0){
    	if($limitesuivante<$total){
    		echo'<p><a href="affiche_membre.php?limite='.limitesuivante.'">Suivante</a></p>';
    	}
    }
    Essayes plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($limite==0){
    	if($limitesuivante<$total){
    		echo'<p><a href="affiche_membre.php?limite='.limitesuivante.'">Suivante</a></p>';
    	}
    }

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Points : 51
    Points
    51
    Par défaut
    lool en effet je te remercie j'ai vérifié tout sauf ça

  8. #8
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Problème résolu? Merci de cliquer sur 'Résolu'.

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

Discussions similaires

  1. Variable pas prise en compte
    Par Vanito dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/05/2013, 21h52
  2. Variable non prise en compte dans l'url
    Par duffman39 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 20/10/2011, 16h33
  3. Variable non prise en compte dans un formulaire
    Par stomerfull dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2008, 14h36
  4. [Upload] Variable dans le chemin pas prise en compte
    Par bermanarber dans le forum Langage
    Réponses: 19
    Dernier message: 12/12/2007, 23h28
  5. [POO] Variable pas prise en compte
    Par cyrill.gremaud dans le forum Langage
    Réponses: 21
    Dernier message: 18/08/2006, 20h10

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