colonnes smileys

thebest321
Invité n'ayant pas de compte PHPfrance

13 juin 2007, 13:04

Salut tout le monde.
Pour faire simple, j'ai une page http://ftpteamnon.free.fr/siteteam/web/ ... tbox_texte
Et j'aimerais que les smileys s'affichent sur plusieurs colonnes au lieu d'une seule, est ce possible ?
Il me semble que on peut créér un tableau en les mettant un par un mais là il suffit que j'ajoute un smiley sur mon site et il apparaît automatiquement sur cette page donc c'est pratique
Voilà

Mammouth du PHP | 737 Messages

13 juin 2007, 13:55

Salut,

Si je comprends bien tes smileys sont dans ta base ?
Dans ce cas, pour faire du multicolonnage en sortie d'une requête tu peux utiliser la soluce modulo ou le code suivant :
<? echo '<table>';//on ouvre un tableau HTML
  require_once("connex.php");//on se connecte à la base
   $nbcol = 6;// nombre de colonnes voulues, LA VALEUR A VOTRE CONVENANCE ;)
   $i = 0;// pointeur nombre de colonnes
    $q = "SELECT * FROM ta table ORDER BY ce que tu veux";//requête
    $r = mysql_query($q);//envoi de la requête
    $nbe = mysql_num_rows($r);//nombre d'enregistrements
     while ($row=mysql_fetch_array($r)) {//boucle des résultats
      if (($nbe>0) && ($i==0)){ echo '<tr>'; }//première et chaque nouvelle ligne 
     echo '<td>'.$row["nom_uti"].'</td>';//nos gentilles cellules
     $i++;//on incrémente i
     $nbe--;//on décrémente nbe
      if (($i==$nbcol) || ($nbe==0)) { $i=0; echo '</tr>'; }//si dernier enregistrement ou i a atteint la limite 
     }//on ferme le while
 echo '</table>';//fermeture du tableau HTML
?>
A adapter à ton cas bien sur ;)

Mega :)

thebest321
Invité n'ayant pas de compte PHPfrance

13 juin 2007, 15:22

merci beaucoup mais j'ai rien compris j'ai mon bloc notes comme ceci à la fin :
  function smilies()
    {
        global $textarea, $theme, $bgcolor3, $bgcolor2;

       echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
       . "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">\n"
       . "<head><title>" . _SMILEY . "</title>\n"
       . "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n"
       . "<meta http-equiv=\"content-style-type\" content=\"text/css\" />\n"
       . "<link title=\"style\" type=\"text/css\" rel=\"stylesheet\" href=\"themes/" . $theme . "/style.css\" /></head>\n"
       . "<body style=\"background: " . $bgcolor2 . ";\">\n"
       . "<script type=\"text/javascript\" src=\"bbcode.js\"></script>\n";

       echo "<script type=\"text/javascript\">\n"
       . "<!--\n"
       . "\n"
       . "function eff(){\n"
       . "if (opener.document.getElementById('" . $textarea . "').value == '" . _YOURMESS . "')\n"
       . "{\n"
       . "opener.document.getElementById('" . $textarea . "').value='';\n"
       . "}\n"
       . "}\n"
       . "\n"
       . "// -->\n"
       . "</script>\n";

       echo "<div style=\"text-align: center;\"><big><b>" . _LISTSMILIES . "</b></big></div>\n"
       . "<table width=\"100%\" cellpadding=\"3\" cellspacing=\"0\"><tr><td colspan=\"2\">&nbsp;</td></tr>\n"
       . "<tr style=\"background: $bgcolor3;\"><td align=\"center\"><b>" . _IMAGE . "</b></td></tr>\n";

        $sql = mysql_query("SELECT code, url, name FROM " . SMILIES_TABLE . " ORDER BY id");
        while (list($code, $url, $name) = mysql_fetch_array($sql))
        {
            $name = stripslashes($name);
            $name = htmlentities($name);
            $code = htmlentities($code);

            echo " <tr><td align=\"center\"><img style=\"border: 0;\" src=\"images/icones/" . $url . "\" alt=\"\" title=\"" . $name . "\" /></a></td></tr>\n";
        } 

        echo "</table><div style=\"text-align: center;\"><br /><a href=\"#\" onclick=\"javascript:window.close()\"><b>" . _CLOSEWINDOW . "</b></a></div></body></html>";
    }  


switch ($op)
{

    case"smilies":
        smilies();
        break;

    case"index":
        index();
        break;

    default:
        index();
        break;
} 

?> 


?>
Donc je ne sais pas du tout où mettre ce que tu m'as dit et le modifier aussi car je suppose que quand tu dis "ta table" etc je dois mettre quelque chose mais j'y connais vraiment rien
:oops:

Mammouth du PHP | 737 Messages

13 juin 2007, 16:01

Ok lol.

Essaie en gros, ca :
echo '<table>';//on ouvre un tableau HTML 
  require_once("connex.php");//on se connecte à la base 
   $nbcol = 6;// nombre de colonnes voulues, LA VALEUR A VOTRE CONVENANCE ;) 
   $i = 0;
juste avant :
$sql = mysql_query("SELECT code, url, name FROM " . SMILIES_TABLE . " ORDER BY id");
Cette ligne :
$nbe = mysql_num_rows($r);//nombre d'enregistrements 
avant :
while (list($code, $url, $name) = mysql_fetch_array($sql)) 
Ceci :
if (($nbe>0) && ($i==0)){ echo '<tr>'; }//première et chaque nouvelle ligne  
     echo 'td align=\"center\"><img style=\"border: 0;\" src=\"images/icones/" . $url . "\" alt=\"\" title=\"" . $name . "\" /></a></td>';//nos gentilles cellules 
     $i++;//on incrémente i 
     $nbe--;//on décrémente nbe 
      if (($i==$nbcol) || ($nbe==0)) { $i=0; echo '</tr>'; }//si dernier enregistrement ou i a atteint la limite  
     }//on ferme le while 
 echo '</table>';//fermeture du tableau HTML 
à la place de :
echo " <tr><td align=\"center\"><img style=\"border: 0;\" src=\"images/icones/" . $url . "\" alt=\"\" title=\"" . $name . "\" /></a></td></tr>\n"; 
On attend ton retour...

Mega :)

thebest321
Invité n'ayant pas de compte PHPfrance

13 juin 2007, 19:00

    function smilies()
    {
        global $textarea, $theme, $bgcolor3, $bgcolor2;

       echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
       . "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">\n"
       . "<head><title>" . _SMILEY . "</title>\n"
       . "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n"
       . "<meta http-equiv=\"content-style-type\" content=\"text/css\" />\n"
       . "<link title=\"style\" type=\"text/css\" rel=\"stylesheet\" href=\"themes/" . $theme . "/style.css\" /></head>\n"
       . "<body style=\"background: " . $bgcolor2 . ";\">\n"
       . "<script type=\"text/javascript\" src=\"bbcode.js\"></script>\n";

       echo "<script type=\"text/javascript\">\n"
       . "<!--\n"
       . "\n"
       . "function eff(){\n"
       . "if (opener.document.getElementById('" . $textarea . "').value == '" . _YOURMESS . "')\n"
       . "{\n"
       . "opener.document.getElementById('" . $textarea . "').value='';\n"
       . "}\n"
       . "}\n"
       . "\n"
       . "// -->\n"
       . "</script>\n";

       echo "<div style=\"text-align: center;\"><big><b>" . _LISTSMILIES . "</b></big></div>\n"
       . "<table width=\"100%\" cellpadding=\"3\" cellspacing=\"0\"><tr><td colspan=\"2\">&nbsp;</td></tr>\n"
       . "<tr style=\"background: $bgcolor3;\"><td align=\"center\"><b>" . _IMAGE . "</b></td></tr>\n";

echo '<table>';//
  require_once("connex.php");//
   $nbcol = 6;// 
   $i = 0; 

        $sql = mysql_query("SELECT code, url, name FROM " . SMILIES_TABLE . " ORDER BY id");
$nbe = mysql_num_rows($r);//
        while (list($code, $url, $name) = mysql_fetch_array($sql))
        {
            $name = stripslashes($name);
            $name = htmlentities($name);
            $code = htmlentities($code);

            if (($nbe>0) && ($i==0)){ echo '<tr>'; }//
     echo 'td align=\"center\"><img style=\"border: 0;\" src=\"images/icones/" . $url . "\" alt=\"\" title=\"" . $name . "\" /></a></td>';//
     $i++;//
     $nbe--;//
      if (($i==$nbcol) || ($nbe==0)) { $i=0; echo '</tr>'; }//
     }//
     echo '</table>';//
        } 

        echo "</table><div style=\"text-align: center;\"><br /><a href=\"#\" onclick=\"javascript:window.close()\"><b>" . _CLOSEWINDOW . "</b></a></div></body></html>";
    }  
Il me dit qu'il y a un problème à la dernière ligne j'ai du rater un passage xD

Mammouth du PHP | 737 Messages

13 juin 2007, 21:07

arf oui le require_once n'est pas valable pour toi, retires cette ligne : require_once("connex.php");//

et aussi car ta variable porte un nom différent met : $nbe = mysql_num_rows($sql); au lieu de $nbe = mysql_num_rows($r);

et reteste ;)

Mega :)

Ps : si tu as des erreurs, indique le message affiché ;)

thebest321
Invité n'ayant pas de compte PHPfrance

13 juin 2007, 21:46

Parse error: syntax error, unexpected '}' in /mnt/157/sdb/1/9/ftpteamnon/siteteam/web/modules/Textbox/index.php on line 199
voilà mon message d'erreur
et dans le php j'ai :

 function smilies()
    {
        global $textarea, $theme, $bgcolor3, $bgcolor2;

       echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
       . "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">\n"
       . "<head><title>" . _SMILEY . "</title>\n"
       . "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n"
       . "<meta http-equiv=\"content-style-type\" content=\"text/css\" />\n"
       . "<link title=\"style\" type=\"text/css\" rel=\"stylesheet\" href=\"themes/" . $theme . "/style.css\" /></head>\n"
       . "<body style=\"background: " . $bgcolor2 . ";\">\n"
       . "<script type=\"text/javascript\" src=\"bbcode.js\"></script>\n";

       echo "<script type=\"text/javascript\">\n"
       . "<!--\n"
       . "\n"
       . "function eff(){\n"
       . "if (opener.document.getElementById('" . $textarea . "').value == '" . _YOURMESS . "')\n"
       . "{\n"
       . "opener.document.getElementById('" . $textarea . "').value='';\n"
       . "}\n"
       . "}\n"
       . "\n"
       . "// -->\n"
       . "</script>\n";

       echo "<div style=\"text-align: center;\"><big><b>" . _LISTSMILIES . "</b></big></div>\n"
       . "<table width=\"100%\" cellpadding=\"3\" cellspacing=\"0\"><tr><td colspan=\"2\">&nbsp;</td></tr>\n"
       . "<tr style=\"background: $bgcolor3;\"><td align=\"center\"><b>" . _IMAGE . "</b></td></tr>\n";

echo '<table>';//

   $nbcol = 6;// 
   $i = 0; 

        $sql = mysql_query("SELECT code, url, name FROM " . SMILIES_TABLE . " ORDER BY id");
$nbe = mysql_num_rows($sql);//
        while (list($code, $url, $name) = mysql_fetch_array($sql))
        {
            $name = stripslashes($name);
            $name = htmlentities($name);
            $code = htmlentities($code);

            if (($nbe>0) && ($i==0)){ echo '<tr>'; }//
     echo 'td align=\"center\"><img style=\"border: 0;\" src=\"images/icones/" . $url . "\" alt=\"\" title=\"" . $name . "\" /></a></td>';//
     $i++;//
     $nbe--;//
      if (($i==$nbcol) || ($nbe==0)) { $i=0; echo '</tr>'; }//
     }//
     echo '</table>';//
        } 

        echo "</table><div style=\"text-align: center;\"><br /><a href=\"#\" onclick=\"javascript:window.close()\"><b>" . _CLOSEWINDOW . "</b></a></div></body></html>";
    }  


switch ($op)
{

    case"smilies":
        smilies();
        break;

    case"index":
        index();
        break;

    default:
        index();
        break;
} 

?> 


?>

thebest321
Invité n'ayant pas de compte PHPfrance

14 juin 2007, 20:26

"phrase" pardon
tu vois où il y a un problème mega ?

Mammouth du PHP | 737 Messages

15 juin 2007, 12:00

Re, désolé pour le délai...

Essaies de retirer l'accolade sous echo '</table';//
   if (($i==$nbcol) || ($nbe==0)) { $i=0; echo '</tr>'; }// 
     }// 
     echo '</table>';// 
        }  
de façon à n'avoir que :
   if (($i==$nbcol) || ($nbe==0)) { $i=0; echo '</tr>'; }// 
     }// 
     echo '</table>';// 
et dis moi ;)

Mega :)

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2007, 12:26

Essayes d'indenter proprement ton code : dès que tu ouvres une accollade, tu décalles tout ce qui suit vers la droite d'une tabulation ou d'espaces, et dès que tu en refermes une tu reviens à gauche d'une tabulation. Cela t'évitera les problèmes d'accolades mal équilibrées :)

Par ailleurs tu ferme deux fois le tableau :
if (($i==$nbcol) || ($nbe==0)) { $i=0; echo '</tr>'; }// 
     }// 
     echo '</table>';// 
        }  

        echo "</table><div .... "
Et il te manque le caractère "<" pour ouvrir ta cellule td ici :
if (($nbe>0) && ($i==0)){ echo '<tr>'; }// 
     echo 'td align=\"center\"><img style=\"border: 0;\" src=\"images/icones/" . $url . "\" alt=\"\" title=\"" . $name . "\" /></a></td>';// 
     $i++;// 
Sans parler du fait que des variables php entre apostrophes ne sont pas interprétées et que tu verras donc "$url" et "$name" apparaitre en toutes lettres :)
Enfin, si tu entourre ta chaine d'apostrophes, il est inutile de protéger les guillemets, ca rend ton code illisible inutilement :)
echo '<td align="center"><img style="border: 0;" src="images/icones/"' . $url . '" alt="" title=""' . $name . '" /></a></td>';

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 juin 2007, 12:31

Groumpf.... bon ben c'était moi :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

thebest321
Invité n'ayant pas de compte PHPfrance

15 juin 2007, 13:36

http://ftpteamnon.free.fr/siteteam/web/ ... tbox_texte

voici ma page
et vocii mon code :
    function smilies()
    {
        global $textarea, $theme, $bgcolor3, $bgcolor2;

       echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
       . "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">\n"
       . "<head><title>" . _SMILEY . "</title>\n"
       . "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n"
       . "<meta http-equiv=\"content-style-type\" content=\"text/css\" />\n"
       . "<link title=\"style\" type=\"text/css\" rel=\"stylesheet\" href=\"themes/" . $theme . "/style.css\" /></head>\n"
       . "<body style=\"background: " . $bgcolor2 . ";\">\n"
       . "<script type=\"text/javascript\" src=\"bbcode.js\"></script>\n";

       echo "<script type=\"text/javascript\">\n"
       . "<!--\n"
       . "\n"
       . "function eff(){\n"
       . "if (opener.document.getElementById('" . $textarea . "').value == '" . _YOURMESS . "')\n"
       . "{\n"
       . "opener.document.getElementById('" . $textarea . "').value='';\n"
       . "}\n"
       . "}\n"
       . "\n"
       . "// -->\n"
       . "</script>\n";

       echo "<div style=\"text-align: center;\"><big><b>" . _LISTSMILIES . "</b></big></div>\n"
       . "<table width=\"100%\" cellpadding=\"3\" cellspacing=\"0\"><tr><td colspan=\"2\">&nbsp;</td></tr>\n"
       . "<tr style=\"background: $bgcolor3;\"><td align=\"center\"><b>" . _IMAGE . "</b></td></tr>\n";

echo '<table>';//

   $nbcol = 6;// 
   $i = 0; 

        $sql = mysql_query("SELECT code, url, name FROM " . SMILIES_TABLE . " ORDER BY id");
$nbe = mysql_num_rows($sql);//
        while (list($code, $url, $name) = mysql_fetch_array($sql))
        {
            $name = stripslashes($name);
            $name = htmlentities($name);
            $code = htmlentities($code);

            if (($nbe>0) && ($i==0)){ echo '<tr>'; }//
     echo '<td align=\"center\"><img style=\"border: 0;\" src=\"images/icones/" . $url . "\" alt=\"\" title=\"" . $name . "\" /></a></td>';//
     $i++;//
     $nbe--;//
      if (($i==$nbcol) || ($nbe==0)) { $i=0; echo '</tr>'; }//
     }//
     echo '</table>';//


        echo "</table><div style=\"text-align: center;\"><br /><a href=\"#\" onclick=\"javascript:window.close()\"><b>" . _CLOSEWINDOW . "</b></a></div></body></html>";
    }  


switch ($op)
{

    case"smilies":
        smilies();
        break;

    case"index":
        index();
        break;

    default:
        index();
        break;
} 

?> 
mais j'ai pas tout compris dans le message de ryle :oops: donc c'est possible que j'ai raté un truc important

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2007, 14:58

Cf la dernière ligne de code de Ryle...
echo '<td align="center"><img style="border: 0;" src="images/icones/"' . $url . '" alt="" title=""' . $name . '" /></a></td>';
La tienne ne correspond pas :)

thebest321
Invité n'ayant pas de compte PHPfrance

15 juin 2007, 16:49

j'ai modifié mais les images ne s'affichent pas

thebest321
Invité n'ayant pas de compte PHPfrance

17 juin 2007, 16:43

désolé d'être lourd mais vous savez d'où viens le problème ? :?