Fonction substr()

Résolu
promouv Messages postés 14 Date d'inscription samedi 2 août 2003 Statut Membre Dernière intervention 14 septembre 2009 - 19 sept. 2008 à 14:56
promouv Messages postés 14 Date d'inscription samedi 2 août 2003 Statut Membre Dernière intervention 14 septembre 2009 - 19 sept. 2008 à 16:33
bonjour,

voila ça fait quelques heures que je me prend la tête sur mon code je m'explique, le code ci dessous me permet d'avoir dans ma page d'accueil 2 lignes de 3 membres avec leur photos et en dessous pseudo et age.

jusque là pas de problème...

mais si un utilisateur a un pseudo trop long (au dessus de 12 caractères) alors là ma mise en page par en "live" donc je voudrais ajouter la fonction substr() au pseudo ($test et $test2 dans mon code)  j'ai essayer plein de chose mais voila je crois que je dois faire des erreur de syntaxe qui m'amène vers vous pour avoir un petit coup de pouce.

si quelqu'un se sent d'humeur voila le code de base sans la fonction substr()

<?php
        if ($g['options']['main_users'] == "Y" and $html->blockexists("users"))
        {
            $i = 0;
            DB::query("
                SELECT u.user_id, u.name, u.orientation, u.gender, u.type, (YEAR('" . date('Y-m-d H:i:s') . "')-YEAR(birth)) - (RIGHT('" . date('Y-m-d H:i:s') . "',5)<RIGHT(birth,5)) AS age
                FROM user AS u
                WHERE u.is_photo='Y' AND u.hide_time=0 AND u.type='gold'
                ORDER BY u.user_id DESC
                LIMIT 0, 6
            ");
            while ($row = DB::fetch_row())
            {
                $i++;
                if ($i == 4) $html->parse("newline", false);
                else $html->setblockvar("newline", "");
                //if ($row['type'] == "gold");
                if (!isset($row['photo_id'])) $row['photo_id'] = DB::result("SELECT photo_id FROM photo WHERE user_id=" . $row['user_id'] . " " . $g['sql']['photo_vis'] . "  LIMIT 1", 0, 2);
                if ($row['photo_id'] != "" and file_exists($g['path']['dir_files'] . "photo/" . $row['user_id'] . "_" . $row['photo_id'] . "_s.jpg")) $row['photo'] = "photo/" . $row['user_id'] . "_" . $row['photo_id'] . "_" . $g['options']['main_users_photo_size'] . ".jpg";
                else $row['photo'] = "nophoto_" . $row['gender'] . "_" . $g['options']['main_users_photo_size'] . ".jpg";

                foreach ($row as $k => $v) $html->setvar($k, $v);
               
                //
               
                $test=("user");
                $test2=("user2");
               
                if ($i < 4)
                {
                    $html->parse("$test", true);
                }
                else
                {
                    $html->parse("$test2", true);
                }
            }
           
            $html->parse("users", true);
        }

?>

merci a la communauté .

Florian

5 réponses

cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 16:20
Ou peut etre mettre :

SUBSTRING(u.name,1,12) AS name

à essayer ...
3
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 15:04
voila la fonction substr qui va te retourner les 12 premiers caractères de $test :

$test12 = substr(
$test
, 0, 12)
;

Voila j'espère que ça te suffit sinon j'ai pas tout compris ce que tu souhaites ...
0
promouv Messages postés 14 Date d'inscription samedi 2 août 2003 Statut Membre Dernière intervention 14 septembre 2009
19 sept. 2008 à 16:04
question bette mais ça serait plus simple pour moi car en fais je me suis un peut empatouiller les pinceaux il faut oublier les variable $test

je medemande si ce n'est pas possible d'integrer le substr() dans :

<?php
            DB::query("
                SELECT u.user_id, u.name,
u.orientation, u.gender, u.type, (YEAR('" . date('Y-m-d H:i:s') .
"')-YEAR(birth)) - (RIGHT('" . date('Y-m-d H:i:s') .
"',5)<RIGHT(birth,5)) AS age
                FROM user AS u
                WHERE u.is_photo='Y' AND u.hide_time=0 AND u.type='gold'
                ORDER BY u.user_id DESC
                LIMIT 0, 6
            ");
?>

au niveau de "u.name" car dans la partie HTML c'est {name} qui est appeler a l'affichage voici le bout de code:

  <!-- begin_user -->
                                                 
[{url_main}search_results.php?name={name} {name}, {age}
                                                    <!--  -->
                                                    ]

                                                  <!-- end_user -->
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 16:18
Et bien si tu le souhaites :

<?php
            DB::query("
                SELECT
u.user_id, SUBSTRING(u.name,0,12) AS name, u.orientation, u.gender, u.type, (YEAR('" .
date('Y-m-d H:i:s') . "')-YEAR(birth)) - (RIGHT('" . date('Y-m-d
H:i:s') . "',5)<RIGHT(birth,5)) AS age
                FROM user AS u
                WHERE u.is_photo='Y' AND u.hide_time=0 AND u.type='gold'
                ORDER BY u.user_id DESC
                LIMIT 0, 6
            ");
?>
0

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

Posez votre question
promouv Messages postés 14 Date d'inscription samedi 2 août 2003 Statut Membre Dernière intervention 14 septembre 2009
19 sept. 2008 à 16:33
Voila nikel la seconde solution marche a merveille un grand merci a toi l'ami

bonne continuation et merci encore pour la rapidité
0
Rejoignez-nous