Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 12/01/2007, 11h48   #1
Nouveau Membre du Club
 
Inscription : juillet 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 130
Points : 27
Points : 27
Par défaut [Conception] Concaténation dans une requête

Bonjour tout le monde,

j'ai un petit problème au niveau d'une requete... je veux concatener un champ avec des "%" au debut et a la fin...

comme ceci:

Code :
1
2
3
4
5
 
SELECT * 
FROM venue_list_active v, cities c, active_headliners a, list_active l, categories cat
WHERE c.id=$city AND v.city=c.city AND l.VenueID=v.VenueID AND l.Date = '".$date."'  AND a.HeadlinerID=$HeadlinerID
AND cat.CategoryID=a.CategoryID AND l.Event LIKE "%".Headliner."%"
merci d'avance pour votre aide
toddy_101 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 11h53   #2
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Euh... Ta requête est exécutée dans du code php. Donc elle est ecapsulé dans des "" ou dans des ''.

Quand tu concatenes une requete, c'est comme n'importe quel bout de texte, a savoir .
Exemple d'écriture :
Code :
1
2
3
$concatenation = 'partie1 ' . $variable . ' partie2'; // bien
$concatenation2 = "partie1 " . $variable . " partie2"; // Presque aussi bien (a un pouillème de centième de seconde près)
$concatenation3 = "partie1 $variable $partie2"; // pas bien (trois fois plus lent que les solutions d'au dessus si mes souvenirs sont exacts
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 13h03   #3
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605
Citation:
Envoyé par Rakken
Quand tu concatenes une requete, c'est comme n'importe quel bout de texte, a savoir .
Exemple d'écriture :
Code :
1
2
$concatenation = 'partie1 ' . $variable . ' partie2'; // bien
$concatenation2 = "partie1 " . $variable . " partie2"; // moins bien
Pourquoi ? le temps d'éxecution est pour ainsi dire le même dans les 2 cas (perso j'utilise comme toi apparemment les simples côtes par souci de lisibilité )

Pour ton problème toddy_101, essaie ceci :
Code :
1
2
3
4
5
6
7
8
9
"SELECT * 
FROM venue_list_active v, cities c, active_headliners a, list_active l, categories cat
WHERE c.id=".$city." 
   AND v.city=c.city 
   AND l.VenueID=v.VenueID 
   AND l.Date = '".$date."'
   AND a.HeadlinerID=".$HeadlinerID".
   AND cat.CategoryID=a.CategoryID 
   AND l.Event LIKE '%Headliner%'"
Si c.id et a.HeadlinerID ne sont pas des nombres, il faut que tu les encadres de simples côtes.

PS : les jointures se font par le biais de la clause JOIN dans le FROM et non dans le WHERE

PS 2 : évite * si tu peux nommer les champs.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 14h33   #4
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Code :
1
2
$concatenation = 'partie1 ' . $variable . ' partie2'; // bien 
$concatenation2 = "partie1 " . $variable . " partie2"; // moins bien
C'est vrai, c'est du chipotage, j'avoue. La difference est franchement minime, la solution a éviter vraiment étant clairement la troisième.
J'vais éditer mes commentaires.
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken 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 01h04.


 
 
 
 
Partenaires

Hébergement Web