Probleme php

Résolu
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -  
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

tout d'abord voici mon script :


$db=mysql_connect("localhost", "ADMIN", "admin");
mysql_select_db("flux_rss",$db);

$recherche=$_POST["recherche"];
$rubrique=$_POST["rubrique"];
$sql = "SELECT dateArticle, titreArticle FROM infosexpert WHERE rubrique= '$rubrique' AND texteParagraphe LIKE '%$recherche%' ORDER BY dateArticle DESC ";
//$req = mysql_query($sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

if ($_POST["rubrique"] == 'toutes')
{
$sql= "SELECT texteParagraphe, dateArticle, titreArticle FROM infosexpert WHERE texteParagraphe LIKE '%$recherche%' ORDER BY dateArticle DESC ";
}

$result1=mysql_query($sql);
while ($row=mysql_fetch_object($result1))
{

list($year, $month, $day) = explode("-", $row->dateArticle);
$months = array("janvier", "février", "mars", "avril", "mai", "juin",
"juillet", "août", "septembre", "octobre", "novembre", "décembre");

echo "<a href='resultat.php?titreArticle=".$row->titreArticle."'>".$row->titreArticle."</a> - (".$day." ".$months[$month-1]." ".$year.")<br>";
}
?>
<?php
while($row=mysql_fetch_array($result1))
{

?>
<center><ul>
<li><a href="resultat.php?titreArticle=<?php echo $row["titreArticle"];?>"></li><?php echo $row["titreArticle"];?></a> <?php echo $row["dateArticle"];?>
</ul></center>
<?php
}
mysql_close();

le probléme que je rencontre et un problème avec les apostrophe dans mes lien a ce nivo la :

echo "<a href='resultat.php?titreArticle=".$row->titreArticle."'>".$row->titreArticle."</a> - (".$day." ".$months[$month-1]." ".$year.")<br>";

les lien s'affiche parfaitement mais des qu'il y a un apostrophe l'url ce coupe.
exemple :

"vole ou perte d'une carte de paiement" le lien qui et relier a cette phrase est : vole ou perte d

rien de plus, quelqu'un pourrai til maider svp ?
merci
A voir également:

11 réponses

Taxiarque Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   10
 
coucou Adrix08,

Il faut que tu utilises le \ pour les apostrophes, ça permet de dire a php que le caractère que suit est à ignoré.
Par exemple : $mot = "bonjour, comment t\'appelles-tu"
sinon il prend en compte le ' et ça fausse ton script qui se termine prématurément.

Bon courage
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1
 
merci de ta reponse Tarxiarque ms le souci c que je ne peut pas faire sa car les titre que je veux afficher vienne directement de la base de données, et je ne peut pas changer sa
0
macgawel Messages postés 664 Date d'inscription   Statut Membre Dernière intervention   89
 
Bonjour.

C'est logique : Tu obtiens
echo "<a href='resultat.php?titreArticle="."vole ou perte d'une carte de paiement"."'>"
Ce qui est interprété comme <a href='resultat.php?titreArticle=vole ou perte d'une carte de paiement>

Les apostrophes (comme les accents ou les espaces) ne sont pas top, dans un lien...
La solution la plus élégante serait donc, en amont, de modifier la forme de tes liens (remplacer les caractères indésirables par des équivalents). Ce qui te donnerait, dans ton cas :
<a href='resultat.php?titreArticle=vol_ou_perte_d_une_carte_de_paiement'>
Mais ça risque de te demander pas mal de boulot (entre autres, dans ta base rajouter un champ URL).

Autre solution : utilise la fonction htmlEntities.
"<a href='resultat.php?titreArticle=".htmlEntitiess($row->titreArticle, ENT_QUOTES)."'>"...
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1
 
merci macgawel je vais essayer sa et je te redis quoi dans quelque minute
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1
 
Fatal error: Call to undefined function: htmlentitiess() in c:\program files\easyphp1-7\www\affichage\formulaire.php on line 29


voila ce que sa m'affiche apres avoir utiliser mis

echo "<a href='resultat.php?titreArticle='resultat.php?titreArticle=".htmlEntitiess($row->titreArticle,ENT_QUOTES)."'>".$row->titreArticle."</a>
0
macgawel Messages postés 664 Date d'inscription   Statut Membre Dernière intervention   89 > Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
Forcément, j'écris une c**rie et tu la reprends tel que !

Il fallait lire htmlentities, et pas htmlentitiess...
0
Taxiarque Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   10
 
Je crois que tu as une fonction php qui remédie à cela :
addslashes ()
Elle rajoute des anti-slashes après les apostrophes.
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1
 
addslahes() j'ai vu sa sur le net ui mais je ne sais pas comment la mettre je ne les jamais utilisé
0
Taxiarque Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   10
 
En reprenant l'exemple de la variable $mot que j'ai utilisé ci-dessus, tu procèdes de cette façon :
$mot = addslashes($mot);

J'espère que ça répondra à ta question ^_^
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1
 
la fonction htmlentities marche pas elle menleve carement les lien qui ont des apostrophe et addslashes ne fonctionnne pas non plus avec sa :s
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
macgawel Messages postés 664 Date d'inscription   Statut Membre Dernière intervention   89
 
Si htmlentities ne fonctionne pas, tu peux essayer htmlspecialchars (je n'ai jamais su la différence entre les deux :-o ).
N'oublie pas de bien passer ENT_QUOTES en deuxième paramètre...
0
Taxiarque Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   10
 
La différence entre les deux c'est que htmlspecialchars() remplace que les caractères tel que & " > < et ' alors que htmlentities() remplace tous les caractères qui ont des équivalents html.
Il est conseillé en général d'utiliser htmlentities() car il est plus complet ^^
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1
 
htmlentities fonctionne le lien et bien fait, par contre des caractere speciaux son aparu apres ce qui fait que mes lien qui ont des accents ou autre ne fonctionne pas :s
0
Taxiarque Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   10
 
Coucou,

Essayes de recomposer la chaine quand elle arrive sur ta page avec : html_entity_decode()
ça t'enlèvera les caractères spéciaux. (c'est l'opération inverse)
mais bon je ne sais pas si ça résoudra ton soucis.
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1
 
donc en gro tu ve que au lieu que je mete htmlentities il faudrai que je mete html_entity_decode ??
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1 > Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
Taxiarque je te remercie vraiment, tu a resolu mon probleme, merci beaucoup de ton aide
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1 > Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
arf maintenant le probleme des apostrophe et revenu aussi ra la poisse !!
0
Taxiarque Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   10
 
Hihi, de rien ^_^

Bon courage
0
Taxiarque Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   10
 
raa mince,

essayes alors urlencode () à la place de html_entities()
peut être que ça devrait marcher, enfin je l'espère.
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1
 
Franchement jte remerci beaucoup ta solution marche impecable ! merci vraiment pour ton aide !
0
Taxiarque Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   10
 
Hihi, génial alors :-D
0
Adrix08 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   1
 
=) c mon patron ki va etre content =)
0