Comment insèrer $variable dans un tableau alléatoire?

WRInaute passionné
Bonjour,
Je tente de faire passer une variable dans un tableau alléatoire.
Ma variable $mots me renvoit 50 mots.
J'utilise le tableau ci-dessous:

Code:
<?php 

 $tablo = array("$mots");
 srand((float)microtime()*1000000);
 shuffle($tablo);
 $nbcol=4; 
 echo '<table border=\"1\">';
 $nb=count($tablo);
 for($i=0;$i<$nb;$i++)
 {
 //les valeurs à afficher
 $valeur1=$tablo[$i];
 if($i%$nbcol==0)
 echo '<tr>';
 echo '<td>',$valeur1,'</td>';
 if($i%$nbcol==($nbcol-1))
 echo '</tr>';
 }
 echo '</tr></table>';

 ?>
Mon soucis est que je ne parvient pas à dissocier les mots "envoyés" par $mots dans les colonnes du tableau (4). Ceux ci s'affiche dans un seul tableau les un après les autres.
Comment dois je procèder pour que chaque mot s'affiche dans une cellule ?
Merci
 
WRInaute accro
C'est normal puisque ta variable $tablo est un tableau comportant qu'une entrée.Et ça:
Code:
$tablo[$i];
ça peut pas marcher..

tu dois faire d'abord un explode de $mots puis l'insérer ensuite dans $tablo et là, tu pourras faire
Code:
$tablo[$i];

Voilà
 
WRInaute passionné
Merci de ta réponse passion.
Bon , je ne suis pas doué en php alors j'ai cherché et testé cette fonction sans succès.
Si je fais:
Code:
<?
  $teste = "$mots";
  $truc = explode("\n", $teste);
echo "$teste";
?>
...sa me sort ma liste de mots.
J'ai donc testé:
Code:
<?php
  $teste = "$mots";
  $truc = explode("\n", $teste);
  $tablo = array("$teste");
 srand((float)microtime()*1000000);
 shuffle($tablo);
 $nbcol=4;
 echo '<table border=\"1\">';
 $nb=count($tablo);
 for($i=0;$i<$nb;$i++)
 {
 //les valeurs à afficher
 $valeur1=$tablo[$i];
 if($i%$nbcol==0)
 echo '<tr>';
 echo '<td>',$valeur1,'</td>';
 if($i%$nbcol==($nbcol-1))
 echo '</tr>';
 }
 echo '</tr></table>';

 ?>
Bon je continue de chercher et de comprendre mais je sèche ...
 
WRInaute passionné
xTrade a dit:
Dans $mot, tes mots sont bien séparés par \n?
Excuse mais je suis totalement largué.
Mon dernier teste (code ci dessus) me renvoie mes mots dans un tableau séparé par un trait (-).
On va faire plus simple:
Code:
$lk = connection_BD();
	
	// Création de la requête
	$sql = "SELECT id,keyw,nbkw,google FROM $T_keywords ORDER BY RAND() LIMIT 0,50 ";
	$res = send_sql($sql,"trouver les mots pour créer la liste");

		while ( $keyword = mysql_fetch_array($res,MYSQL_ASSOC) )
	{

		if ( $n<=$PMA_infos['kw_cliquables'] ) $keywords .= "<a 

href="".id_to_url($keyword['id'],$keyword['keyw'],'1','keyw')."" class="">";
		$keywords .= stripslashes($keyword['keyw']);
		if ( $n<=$PMA_infos['kw_cliquables'] ) $keywords .= "</a>";
		$keywords .= "-";
		

	};
	

	
mysql_close($lk);
Plus loin mon code:
Code:
<?php 
  $teste = "$keywords";
  $truc = explode("\n", $teste); 
 $tablo = array("$teste");
 
 srand((float)microtime()*1000000);
 shuffle($tablo);
 $nbcol=2;  // nombre de colonne. Ici 2
 echo '<table border="1">';
 $nb=count($tablo);

 for($i=0;$i<$nb;$i++)
 {
 //les valeurs à afficher

 $valeur1=$tablo[$i];
 if($i%$nbcol==0)
 echo '<tr>';
 echo '<td>',$valeur1,'</td>';
 if($i%$nbcol==($nbcol-1))
 echo '</tr>';
 }
 echo '</tr></table>';

 ?>
A l'origine le code est prévue pour afficher des mots clef tapé par les visiteurs puis afficher par ordre croissant avec un nombre bien définit.
 
WRInaute accro
Est-ce que $mots est une chaine de caractères genre
Bonjour, je suis content parce qu'il fait beau...
ou
"Bonjour|,|je|suis|content|parce|qu'il|fait|beau..."
Dans le deuxième cas, tu pourras utiliser la fonction explode en lui renseignant | comme séparateur et de cette façon, tu pourras remplir $tablo pour chaque nouvelle entrée et puis t'en servir via $tablo[$i]...

Voilà :)
 
Discussions similaires
Haut