Trier une table [Résolu]

Signaler
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013
-
JeanPoldeux
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005
-
Bonjour,
Bonjour,

Je re,
Voila, c'est un algo de tri mais ca ne tri rien du tout
le champ id_cat : INT
le champ description : VARCHAR
help please

<?php
$chaine[] = array("blog|blogs","1");
$chaine[] = array("art|arts","2");
$chaine[] = array("site|sites","3");

foreach($chaine as $filtre){
// met le titre
mysql_query("UPDATE annuaire SET id_cat='{$filtre[1]}' WHERE description LIKE '%{$filtre[0]}%'");
}
?>

9 réponses

Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005

Salut,

Qu'obtiens-tu si tu fais
<?php
print_r($chaine);
?>

Que t'affiche cette requête
<?php
mysql_query("SELECT * FROM annuaire WHERE id_cat='$filtre[1]' ");
mysql_query("SELECT * FROM annuaire WHERE id_cat='$filtre[1]' WHERE description LIKE '%$filtre[0]%'"");

?>

Histoire de comprendre le problème.
@++
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005

Si tu veux trier ton tableau, çà ne peut fonctionner
puisqu'il ne possède qu'une seule et même entrée à savoir un tableau de
deux éléments (
$chaine[] = array("site|sites","3")
).

<?php


$chaine[] = array(
array("
blog|blogs","1"
),
array(
"art|arts","2"
),
array("site|sites","3"));


foreach($chaine as $filtre)

{
mysql_query("UPDATE annuaire SET id_cat='$filtre[1]' WHERE description LIKE '%$filtre[0]%'");
}


?>



Jean Poldeux

Every problem has a solution. The difficulty is to find it.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Une question, pourquoi avoir crée un nouveau topic ?

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

merci pour ta réponse, mais ca ne tri rien et j'ai 1 chaine[] de 1000 mots avec 100 enregistrements

Page générée en 0,0155 s => ca fait bizarre ca aussi ou c peut etre normal que ca aille aussi vite? ca étant ca ne met rien a jour : (
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Une question, pourquoi avoir crée un nouveau topic ?
Ce forum > super mais 1 ptit manque> pas de UP pour remonter le sujet en tete de liste, page rank oblige, mais les sujets ont tendance a se perdre => donc new topic..

Ca étant.. si on pouvait revenir a l'algo de tri ca serait super. Merci
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Si on pouvait respecter la charte ce serait super aussi

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005

Oups
la deuxième requête du post précédent devrait être
mysql_query("SELECT * FROM annuaire WHERE description LIKE '%$filtre[0]'");
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

re

tu as raison, faut decortiquer, alors ca a été la soupe avec tes requetes. En fait au bout du compte j'ai fini par comprendre le hic. LIKE ne prend que les mots, REGEXP prend les chaines, mais pas les tableaux, donc ca ne peut pas marcher !

Comme j'ai besoin d'avancer j'ai fait basic et ca marche

<?php

$chaine0 = "JEU|jeu|blog|blogs";
$chaine_titre0 = 3;
$chaine1 = "Annuaire|art|arts";
$chaine_titre1 = 9;
$chaine2 = "news|France|site|sites";
$chaine_titre2 = 12;


$nbr_chaine = 3;
$i = 0;



while($i<$nbr_chaine)
{


if ($i 0) {$chaine $chaine0; $chaine_titre = $chaine_titre0;} if ($i 1) {$chaine $chaine1; $chaine_titre = $chaine_titre1;} if ($i 2) {$chaine $chaine2; $chaine_titre = $chaine_titre2;}



mysql_query("UPDATE $Tsites SET id_cat='$chaine_titre' WHERE description REGEXP '%$chaine%'");


$i++;


}

Comme tu peux le voir je suis pas arriver a concatener la chaine : $chaine, j'ai essayer plusieurs methodes mais rien a faire. Si t'a une idée la dessus, welcome.
La dessus, merci de ton support, ca fait plaisir de voir de nouveaux webmasters sur ce forum
:)

@++
KOogar
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005

L'opérateur point(.) sert à concaténer deux chaînes.



<?php

$chaine1="hello";

$chaine2=" world";

$chaine_concatenee=$chaine1.$chaine2;

echo $chaine_concatenee; //donnera "hello world";

?>



Sinon essaie de garder un tableau pour ton tri. Un cela rendra le code
plus propre et deuxièmement tu vas gagner en exécution en évitant de
tester ton $i à chaque passage dans la boucle.



<?php


$chaine[0] = "JEU|jeu|blog|blogs";
$chaine_titre[0] = 3;
$chaine[1] = "Annuaire|art|arts";
$chaine_titre[1] = 9;
$chaine[2] = "news|France|site|sites";
$chaine_titre[2] = 12;



for($i=0,$i<count($chaine);$i++)
{

$chaine_tmp=$chaine[$i];

$chaine_titre_tmp=$chaine_titre[$i];


mysql_query("UPDATE $Tsites SET
id_cat='$chaine_titre_tmp' WHERE description REGEXP
'%".$chaine_tmp."%'");

}

?>



@+