Sammuel

  • Nombre de sujets
    26
  • Nombre de messages
    114
  • Nombre de commentaires
    1
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers sujets sur les forums

Sammuel
le 10/03/2008 à 01:31
Probleme de jointure innoDB
Salut,

Désolé de vous déranger avec mes problèmes de requêtes, mais je n'arrive pas à en faire fonctionner une qui peut paraître toute simple ! Et j'aurais besoin de votre aide pour comprendre pourquoi cela ne veut pas fonctionner !

Ma BDD test se trouve ici :
http://www.lephpfacile.com/wall/wall-1520.php
... avec quelques enregistrements.

Quelques précisions :
La table categorie 3 liste toutes les sous catégories de la catégorie 2.
La table categorie 2 liste toutes les sous catégories de la catégorie 1.
La table categorie 1 liste toutes les catégories générales.

Chaque enregistrement de la categorie 2 appartient obligatoirement à une (et une seule) categorie 1.
Chaque enregistrement de la categorie 3 appartient obligatoirement à une (et une seule) categorie 2. Mais un enregistrement de la categorie_2 n'a pas forcément de lien avec la categorie_3 ! Donc un enregistrement de la categorie_2 peut ne pas avoir de sous catégorie (categorie_3).

Un article appartient obligatoirement à une categorie 2 et peut appartenir à une categorie 3.

Un article ayant un status égal à 0 signifie qu'il est activé. Si il est égal à 1, c'est qu'il est désactivé et qu'il ne sera pas pris en compte, afficher sur le net.

Ma requête actuelle... qui ne fonctionne pas :
SELECT categorie_1.nom AS categorie_1_nom,categorie_2.nom AS categorie_2_nom,COUNT(article.id) AS total
FROM article
LEFT JOIN categorie_3 ON article.categorie_3_id
LEFT JOIN categorie_2 ON article.categorie_2_id
LEFT JOIN categorie_1 ON categorie_2.categorie_1_id
WHERE article.status = '0'
GROUP BY categorie_1,categorie_2,categorie_3
ORDER BY categorie_1,categorie_2,categorie_3 ASC


J'ai essayé de m'inspirer de la requete de LupusMic qu'il m'a proposé dans mon précédent post, mais cela ne veut pas fonctionner.

J'ai l'impression que MYSQL n'arrive pas à faire le lien entre les tables !

Merci pour votre aide smiley
Sammuel
le 05/03/2008 à 16:43
Requete ok sous PHP4, et ne fonctionne plus sous PHP5
Salut ! C'est encore moi smiley

J'ai une requête qui ne veux plus fonctionner sous PHP5 ! Sous PHP4, elle fonctionnait très bien ! meme si je me demandais comment MYSQL pouvait s'y retrouver avec ^^

La requête est la suivante :
SELECT marque.idmarque,marque.marque,modele.idmodele,modele.modele,COUNT(voiture.idvoiture) AS total
FROM marque,modele
LEFT JOIN voiture ON voiture.idmarque = marque.idmarque
WHERE marque.idmarque = modele.idmarque
GROUP BY marque.marque,modele.modele
ORDER BY marque.marque,modele.modele ASC


Les tables :
Marque (idmarque / marque)
1 Renault
2 Citroen
3 Peugeot
...

Modele (idmodele / idmarque / modele)
1 1 Clio
2 1 Scenic
3 2 Xsara
4 2 Saxo
5 3 306
...

Voiture (idvoiture / idmarque / idmodele / serie)
1 1 1 Clio 1
2 1 1 Clio 2
3 3 5 306 phase 1
4 3 5 306 phase 2
...

PS : J'ai inclus l'idmarque dans la table voiture pour éviter de faire trop de jointures entre les tables, car il y aura beaucoup d'enregistrements dans cette table... + d'1 million


Voyez vous un problème dans la requête ? car MYSQL me retourne cette erreur :
#1054 - Unknown column 'marque.idmarque' in 'on clause'


Apparemment, MYSQL n'arrive pas à faire de lien entre la table 'marque' et 'voiture' dans le LEFT JOIN. Pourtant sous PHP4, ca fonctionné ^^

Peut être que je dois activer quelque chose dans le php.ini pour que ça fonctionne ? smiley
Sammuel
le 05/03/2008 à 15:22
PHP5 + <?=$variable?> ne fonctionne plus ?
Salut !

Je viens d'installer php5 en local (via le logiciel Wamp) car je croyais qu'il allait m'aider à simplifier mon code PHP... mais en fin de compte non :p Mais je crois, que je vais le garder... il faut bien faire quelques mises à jour de temps en temps ^^

Sous PHP4, j'avais l'habitude d'utiliser :
<?=$variable?>

...dans mon code html pour aller plus vite... plutot que d'écrire :
<? echo $variable; ?>

Apparemment, sous PHP5, <?=$variable?> ne fonctionne plus !

Avez vous déjà remarqué cette petite différence ? ou peut etre que je n'ai pas encore bien configuré le logiciel (WAMP)... mais j'en doute.
Sammuel
le 28/09/2007 à 13:15
Eviter le double post sur le forum
Salut,

Tout à l'heure, mon message a été posté 2 fois de suite alors que je n'ai appuyé qu'une fois sur le bouton envoyer !

Est ce qu'il y a une sécurité pour éviter le double post sur le forum ??

Sinon, ce que je propose, c'est de créer une SESSION['dernier_post'] avec le timestamp au moment du postage, et le formulaire (au moment du postage) vérifie s'il existe une SESSION['dernier_post'] et si le timestamp actuel est supérieur de X secondes par rapport au timestamp enregistré dans SESSION['dernier_post'].

Si vous avez une meilleur façon pour éviter le double postage, je suis tout ouie :p

++
Sammuel
le 28/09/2007 à 13:03
Class PHP Messagerie + pagination
Salut !

Cela fait quelques années que je m'interesse au PHP et j'aimerais avancer d'un cran :p

Je viens de lire les cours sur 'La programmation objet' de LA GLOBULE et n'ayant jamais codé en class (juste en fonction...), j'aimerais beaucoup m'y mettre.

Aussi, j'aimerais bien voir comment fonctionnent ces classes quand il faut gérer la pagination des résultats retournés pour une messagerie par exemple.

Auriez vous des liens à m'indiquer pour ce genre de code ? J'aimerais bien en avoir un exemple pour avoir une idée globale du fonctionnement entre le script de pagination et le script de la messagerie.

Merci :D
Sammuel
le 25/09/2007 à 16:23
LIMIT sql dans un while() possible ?
Salut,

Je vous pose cette question pour les scripts de pagination entre autre...

On doit faire deux requetes pour ce genre de script (une qui compte le nombre d'enregistrements total, et une autre qui les affiche).

Aussi, pour n'en faire qu'une, y a t'il moyen d'insérer la limite SQL (LIMIT 0,50 par exemple) directement dans le while ?

while($row = mysql_fetch_assoc($req) && LIMIT 0,50){
}


J'ai du voir ce genre de code quelque part... mais je ne sais pas ou ^^

Le code que j'ai indiqué plus ne fonctionne pas... Pour que ca fonctionne, je pourrais faire :

while($row = mysql_fetch_assoc($req) && $i> 0 && $i <50){
}


Mais je crois me souvenir avoir vu LIMIT dans while() smiley
Sammuel
le 10/09/2007 à 16:48
Selection de champs d'une meme table avec 2 conditions
Salut,

Je rencontre un probleme avec une requete :'(. La solution doit etre toute bete, mais je ne sais pas comment procéder !

J'ai une table 'Amis' :
CREATE TABLE `amis` (
`id` int(10) NOT NULL auto_increment,
`iduser` int(6) default NULL,
`amis` int(6) default NULL,
PRIMARY KEY (`id`)
)


IDUSER => corresponds à l'id de la personne qui est identifiée sur le site
AMIS => c'est l'id de la personne que l'IDUSER a ajouté dans sa liste d'amis.

Si l'user 1 ajoute l'user 2 dans sa liste d'amis, ca donnera :
INSERT INTO `amis` VALUES (1, 1, 2);


Quand l'user 1 va afficher sa liste d'amis, cela affichera :
user 2

Et quand l'user 2 va afficher sa liste d'amis, cela affichera :
user 1

En ajoutant une seule ligne dans la BDD, j'aimerais que le script qui affiche la liste de ses amis soit capable de voir que l'user 1 et 2 sont amis et que donc, il faudra afficher user 1 (si l'user 2 est identifié) et user 2 (si l'user 1 est identifié).

Pour le moment, j'en suis là :
SELECT user.iduser,user.username FROM user,amis WHERE (amis.iduser = '".$_SESSION['iduser']."' AND amis.iduser = user.iduser) AND (amis.amis = '".$_SESSION['iduser']."' AND amis.amis = user.iduser)


J'ai également essayé :
SELECT user.iduser,user.username FROM user,amis,amis AS amis2 WHERE (amis.iduser = '".$_SESSION['iduser']."' AND amis.iduser = user.iduser) AND (amis2.amis = '".$_SESSION['iduser']."' AND amis2.amis = user.iduser)


** J'ai fais une jointure vers la table user pour récupérer le pseudo... enfin essayer de le récupérer ^^ **

Selon vous, qu'est ce qui ne va pas dans ma requete ?? Je ne pense pas que ce soit impossible a faire... tout du moins que ma méthode ne soit pas bonne ?!

Merci pour votre aide smiley
Sammuel
le 10/09/2007 à 12:46
Retour à la ligne + PHP
Salut,

Une question que je me pose depuis toujours ^^ au sujet des retours à la ligne dans du code PHP.

Exemple, j'aimerais que la page générée en PHP affiche un code source propre avec du texte bien présenté avec un retour a ligne :

Salut
(retour a la ligne)

En PHP, cela donnerait :

echo 'Salut
';


Plutôt que d'utiliser <br /> après 'Salut', je préfère faire un retour forcé (SHIFT+ENTREE). Cela évite d'avoir plusieurs <br /> d'afficher sur ma page ^^

Auriez vous une solution pour éviter ce retour forcé ? J'ai vu que l'on pouvait utiliser \n (dans un textarea ou email envoyé) mais ca ne fonctionne pas dans une page HTML :(

Merci !
Sammuel
le 01/05/2007 à 00:55
$_SESSION + mysql_real_escape_string() dans une requete... utile ou pas ?
Bonjour,

Une question que je me pose depuis un moment et dont j'aimerais bien avoir votre avis !

Dans une simple requete SQL, est ce utile d'englober une variable de session du genre $_SESSION['idmembre'] par un mysql_real_escape_string() ?

Exemple :
$sql = "SELECT pseudo FROM membre WHERE idmembre = '".mysql_real_escape_string($_SESSION['idmembre'])."'"


Merci !

++
Sammuel
le 27/04/2007 à 18:33
Récupérer les valeurs explode() à partir de 1 ?
Salut,

J'aurais besoin de votre pour changer l'indice premier retourner par un explode. Je m'explique :

$define = 'tarte,couscous,baba';
$cuisine = explode(',',$define);

et en faisant un print_r($cuisine), cela affiche :

Array
(
[0] => test1
[1] => test2
[2] => test3
)


et j'aimerais que cela retourne :
Array
(
[b][1] => test1[/b] => en commancant par un 1 ! et pas 0
[2] => test2
[3] => test3
)


Auriez vous une solution pour que le premier indice retourner par explode soit 0 et pas 1 ?

Je vous en pose de ces questions smiley

Merci à celui qui pourra me donner une solution !
LoadingChargement en cours