Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2011, 14h56   #1
Invité de passage
 
Inscription : juillet 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 19
Points : 3
Points : 3
Par défaut Requête sur plage de varchar

Bonjour,

Je n'arrive pas à mettre en place ma requête permettant d'afficher les enregistrements contenus entre 2 valeurs de varchar.

Je m'explique :

Mon catalogue contient des références définies en varchar(15)

Je souhaiterai réussir à afficher toutes les références contenues entre ma référence min et ma référence max.

La requête actuelle marche à condition que la référence ne contienne que des valeurs numériques. dès qu'on a une caractère alphabétique ou un autre signe (comme le "/" par exemple) la requête ne fonctionne plus.

Voici ma requête actuelle :

Citation:
SELECT DISTINCT reference, designation, marque, type, conditionnement, prix
FROM catalogue
WHERE reference BETWEEN $Refmoins AND $Refplus
ORDER BY reference
Quelqu'un aurait-il une solution ne demandant aucune modification sur le contenu de la table?
Taelis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 15h01   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
quelle est la logique de l’incrémentation ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 15h02   #3
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Si ce sont des chaines, il faut des guillemets.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 15h09   #4
Invité de passage
 
Inscription : juillet 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 19
Points : 3
Points : 3
Citation:
quelle est la logique de l’incrémentation ?
Incrémentation ?

Euh... je suis pas sûr de te suivre...

Citation:
Si ce sont des chaines, il faut des guillemets.
Je dois être un peu rouillé... comment je rajoute les guillemets dans ma requête?

$refmoins et $refplus sont des variables fixées grâce à des input text plus haut dans le code...

[EDIT]

J'ai finalement opté pour rajouter les " avant et après mes variables en les concaténant dans le code php.

J'ai donc utilisé pour déclarer mes variables :

Code :
1
2
3
4
5
6
7
8
9
10
11
if (isset($_POST['Refmoins']) && isset($_POST['Refplus']))
{
$Refmoins = $_POST['Refmoins'];
$Refplus = $_POST['Refplus'];
$RefmoinsGuillemets = '"'.$_POST['Refmoins'].'"';
$RefplusGuillemets = '"'.$_POST['Refplus'].'"';
}
else{
$Refmoins =1;
$Refplus =1;
}
Taelis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 15h34   #5
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il est plus simple de faire

Code :
$sql = "..... WHERE reference BETWEEN '" . $Refmoins . "' AND '" . $Refplus . '";
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 16h27   #6
Invité de passage
 
Inscription : juillet 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 19
Points : 3
Points : 3
Par défaut Ne fonctionne pas

Ceci ne fonctionne pas...

Code :
WHERE reference BETWEEN '" . $Refmoins . "' AND '" . $Refplus . '";

Je pense qu'il doit s'agir d'un problème de syntaxe pour ajouter les "...

Je continue à chercher...

C'est vrai que la solution serait mieux que d'utiliser des variables intermédiares

[EDIT]

Code :
1
2
3
4
$query="
SELECT DISTINCT reference, designation, marque, type, conditionnement, prix 
FROM catalogue
WHERE reference BETWEEN '".$Refmoins."' AND '".$Refplus."'";
Taelis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 16h31   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Code :
WHERE reference BETWEEN '" . $Refmoins . "' AND '" . $Refplus . "'";
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 16h38   #8
Invité de passage
 
Inscription : juillet 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 19
Points : 3
Points : 3
Merci pour le coups de main

Parfois, on a une solution simple sous le nez et on cherche compliqué ^___^
Taelis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h54.


 
 
 
 
Partenaires

Hébergement Web