comment récupèrer les valeurs des champs d'une table sql ?

quicherche

Nouveau WRInaute
bonjour,
qui pourrait m'aider à remplir ce script pour la creation d'un flux rss ?
sachant que ma table est nommée : xlagenda et
que je souhaite récupérer les champs suivants : date description contact

cette c'est ok ! mon script se connecte à la base !
Code:
// connexion a la base
@mysql_connect($host,$user,$pwd) or die("Connexion impossible");
@mysql_select_db($base) or die("Echec de selection de la base");
// selection des 5 dernieres news
$res=mysql_query("SELECT * FROM news ORDER BY date DESC LIMIT, 5");

Voila la prtie que j'arrive pas à renseigner...
Code:
// extraction des informations et ajout au contenu
while($tab=mysql_fetch_array($res)){   
$titre=$tab[titre];
$lien=$tab[lien];
$description=$tab[description];
$date=$tab[date];
$date2=date("D, d M Y H:i:s", strtotime($date));
$xml .= '<item>';
$xml .= '<title>'.$titre.'</title>';
$xml .= '<link>'.$lien.'</link>';
$xml .= '<pubDate>'.$date2.' GMT</pubDate>'; 
$xml .= '<description>'.$description.'</description>';
$xml .= '</item>';
}

merci pour votre aide
pascal
 

spidetra

WRInaute passionné
Re: comment récupèrer les valeurs des champs d'une table sq

quicherche a dit:
bonjour,
qui pourrait m'aider à remplir ce script pour la creation d'un flux rss ?
sachant que ma table est nommée : xlagenda et
que je souhaite récupérer les champs suivants : date description contact

cette c'est ok ! mon script se connecte à la base !
Code:
// connexion a la base
@mysql_connect($host,$user,$pwd) or die("Connexion impossible");
@mysql_select_db($base) or die("Echec de selection de la base");
// selection des 5 dernieres news
$res=mysql_query("SELECT * FROM news ORDER BY date DESC LIMIT, 5");
Ta table se nomme : xlagenda
tu veux récupérer les champs : date, inscription et contact.

Essaye déjà de modifier ton SELECT :

Code:
SELECT date, inscription, contact
FROM xlagenda
ORDER BY date desc
LIMIT 0,5
 

quicherche

Nouveau WRInaute
merci

bonjour et merci car c'est deja mieux...
cependant j'ai encore un petit message d'erreur qui empêche le bon fonctionnement du script :

message d'erreur :
Code:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/sites/site180/web/agenda-tahiti-actualite-heiva/maj-rss.php on line 14

et voici la ligne 14 :
Code:
while($tab=mysql_fetch_array($res)){

merci pour ton aide
tahiti
 

quicherche

Nouveau WRInaute
non pas de test ! je suis trop novice pour le faire...
voici un extrait de la table :

Code:
//CREATION DE LA TABLE XLAGENDA
mysql_select_db("$dbdb");
$query="CREATE TABLE $table_agenda (
  id int(11) NOT NULL auto_increment,
  nom text NOT NULL,
  date_debut date NOT NULL default '0000-00-00',
  date_fin date NOT NULL default '0000-00-00',
  description text NOT NULL,
  lieu text NOT NULL,
  categorie int(11) NOT NULL default'0',
  contact text NOT NULL,
  adresse text NOT NULL,
  email text NOT NULL,
  telephone text NOT NULL,
  fax text NOT NULL,
  lien text NOT NULL,
  url text NOT NULL,
  user text NOT NULL,
  actif tinyint(4) NOT NULL default '0',
  KEY id (id)
  )

...desole de ne pas pouvoir te donner plus d'élément ! mais n'hésite pas si tu as besoin d'autres détails.
encore merci
pascal
 

spidetra

WRInaute passionné
Dans mon premier SELECT je me suis planté :
c'est pas inscription mais description
je ne vois pas non plus de champ date, c'est soit date_debut, soit date_fin. Donc ta requête va devenir :
Code:
SELECT date_debut, description, contact
FROM xlagenda
ORDER BY date desc
LIMIT 0,5

ou

Code:
SELECT date_fin, description, contact
FROM xlagenda
ORDER BY date desc
LIMIT 0,5

ou

Code:
SELECT date_debut, date_fin, description, contact
FROM xlagenda
ORDER BY date desc
LIMIT 0,5
 

quicherche

Nouveau WRInaute
le problème reste le meme ! histoire de fou ...
voici le script en entier en espérant que celui ci pourras d'aider :

Code:
<?php
// édition du début du fichier XML
$xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';
$xml .= '<channel>'; 
$xml .= '<title>letitre</title>';
$xml .= '<link>adresse</link>';
$xml .= '<description>description</description>';
// connexion a la base
@mysql_connect('xxxxxxxxx','xxxxxxx','xxxxxxx') or die("Connexion impossible");
@mysql_select_db('xxxxxxx') or die("Echec de selection de la base");
// selection des 5 dernieres news
$res=mysql_query("SELECT date_debut, description, contact FROM xlagenda ORDER BY date DESC LIMIT, 0,5 ");
// extraction des informations et ajout au contenu
while($tab=mysql_fetch_array($res)){   
$titre=$tab[titre];
$lien=$tab[lien];
$description=$tab[description];
$date=$tab[date];
$date2=date("D, d M Y H:i:s", strtotime($date));
$xml .= '<item>';
$xml .= '<title>'.$titre.'</title>';
$xml .= '<link>'.$lien.'</link>';
$xml .= '<pubDate>'.$date2.' GMT</pubDate>'; 
$xml .= '<description>'.$description.'</description>';
$xml .= '</item>';
}
// édition de la fin du fichier XML
$xml .= '</channel>';
$xml .= '</rss>';
// écriture dans le fichier
$fp = fopen("flux.xml", 'w+');
fputs($fp, $xml);
fclose($fp);
@mysql_close();
?>

si j'arrive à faire fonctionner ce script avec ton aide, je pense que celui pourrai intérrésser plus d'un webmaster qui souhaiterai porposer un flux rss...

merci pour le temps que tu prends
tahiti
 

spidetra

WRInaute passionné
la requête est encore fausse :
- il faut pense à remplacer date par date_debut dans le order by
- tu as un , de trop dans la LIMIT :
c'est par : LIMIT, 0, 5 mais LIMIT 0,5


Cette requête devrait marcher un peu mieux :
Code:
$res=mysql_query("SELECT date_debut, description, contact FROM xlagenda ORDER BY date_debut DESC LIMIT 0,5 ");
 

quicherche

Nouveau WRInaute
En effet cela fonctionne !
exelent... cependant avant de faire une synthèse pour celles et ceux que cela intérressent, je souhaite savoir :

- si il est possible de rajouter des champs ?
exemple : nom, categorie
si oui quel est la procedure ?
faut il respecter l'ordre dans la table ?
merci encore
tahiti
 

quicherche

Nouveau WRInaute
oups j'ai été un peu vite...
dur dur pour gerer les dates !
comment faire apparaitre les dates dans l'ordre ?
il s'agit donc d'un agenda et le but et de proposer la liste des évement avenir !

a quel endroit je peux faire apparaitre les bonnes infos par rapport à la date du jour ?
tahiti
 

spidetra

WRInaute passionné
quicherche a dit:
En effet cela fonctionne !
exelent... cependant avant de faire une synthèse pour celles et ceux que cela intérressent, je souhaite savoir :

- si il est possible de rajouter des champs ?
exemple : nom, categorie
si oui quel est la procedure ?
faut il respecter l'ordre dans la table ?
merci encore
tahiti

oui, tu peux rajouter tout les champs que tu veux à conditions qu'ils appartiennent aux tables sur lesquels tu fait le select.
L'ordre n'a aucune importante.

Pour prendre tout les champs :
SELECT * : cette syntaxe est déconseillé, surtout dans ton cas où presque tout les champs sont de type text.

autre syntaxe :

SELECT liste_des_champs_dont tu as besoin

SELECT date_debut, description, etc, etc.........

Il faudrait que tu trouve un tutoriel ou un ouvrage SQL pour les débutants. Sinon, là tu vas vraiment galérer.
 

quicherche

Nouveau WRInaute
quicherche a dit:
a quel endroit je peux faire apparaitre les bonnes infos par rapport à la date du jour ?
tahiti

est ce dans la ligne :
Code:
$res=mysql_query("SELECT date_debut, description, contact FROM xlagenda ORDER BY date_debut DESC LIMIT 0,5 ");
 

spidetra

WRInaute passionné
Que désires-tu faire exactement ?
Effectivement c'est dans ton SELECT que tu vas filtrer tes résultats dans une clause WHERE.

Code:
SELECT liste_des_champs_qui_vont_bien 
FROM xlagenda
WHERE now() BETWEEN date_debut AND date_fin
....

ou

Code:
SELECT liste_des_champs_qui_vont_bien 
FROM xlagenda
WHERE date_debut < now()
....

ou des milliers d'autre possibilités en fct° de ce que tu veux faire.
Il te faut une formation de base en SQL. Je ne connais pas de bons tutos pour débutant, il va falloir que tu en trouves un.
 

Discussions similaires

Haut