j’ai trouvé une autre solution finalement, qui marche
for ($i=0;$i<$nb_mots;$i++)
{
$poids=1;
while ($les_mots[$i]==$les_mots[$i+1])
{
$poids=$poids+1;
$i=$i+1;
}
echo "<br>".$les_mots[$i]."\n";
echo $poids;
//on est sorti de la boucle parce que $les_mots[$i]!=$les_mots[$i+1]
[COLOR=red]$sql="SELECT mot_vide FROM mots_vide WHERE mot_vide='$les_mots[$i]'";
$curseur = mysql_query($sql);
if($ligne = mysql_fetch_row($curseur))
{
echo "mot vide, pas d'insertion";
}[/COLOR]
else //insertion car ce n'est pas un mot vide
{
$req1="INSERT INTO mot (Mot, Poids) VALUES ( '".mysql_real_escape_string($les_mots[$i])."','".mysql_real_escape_string($poids)."')";
$result1=mysql_query($req1,$CONNEXION);
if($result1)
{
echo "<br>enregistrement pris en compte";
}
else
{
echo "<br>recommencer, erreur dans l' enregistrement";
}
}
}
Ca marche, mais bien sur, comme un code doit toujours être optimiser le plus possible, et bien flute, il faut que je me creuse la tête pour faire autrement!!!
Je m’explique,j’ai comme code pour le moment :
function split_words($string)
{
$retour = array(); //array() : crée un tableau
$delimiteurs = " .!?,:;«»'`(){}[]%\/©";
$tok = strtok($string, " ");
while (strlen(join(" ", $retour)) != strlen($string)) //strlen : Retourne la taille de la chaîne string.
//join()", capable de fusionner une chaîne de caractères (vide ici) et un tableau ("contenu").
{
array_push($retour, $tok); //array_push : "Entasse" des éléments dans un tableau.
$tok = strtok ($delimiteurs); //strtok : Découpe une chaîne de caractères selon les délimiteurs qui lui sont passés en paramètre soit .!?,:;«»(){}[]%\/©
}
return array_non_empty($retour);
}
//Cett e fonction supprime les entrées vides d'un tableau
function array_non_empty($array)
{
$retour = array();
foreach ($array as $a)
{
if ((!empty($a)) && (strlen($a) >= 2)) //empty : Détermine si une variable contient une valeur non nulle
//on garde les mots de 2lettre ou plus
{
array_push($retour, trim($a));//array_push : Empile un ou plusieurs éléments à la fin d'un tableau
//trim : Supprime les espaces (ou d'autres caractères) en début et fin de chaîne
}
}
return $retour;
}
$contenu1 = strtolower($contenu1);
$les_mots = split_words($contenu1); //tableau mot par mot
$nb_mots = count($les_mots);
$i = 0;
sort($les_mots); //tableau des mots par ordre alphabétique
for ($i=0;$i<$nb_mots;$i++)
{
$poids=1;
while ($les_mots[$i]==$les_mots[$i+1])
{
$poids=$poids+1;
$i=$i+1;
}
echo "<br>".$les_mots[$i]."\n";
echo $poids;
//on est sorti de la boucle parce que $les_mots[$i]!=$les_mots[$i+1]
$sql="SELECT mot_vide FROM mots_vide WHERE mot_vide='$les_mots[$i]'";
$curseur = mysql_query($sql);
if($ligne = mysql_fetch_row($curseur))
{
echo "mot vide, pas d'insertion";
}
else //insertion car ce n'est pas un mot vide
{
$req1="INSERT INTO mot (Mot, Poids) VALUES ( '".mysql_real_escape_string($les_mots[$i])."','".mysql_real_escape_string($poids)."')";
$result1=mysql_query($req1,$CONNEXION);
if($result1)
{
echo "<br>enregistrement pris en compte";
}
else
{
echo "<br>recommencer, erreur dans l' enregistrement";
}
}
}
et il faudrait que je fasse la selection des mots non vide dans ma fonction array_non_empty($array), ceci dit, euh, coment faire sachant que pour le moment, j’ai besoin de $les_mots[$i] pour savoir si c’est un mot vide ou pas !!! enfin je ne sais pas si je me suis bien fait comprendre??? comprenez-vous l’idée??? en faite il faut que mon tableau de mot ne comporte aucun mot qui se trouve dans ma table de mot vide!!!
merci deltree, et sans nom, vous qui prenez le temps de me répondre et de m’aider!!!