Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

Vous n'êtes pas identifié(e).

#1 07/02/2012 03:35:35

bpat85
Membre
Inscription : 18/01/2010
Messages : 77

Php/sql

Bonjour,
J'utilise Zite+ pour qques sites (des associations) ... je le redis, un très bon outil, merci JPG ... mais là je suis confronté à un pb.
Je sais bien qu'ici les concepteurs, contributeurs, utilisateurs recherchent l'outil passe-partout (pas de base de données afin de pouvoir être hébergé n'importe où) mais pour faire cela il faut des pros, aussi je m'adresse à vous pour un pb PHP/SQL.
Pour l'un des ces sites associatifs (des bénévoles ...), j'ai besoin de gérer un calendrier d'évènements et d'y associer des galeries de photos.
Il faut que cela soit le plus facile à maitriser par un "novice" : un formulaire à remplir avec les infos sur l'évènement, la galerie photo + un multi-upload pour les photos et toutes les infos se retrouvent sur le site (juste à créer les pages pour les galeries photos et y mettre un include).
Ne trouvant rien qui me plaise à intégrer dans les scripts "prêts à l'emploi" (ou trop gros ou trop simple), j'ai sorti mon Notepad et activé mes neurones.
N'étant pas un pro des "langages" du Web, j'ai choisi la solution php et sql (je suis certain qu'il doit être possible de gérer ça sans base de données mais les fopen et autres fonctions sur les fichiers textes sont encore assez obscures pour moi wink ). J'ai récupéré à droite et à gauche des bouts de code que j'arrive à modifier et à assembler pour en faire ce que je souhaite.
Mon souci :
Dans la base j'ai des lignes que je ne peux lire que si la donnée inscrite dans le champ recherché (WHERE) est un nombre.

CREATE TABLE IF NOT EXISTS `bdlo_evenement` (
  `ID_evenement` smallint(11) unsigned NOT NULL auto_increment,
  `nom_evenement` varchar(50) NOT NULL,
  `logo_evenement` varchar(30) NOT NULL,
  `comm_evenement` text NOT NULL,
  `datedeb_evenement` date NOT NULL,
  `datefin_evenement` date NOT NULL,
  `datereg_evenement` varchar(15) NOT NULL,
  `aff_evenement` smallint(6) NOT NULL,
  `dossier_galerie` varchar(50) NOT NULL,
  `page_galerie` varchar(25) NOT NULL,
  `texte_galerie` text NOT NULL,
  `date_galerie` date NOT NULL,
  `annee` varchar(6) NOT NULL,
  PRIMARY KEY  (`ID_evenement`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=58 ;

Le champ qui me pose problème est `dossier_galerie` ...
Lors de l'insertion ou d'un update,

mysql_query("INSERT INTO bdlo_evenement VALUES ('','$nom_evenement','$logo_evenement','$comm_evenement','$datedeb_evenement','$datefin_evenement','$datereg_evenement','$aff_evenement','$dossier_galerie','$page_galerie','$texte_galerie','$date_galerie','$annee')") or die("Erreur ajout evenement 1");

il accepte aussi bien les données chiffrées (2011, 2012 pour un classement par année) que les données texte (divers, autres pour un classement hors évènement programmé).

Lors de la lecture

$req = mysql_query("SELECT * FROM bdlo_evenement WHERE dossier_galerie=$dossier_galerie") or die('Erreur requete evenement');

je récupère très bien pour les exploiter les données qui sont issues du `dossier_galerie` quand celui-ci à une valeur numérique mais j'ai droit à une erreur de requête si la donnée de `dossier_galerie` est du texte.

D'où ma question si quelqu'un peut venir à mon secours : Pourquoi cette erreur si la valeur entrée dans ce champ est du texte ?

Merci à ceux qui voudront bien se pencher sur mon cas.

Dernière modification par bpat85 (07/02/2012 03:38:18)

Hors ligne

#2 07/02/2012 12:51:39

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Php/sql

Tout simplement parce que dans le cas ou $dossier_galerie contient une chaine de caractère, ta requête est incorrecte wink

En clair, si $dossier_galerie contient la chaine "abc"

la requete que tu obtiens est

SELECT * FROM bdlo_evenement WHERE dossier_galerie=abc

alors que tu veux surement faire

SELECT * FROM bdlo_evenement WHERE dossier_galerie="abc"

a+
Jean-Paul

Hors ligne

#3 07/02/2012 15:05:59

bpat85
Membre
Inscription : 18/01/2010
Messages : 77

Re : Php/sql

Je le savais bien qu'il n'y avait que des pros sur ce forum.
Je me doutais bien que la réponse risquait d'être toute bête ... j'ai mis ma variable recherchée entre '' et ça fonctionne.
Le pire c'est que dans toutes les autres requête faites j'ai utilisé les '' et que celle-ci était la seule sans les ''.

Un grand merci ... et je retourne plancher sur l'écriture du PHP : on va reprendre les bases, l'écriture des variables wink

@++ Patrick

Hors ligne

Pied de page des forums