Page 1 sur 1

Les améliorations pour Categorizator par Mafieuso

Posté : mercredi, 14 mars 2007, 14:19
par Keroin
Un topic pour regrouper les petits bouts de script pour améliorer le script Categorizator (Yourphpmyannuaire et RevolutionYourAnnuaire) :nux:

Allonger la durée de session admin de Categorizator

Posté : mercredi, 14 mars 2007, 14:21
par Keroin
Le tutoriel par Mafieuso pour augmenter le temps de session du script d'annuaire Categorizator est disponible sur le topic suivant :
=> ftopic188-allonger_temps_de_la_session_ ... uaire.html

Afficher les 5 derniers inscrits dans la même catégorie

Posté : mercredi, 14 mars 2007, 14:24
par Keroin
Un petit script pour afficher les 5 derniers sites inscrits dans la même catégorie lors de la consultation de la fiche personnelle d'un site par Mafieuso.

Code : Tout sélectionner

<?php
$cat_du_site = $res_infos['id_cat']; // id de la cat du site

// Requete pour chercher les 5 derniers sites inscrits dans la même catégorie que celui de la fiche.
$sql_site = "SELECT *,TO_DAYS(CURRENT_DATE) - TO_DAYS(date_validation) AS dif_days FROM $T_sites WHERE id_cat = '$cat_du_site' AND activation = 1 ORDER BY niveau ASC,id DESC LIMIT 0,5";
// on envoie la requete 
$res_site = send_sql($sql_site,"trouver les 5 sites à afficher");

//on affiche les sites	
if (mysql_num_rows ($res_site))
{
	while ($resultat = mysql_fetch_array($res_site,MYSQL_ASSOC))
		affiche_site($resultat,'index');
}
?>
(à mettre dans le fichier page_site.php evidemment !)
=> Le topic originel est sur cette page.

Personnaliser le Backlink selon la catégorie du site

Posté : mercredi, 14 mars 2007, 14:28
par Keroin
Par Mafieuso :
Voila ce que je vous propose comme bout de code, celui-ci affiche, après l'inscription du site, le lien en fonction de la catégorie (et oui je l'ai ajouté sur mon annuaire, je me suis dit que c'était pas bête finalement !) :

Code : Tout sélectionner

	<p style="text-align:center;">
		Vous pouvez soutenir notre site en installant un lien sur le votre, pour cela utilisez le lien ci-dessous (lien textuel) : <br />
		<?php
		if(!empty($id_cat))
		{
			$lk = connection_BD();
			$search_name_cat = "SELECT cat_name FROM $T_categories WHERE id='$id_cat'";
			$res_search_name_cat = send_sql($search_name_cat, 'Recherche le nom de la catégorie selectionnée');
			$result_name_cat = mysql_fetch_array($res_search_name_cat);
			$url_de_backlink = 'http://www.Tonannu.com/' . id_to_url($id_cat,$result_name_cat['cat_name'],'1');
			$fin_lien = ' : ' .$result_name_cat['cat_name'];
			mysql_close($lk);
		}
		else
		{
			$url_de_backlink = 'http://www.Tonannu.com';
			$fin_lien = '';
		}
		
		?>
		<input name="textfield" type="text" value='<a href="<?php echo $url_de_backlink; ?>" alt="TonAnnu" title="TonAnnu">TonAnnu<?php echo $fin_lien; ?></a>' size="50" />
		<br />
		Ce qui donne :
		<br />
		<a href="<?php echo $url_de_backlink; ?>" alt="TonAnnu" title="TonAnnu">TonAnnu<?php echo $fin_lien; ?></a>
	</p>


PS : Le code est à placer dans submit_site.php avant :

Code : Tout sélectionner

	<p style="text-align:center;"><a href="index.php">Retour à l'annuaire</a></p>
	<?php
}
else //on ne doit pas soumettre de formulaire mais bien l'afficher
=> topic originel

Posté : vendredi, 16 mars 2007, 19:18
par Keroin
J'ai un petit souci avec le script d'affichage des 5 sites dans une même catégorie (2 post plus haut), le message d'erreur est :
Parse error: parse error, unexpected T_VARIABLE in /homepages/.../sitesmemecategrorie.php on line 7
Cette ligne 7 correspond à cette fonction
$sql_site = "SELECT *,TO_DAYS(CURRENT_DATE) - TO_DAYS(date_validation) AS dif_days FROM $T_sites WHERE id_cat = '$cat_du_site' AND activation = 1 ORDER BY niveau ASC,id DESC LIMIT 0,5";
Une idée ???

Posté : vendredi, 16 mars 2007, 20:24
par Mafieuso
Oups, j'ai oublié le point virgule ; après le variable $res_infos['id_cat'] quelques lignes plus haut ^^

N'oublies pas de corriger aussi sur le post plus haut ;)

Posté : vendredi, 16 mars 2007, 21:15
par Keroin
J'ai corrigé le post plus haut et le topic originel (vérifie quand même au cas où ) ;-)
Merci d'avoir corrigé, je vais retester ça tout à l'heure...

Posté : samedi, 17 mars 2007, 00:36
par Keroin
Bon bah toujours un petit bug car je n'ai aucun affichage :siffle:

Posté : samedi, 17 mars 2007, 00:51
par Mafieuso
Essaye d'enlever la condition (if...{ ... } ) pour voir.

Posté : samedi, 17 mars 2007, 01:05
par Keroin
Non toujours pas, pour infos, celui que tu avais fait pour afficher les 3 derniers sites inscrit et 3 sites aléatoires fonctionne bien (celui là).
=> je l'affiche par un include sans problème mais celui là ne veut rien savoir ???

Posté : samedi, 17 mars 2007, 14:24
par Mafieuso
Essaye ceci alors :

Code : Tout sélectionner

<?php

$cat_du_site = $res_infos['id_cat']; // id de la cat du site 

// Requete pour chercher les 5 derniers sites inscrits dans la même catégorie que celui de la fiche. 
$sql_site = "SELECT * FROM $T_sites WHERE id_cat='$cat_du_site' ORDER BY date_validation DESC LIMIT 0,5"; 
// on envoie la requete 
$res_site = send_sql($sql_site,"trouver les 5 sites à afficher"); 

//on affiche les sites    
while($result = mysql_fetch_array($res_site)) 
{ 
   $titre = $result['titre']; 
   $description = $result['description']; 
   $url = $result['url']; 
   // etc.
} 
?> 

Posté : samedi, 17 mars 2007, 14:40
par Keroin
Non toujours pas ???
Le message d'erreur est
Impossible d'effectuer la requête pour trouver les 5 sites à afficher

Voici le message d'erreur renvoyé par la base de données :
2002 : Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Posté : dimanche, 18 mars 2007, 01:58
par Mafieuso
Euh, la connexion a la bdd est bien active ? (il y a pas de mysql_close() avant ?)

Posté : dimanche, 18 mars 2007, 02:07
par Keroin
Mafieuso a écrit :Euh, la connexion a la bdd est bien active ? (il y a pas de mysql_close() avant ?)
Non j'ai bien remis la cloture de connexion à la base en fin de document donc ça ne vient pas de là.
Quand j'ajoute

Code : Tout sélectionner

$lk = connection_BD();
au début du script je n'ai plus ce message d'erreur mais rien ne s'affiche comme si le script ne parvenait pas à déterminer la catégorie.
J'ai un peu bidouillé le code et tenté plusieurs modifs mais rien n'y fait.

Apparemment, on dirait que cette fonction

Code : Tout sélectionner

$cat_du_site = $res_infos['id_cat']; // id de la cat du site

// Requete pour chercher les 5 derniers sites inscrits dans la même catégorie que celui de la fiche.
$sql_site = "SELECT * FROM $T_sites WHERE id_cat='$cat_du_site' ORDER BY date_validation DESC LIMIT 0,5"
ne parvient pas à être interprétée :saipas:

Posté : dimanche, 18 mars 2007, 12:51
par Mafieuso
C'est normal que rien ne s'affiche si tu ne rajoutes pas de echo.

Pour ma part ce code marche :

Code : Tout sélectionner

<?php 

$lk = connection_BD();

$cat_du_site = $res_infos['id_cat']; // id de la cat du site 

// Requete pour chercher les 5 derniers sites inscrits dans la même catégorie que celui de la fiche. 
$sql_site = "SELECT * FROM $T_sites WHERE id_cat='$cat_du_site' ORDER BY date_validation DESC LIMIT 0,5"; 
// on envoie la requete 
$res_site = send_sql($sql_site,"trouver les 5 sites à afficher"); 

//on affiche les sites    
while($result = mysql_fetch_array($res_site)) 
{ 
   $titre = $result['titre']; 
   $description = $result['description']; 
   $url = $result['url']; 
   // etc. 
   echo $titre. '<br />';
} 
?> 

Posté : dimanche, 18 mars 2007, 14:00
par Keroin
non, j'avais bien mis un echo pour l'affichage.
Il doit y avoir un conflit avec un ou plusieurs autres éléments de ma page :saipas: .
Mais je pense que je ne suis pas loin là et que je vais trouver à force de tâtonner, merci de ton aide :good:

Posté : lundi, 19 mars 2007, 15:38
par Keroin
Bon bah décidément je m'en sort pas avec ce satané script :frown:

Pour l'affichage des sites aléatoires j'utilise ce bout de script

Code : Tout sélectionner

<?php
$lk = connection_BD(); // Connection

// Recherche de 4 sites aléatoire
$sql2 = "SELECT id, titre, description, url FROM $T_sites ORDER BY RAND() LIMIT 4";
//envoie de la requete
$ale = send_sql($sql2,"trouver 4 sites aléatoirement");

//fin de la connexion
mysql_close($lk);




?>
<h2><b>Voir également (sélection aléatoire)</b></h2><br>
<?
// Les 4 sites aléatoires
while($result = mysql_fetch_array($ale))
{
   $idsite_ale = $result['id'];
   $titre_ale = $result['titre'];
   $description_ale = $result['description'];
   $url_ale = $result['url'];
   echo '<a href="site-' .$idsite_ale. '.html"><img src="http://www.thumbzor.com/tel.php?url=' .$url_ale. '&remplace=http://www.annuaire.keroinsite.com/img/image_sites.gif" style="border:none;padding:2px;border: #ff0084 1px dashed" width="100" height="75" border="0" title="'.$titre_ale.' : '.$description_ale.'" alt="'.$titre.'"></a>  ';
}


?>
ça marche sans problème mais je ne parviens à obtenir aucun affichage quand j'utilise celui pour les sites de la même catégorie ???

J'ai même tenté de jumeler les deux scripts mais toujours pas d'affichage pour les sites de la même catégorie alors que l'affichage des sites aléatoires fonctionne toujours sans soucis :saipas:
Pour le jumelage je place bien sûr les requêtes sql entre $lk = connection_BD(); et mysql_close($lk); et les commandes d'affichages sont regroupées en fin de script...

Posté : lundi, 19 mars 2007, 19:17
par Mafieuso
Tu as essayer le code que j'ai donné à la fin de la page précédente ?

Car je ne vois pas d'erreur apparente...

Posté : lundi, 19 mars 2007, 19:27
par Keroin
Mafieuso a écrit :Tu as essayer le code que j'ai donné à la fin de la page précédente ?

Car je ne vois pas d'erreur apparente...
Oui je l'ai testé aussi et je ne comprends pas non plus d'où pourrait venir le problème :saipas:

Posté : lundi, 19 mars 2007, 19:28
par Mafieuso
Affiche tous le code de la page ici je pourrai peut-être t'aider...

Posté : lundi, 19 mars 2007, 19:34
par Keroin
Oh bah ne t'embête pas avec ça, à force je finirais bien par trouver ce qui gène le script dans mon code.
Merci quand même :good:

Posté : vendredi, 13 avril 2007, 00:01
par tryan
Salut

Je suis tombé par hazard sur ce tuto :siffle: :

Code : Tout sélectionner

<?php 

$lk = connection_BD(); 

$cat_du_site = $res_infos['id_cat']; // id de la cat du site 

// Requete pour chercher les 5 derniers sites inscrits dans la même catégorie que celui de la fiche. 
$sql_site = "SELECT * FROM $T_sites WHERE id_cat='$cat_du_site' ORDER BY date_validation DESC LIMIT 0,5"; 
// on envoie la requete 
$res_site = send_sql($sql_site,"trouver les 5 sites à afficher"); 

//on affiche les sites    
while($result = mysql_fetch_array($res_site)) 
{ 
   $titre = $result['titre']; 
   $description = $result['description']; 
   $url = $result['url']; 
   // etc. 

   echo "<a title=\"$titre\" href=\"$url\">$titre</a><br />" ;


} 
?> 
Ce code affiche donc 5 url de sites de la meme catégorie . Quelle procédure suivre pour que sa pointe plutot vers 5 fiches de sites de la meme catégorie ?
Merci

Posté : vendredi, 13 avril 2007, 02:02
par Keroin
Si tu utilise comme règle d'url rewriting pour les pages/fiches de site

Code : Tout sélectionner

RewriteRule ^site-(.*).html$ /infos.php?id=$1 [L]
En remplaçant la ligne echo par

Code : Tout sélectionner

echo "<a href=\"site-$idsite.html\">$titre</a></br>";

Il faut aussi ajouter la ligne

Code : Tout sélectionner

$idsite = $result['id'];
juste avant

Code : Tout sélectionner

$titre = $result['titre'];

Posté : vendredi, 13 avril 2007, 09:23
par tryan
Bonjour
Merci pour cette réponse keroin, cependant je suis une "b*rne" sur les règles de rewriting.
Voici mon .htaccess :

Code : Tout sélectionner

RewriteEngine on

RewriteBase /
RewriteRule -p([0-9]*)-([0-9]+)\.html$  index.php?cat_id=$2&page=$1 [L]

RewriteRule -k[0-9]*-([0-9]+)\.html$	search.php?action=seek&mots=id$1&nb_results2show=20&booleen=AND [L]

RewriteRule ^sitemap\.xml$		allcategs.php?sitemap [L]

RewriteRule -c([0-9]*)-(.+)\.html$  submit_site.php?id_cat=$1&action=$2 [L]

RewriteRule -s([0-9]*)\.html$  page_site.php?site_id=$1 [L]
Le code tel que tu l'as écrit me renvoit des url du genre monsite.com/site-36.html au lieu de monsite.com/jesuis-mauvais-2-s36.html

J'ai beau essayer dans tout les sens avec mon petit niveau mais rien à faire..quand on connait pas ...on connait pas ! :sm1:
Merci de ton aide

Posté : vendredi, 13 avril 2007, 19:55
par tryan
Re :-D
Je fais un petit edit .. non pas que je sois impatient d'avoir une réponse mais sait tout comme. :boulet:

Posté : vendredi, 13 avril 2007, 21:49
par Keroin
En fait j'ai également essayé il y a quelques temps d'intégrer la catégorie et le nom du site dans l'url mais je n'y suis pas parvenu non plus :saipas:

Comme mon référencement est plutôt correct avec le mode de rewriting actuel j'ai fini par laisser tomber ...
Peut être que Mafieuso qui traine souvent par là aura une petite idée :siffle:

Posté : vendredi, 13 avril 2007, 22:21
par tryan
oki :cry: snifffff . Merci quand meme keroin . Esperons que Mafieuso passe dans le coin ;-) .
merci

Posté : dimanche, 03 février 2008, 02:22
par La Gerance
hello ;)

Je tombe pour la seconde fois sur ce forum ou je retrouve mafieuso et je me décide à m'inscrire ;) (d'ailleurs ca pas été simple, le captcha avec les questions sur les photos est pas tres clair ;))

J'utilise categorizator depuis quelques années et j'en ai fait plusieurs versions maison

vous avez peut etre réglé tous vos soucis depuis (le topic est ancien) mais sait on jamais si je peux etre utile ;)

je viens de lire quelques topics de cette section, le probleme c'est que vous n'utilisez pas forcément les memes versions (vu qu'on a tous nos fichiers remaniés à notre sauce perso) et donc quand quelqu'un proposeun addon, il faut le mettre à sa sauce aussi

par exemple je peux répondre aux questions de ce topic :

c'est normal que l'addon proposé par mafieuso ne marche pas pour toi Keroin, en fait tu as vu juste, il y a bien un conflit, une seule modif et ca marchera :

dans infos.php ou page_site.php bref ton fichier de fiche de site :

dans la ligne :

Code : Tout sélectionner

$sql_site = "SELECT * FROM $T_sites WHERE id_cat='$cat_du_site' ORDER BY date_validation DESC LIMIT 0,5"; 
remplace $cat_du_site par $idcats

et voila ca fonctionne ;)

tout simplement car la variable était préalablement définie

pour ce qui est de la réécriture d'url des fiches (pour intégrer le nom du site dans l'url :

dans le htaccess :

Code : Tout sélectionner

RewriteRule (.*)-(.*).html$ /infos.php?id=$2 [L]
et dans fonctions.php :

Code : Tout sélectionner

$titre2 = mrpropre ($resultat['titre']);
echo "<a href=\"http://www.site.com/$titre2-$resultat[id].html\" class=\"titre_site_annuaire\">" .$resultat['titre']. " </a>"; 

Ensuite tout simplement rajouter la fonction mrpropre :lol: dans functions.php ou vous voulez :

Code : Tout sélectionner

function mrpropre($chaine){
$tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ()[]~$%*@ç;:^¨€{}|+";
$replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn---------------E---";
$mrpropre =(strtr($chaine,$tofind,$replac));
$mrpropre = strtolower($mrpropre);
$mrpropre = ereg_replace("<u>","", $mrpropre);
$mrpropre = ereg_replace("<em>","", $mrpropre);
$mrpropre = ereg_replace("<b>","", $mrpropre);
$mrpropre = ereg_replace("</u>","", $mrpropre);
$mrpropre = ereg_replace("</em>","", $mrpropre);
$mrpropre = ereg_replace("</b>","", $mrpropre);
$mrpropre = ereg_replace(" - ","-", $mrpropre);
$mrpropre = ereg_replace(" ","-", $mrpropre);
$mrpropre = ereg_replace("l'","", $mrpropre);
$mrpropre = ereg_replace("l’","", $mrpropre);
$mrpropre = ereg_replace("m'","", $mrpropre);
$mrpropre = ereg_replace("m’","", $mrpropre);
$mrpropre = ereg_replace("d'","", $mrpropre);
$mrpropre = ereg_replace("d’","", $mrpropre);
$mrpropre = ereg_replace(",","", $mrpropre);
$mrpropre = ereg_replace("!","", $mrpropre);
$mrpropre = ereg_replace("'","", $mrpropre);
return $mrpropre;
}

Voila les urls sont plus jolies et plus optimisées pour le référencement

A +

Charlie

Posté : dimanche, 03 février 2008, 02:34
par Keroin
Excellent et bienvenue :sm6:

C'est vrai que j'ai trouvé il y a un moment mais que j'ai complètement oublié de poster la réponse :frown:

Pour Mafieuso bah c'est vrai que ça fait un long moment que je ne l'ai plus croisé nul part sur le web et même ses sites de l'époque ne répondent plus aussi je ne sais pas trop ce qu'il fait en ce moment :saipas:

ps : :welcome: ;-)