Fork me on GitHub




« 1 (2) 3 4 »


Re: Lexikon: Parcourir par lettre
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Suite :

Dans functions.php
Citation :
function lx_alphaArray ()
{
global $xoopsUser, $xoopsDB, $xoopsModule;
$alpha = array();
for ($a = 65; $a < (65+26); $a++ )
{
$letterlinks = array();
$initial = chr($a);
$sql = $xoopsDB -> query ( "SELECT * FROM " . $xoopsDB -> prefix ( "lxentries") . " WHERE init = '$initial' " );
$howmany = $xoopsDB -> getRowsNum( $sql );
$letterlinks['total'] = $howmany;
$letterlinks['id'] = chr($a);
$letterlinks['linktext'] = chr($a);

$alpha['initial'][] = $letterlinks;
}
return $alpha;
}


J'ai remplacé $howmany par une valeur fixe ... toutes les lettres sont devenues des liens. donc c'est le calcul de $howmany qui ne fonctionne pas et renvoie toujours zéro.

Posté le : 26/08/2012 21:40

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Lexikon: Parcourir par lettre
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
on revient a ce que je disais plus haut, si il n'y a pas d'erreur dans les requêtes MySQL du mode debug reste la class ./class/database/mysqldatabase.php il faut vérifier la fonction "getRowsNum" et voir la différence entre les deux versions de Xoops

Posté le : 27/08/2012 00:03
Partager Twitter Partagez cette article sur GG+
Re: Lexikon: Parcourir par lettre
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
Bonjour
pour avoir utilisé Lexicon comme base au module lexique (il y a déjà un bail), je me souviens avoir rencontré ce genre de soucis, mais j'en ai complètement oublié la cause.
Cependant en procédant par étape on devrait trouver une solution.
Voici quelques pistes en vrac:

Dans un premier temps:
Peux vérifier le contenu de la table "lxentries"
La colonne "init"' doit contenir la première lettre de la colonne "term". (Verifie la casse également)

La définition de la colonne dans le fichier "mysql.sql" est:
"`init` varchar(1) NOT NULL default '0',"


Si la colonne contient des '0' c'est que le calcul de l'initiale ne fonctionne pas;
Si elle contient des espace il y a peut être un problème au moment de la validation de la définition ou de sa saisie.

Éventuellement si il y a des incohérences peux donner des exemples.

Dans l'admin de ta base de donnée (j'utilise toujours le module "phpmyadmin" pour plus de facilité) peux tu tester quelques requêtes du genre:
SELECT FROM `prefixe_lxentriesWHERE `init` = 'C'

ne pas oublié de remplacer "prefixe" par celui de ta base.

Utiliser "=" n'est peut être pas non plus la meilleure solution en SQL, il est préférable d'utiliser l'opérateur "LIKE", Il être peut être pertinent de tester en changeant la requête par :
SELECT * FROM `prefixe_lxentries` WHERE `init` LIKE 'C'


dernier point:
c'est dans le fichier "sumbit.php" que l'initiale est calculée, vers les lignes 97 et 98:
$term $myts->htmlspecialchars($_POST['term']);
    
$init substr($term01);

il faudrait peut être afficher ces deux variables pour vérifier leur valeurs.
ou la requête qui se trouve un peux plus bas ligne 118.

Dernier point, est ce que tu as un exemple en ligne du site qui pose problème?

J'oubliais, quelle version de lexicon utilises tu, la dernière que j'ai est la 0.6

JJDai




Posté le : 27/08/2012 11:01

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: Lexikon: Parcourir par lettre
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Merci pour vos réponse, je vais regarder ça de suite !

Posté le : 27/08/2012 11:06

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Lexikon: Parcourir par lettre
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
1ère vérification, la plus facile (que j'aurais dû effectuer dès le départ ...), dans la table lxentries, colonne init, il n'y a QUE des dièses (#) !!!

2ème vérif, j'ai comparé les fichiers submi.php du site qui fonctionne et de l'autre: aucune différence (normal, c'est le même module que je n'ai pas modifié).

Posté le : 27/08/2012 11:09

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Lexikon: Parcourir par lettre
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
en utf-8, il faut plus d'un octet pour désigner une lettre, si tu a un dièse c'est que le format n'est pas bon ou trop long.
Essai de mettre le varchar de lxentries a au moins 3 (si tu utilises que les lettres latines)

Posté le : 27/08/2012 11:14
Partager Twitter Partagez cette article sur GG+
Re: Lexikon: Parcourir par lettre
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
J'utilise la v1.11

Elle fonctionn parfaitement sur un site depuis très longtemps.

Varchar :

J'ai modifié la taille à 3, pas de changement.

Calcul de term et init :

Dans mon submit.php c'est à la ligne 116.
Citation :
//$term = $myts -> htmlSpecialChars( $_POST['term'] );
$term = $myts -> addSlashes( $_POST['term'] );
$init = substr($term, 0, 1);


Tu peux voir que htmlSpecialchars a été mis en commentaire et remplacé par addSlashes

Posté le : 27/08/2012 11:22

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Lexikon: Parcourir par lettre
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
Citation :

Elle fonctionne parfaitement sur un site depuis très longtemps.


Justement, lexikon a été écrit en iso (ou latin1), il y a très longtemps l'UTF-8 n'était pas répandu. Si tu rentre des données UTF-8 dans une table latin1, cela fonctionne sans problème. Sauf quand on limite à 1 octet pour stocker un caractère UTF-8 (qui lui est, codé sur au moins 2)

Posté le : 27/08/2012 11:28
Partager Twitter Partagez cette article sur GG+
Re: Lexikon: Parcourir par lettre
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
J'ai remis le calcul du terme avec htmlspecialchars ... pas de changement. D'ailleurs pour les définitions j'ai laissé addSlashes et ça fonctionne parfaitement.

Posté le : 27/08/2012 11:35

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Lexikon: Parcourir par lettre
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
tu devrais plutôt utiliser utf8_decode pour passer de utf-8 a iso

Posté le : 27/08/2012 11:45
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
« 1 (2) 3 4 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

132 Personne(s) en ligne (113 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 132 | Plus ...