begin process at 2012 02 12 04:32:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Menu news


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Menu news

mardi 15 juillet 2008 à 06:12:11 | Menu news

skit

Bonsoir à tous.


<?
$news=mysql_query("
        (SELECT Timestamp, Titre, Text FROM ".$extensionSQL."article)
        UNION
        (SELECT Timestamp, Titre, Text FROM ".$extensionSQL."communiques)
        UNION
        (SELECT Timestamp, Titre, Text FROM ".$extensionSQL."actions)
        UNION
        (SELECT Timestamp, Titre, Text FROM ".$extensionSQL."agenda)
        UNION
        (SELECT Timestamp, Titre, Text FROM ".$extensionSQL."passages)
        UNION
        (SELECT Timestamp, Titre, Text FROM ".$extensionSQL."tracts)
        ORDER BY Timestamp LIMIT 5
    ");
while($news2=mysql_fetch_array($news))
{
    echo substr(stripslashes($news2['Text']),0,30)."<br />";
}


?>


Voici un module de mon site qui me pose problème.
Je vous explique brièvemet; j'ai diverses sections (agenda, articles,...) et je fais un menu à gauche qui reprend tous les évènements postés dans ces sections et les classe par ordre décroissant de Timestamp (date à laquelle l'évènement est créé).
J'ai donc unifié toutes ces tables par ordre de Timestamp et j'affiche les titres et les textes des 5 premiers (d'où la limite).
Pour les textes, je souhaite afficher juste les 30 premiers caractères; j'ai donc utilisé un substr mais voila le premier problème qui se pose; mes codes sont coupés. Quand j'ai un <a href=""> et qu'il est coupé alors je me retrouve avec un bête <a h ou encore dans certains cas je me retrouve avec un &eacu ce qui est plutôt ridicule et je ne sais pas comment éviter ça.
C'est mon premier problème, apparemment substr n'est pas la fonction la plus appropriée pour ça.
Ensuite j'aimerai ne sélectionner que le texte car je me vois mal afficher une image ou une vidéo dans cette petite barre mais je ne connais pas de fonction php et je n'en trouve pas qui ne permet que de sélectionner le texte.

Merci de bien vouloir m'aider  ;)
mardi 15 juillet 2008 à 11:42:54 | Re : Menu news

Evangun

Salut,

tu cherches peut-être strip_tags( )

http://fr3.php.net/strip-tags

à+
mardi 15 juillet 2008 à 14:04:35 | Re : Menu news

skit


Merci beaucoup. Seuls hic; ça ne m'aide pas pour mes caractères spéciaux. (et puis ça affichera les URLs, parfois incomplètes, des images et vidéos)

mardi 15 juillet 2008 à 14:14:46 | Re : Menu news

Evangun

Réponse acceptée !
Tu fais strip_tags( ), puis html_entity_decode( ), puis substr( ), puis encore  html_entities( ) si tu le souhaites.
à+
mardi 15 juillet 2008 à 14:54:59 | Re : Menu news

skit



J'ai du mal à comprendre ton raisonnement.

Bon je prends par exemple:
<a href="test.php">salut</a> <br />Bonjour &eacute;coutez tous!

Je fais un strip tags()
salut Bonjour &eacute;coutez tous!
Je fais un html_entity_decode()
salut Bonjour &eacute;coutez tous!
Je fais un substr()
salut Bonjour &eacu
Je fais un html_entities()
salut Bonjour &eacu


mardi 15 juillet 2008 à 15:11:12 | Re : Menu news

Evangun

Normalement :

$string =  html_entity_decode('salut Bonjour &eacute;coutez tous!');

et là on a $string == 'salut Bonjour écoutez tous!'

et du coup le substr peut marcher.

Et c'est htlmentities( ), j'ai mis un "_" en trop
mardi 15 juillet 2008 à 16:06:49 | Re : Menu news

skit



Il ne reconnait pas la fonction htmlentities() (bizarre)
Mais malgré tout le résultat est exactement ce que j'attendais; merci beaucoup pour cette réponse claire et rapide
mardi 15 juillet 2008 à 16:41:59 | Re : Menu news

skit

Bon j'ai un autre petit problème auquel je n'avais pas pensé.

Chaque évènement a un ID généré dans sa table et chaque table correspond à une page (par exemple: la table Site_agenda reprend les évènements de la page agenda.php où je peux isoler l'évènement par agenda.php?article=ID)
J'avais fait des UNION sur mes tables pour pouvoir avoir un classement par timestamp de toutes les nouveautés (ainsi j'obtiens les 5 dernières nouveautés parmis toutes les tables du site).
Petit problème; je souhaite placer un lien qui redirige vers l'article mais je dois pour ça pouvoir récupérer ensuite la table d'où provient l'article après l'UNION.
Je n'ai trouvé aucune fonction php pour ça, quelqu'un a une idée?
Merci
mardi 15 juillet 2008 à 16:55:04 | Re : Menu news

Evangun

Si tes événements sont si similaires, ils devraient tous être dans la même table, avec un champs supplémentaire pour dire s'ils sont relatifs à l'agenda.

Si tu veux garder ta structure, en faisant 5 requêtes c'est facile de différencier les tables d'origine, mais effectivement avec 1 seule requête ce n'est pas possible, à moins de rajouter une colonne dans chaque table qui contiendra le nom de la table, mais c'est complètement idiot.

à+
mardi 15 juillet 2008 à 16:59:38 | Re : Menu news

skit



Ils ne sont pas similaires; ils ont chacun un titre, un id, un timestamp, un text et un user (le créateur de l'évènement). Tous les autres champs varient et c'est pour ça que je n'ai pas créé une table générale.
Sinon j'aurai eu une table avec 40 champs dont la plupart sont rarement remplis et le temps de traitement de ma table aurait été horriblement long pour le serveur.
Si je fais 5 requêtes, je ne peux pas les classer par ordre de Timestamp les-unes par rapport aux autres.

1 2

Cette discussion est classée dans : text, timestamp, select, titre, from


Répondre à ce message

Sujets en rapport avec ce message

pb sur mysql avec requete select * from TABLE IN (select ...) [ par malibu23 ] Salut j ai un pb sur mysql lorsque je fais un requetedu type select CHAMP from TABLE where CHAMP IN ( select CHAMP from TABLE where CHAMP = VARIABLE); Pb avec une requête SQL [ par Zato ] J'écris ça (dans MySQL):SELECT Prenom FROM individu where NOT DateDECES ='0000-00-00' or NOT LieuDECES =' ' in (SELECT DateDECES,LieuDECES FROM indivi SQL : comment marche le IN [ par Vinceoli ] Dans une clause WHERE d'un SELECT comment marche le INSELECT * FROM Table1 WHERE Id IN ................Est ce qu'on peut mettre un autre SELECT a la p requete mysql -> "in" [ par djCourtin ] zaloutig un pb de merde avec mysqlje fais la requete suivante en gros:select .... from .... where .... in (select .... from ...)apparemment on peut pa pbl avec select max(champs) from table [ par nicofree ] salut à tous, bon je repose ma question ici, car quand je met pblm d'incrementation,ca fait fuir tout le mondebon wala cette requette me retourne 9 al Erreur [ par Zebra1928 ] hi all;Mon script et le suivant:switch(moncas){case'c1' : $query = "select * from table1 where nom='$N' " ;break;case'c2' : $qu Problème d'affichage de news. Aidez moi SVP. [ par WaNoU ThE EpSyLoN ] Bon alors à celui qui comprend mon problème je dis chapeau !J'explique. Je cherche à faire un gestionnaire de news pour cela il y a une page de saisie Requete SQL multiple ? J'y connais rien, a l'aide ! [ par tynmar ] Bonjour programmeurs programmeuses, Je souhaite faire une requete multiple à partir de plusieurs tables sql, et je sais pas si c'est possible. C'es un prob de requete [ par ombrey20 ] j'ai un petit prob qui peut m'aider!!!!! est ce que c'est possible,si jamais on click sur un lien il execute une requete sachant que que cette requett Récupérer la valeur d'un select [ par jnbrunet ] Salut,J'ai fais un petit forum avec plusieurs sujets...pour récupéré la valeur du text nommé titre, je fais $_POST['titre']Voici mon problème:Je veut


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,810 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales