Trier une table [Résolu]

Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013
- - Dernière réponse : JeanPoldeux
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005
- 22 mars 2005 à 00:39
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]}%'");
}
?>
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005
3
Merci
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.
@++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 206 internautes nous ont dit merci ce mois-ci

Commenter la réponse de JeanPoldeux
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005
0
Merci
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.
Commenter la réponse de JeanPoldeux
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
0
Merci
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>
Commenter la réponse de cs_Anthomicro
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013
0
Merci
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 : (
Commenter la réponse de LaurentKOogar
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013
0
Merci
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
Commenter la réponse de LaurentKOogar
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
0
Merci
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>
Commenter la réponse de cs_Anthomicro
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005
0
Merci
Oups
la deuxième requête du post précédent devrait être
mysql_query("SELECT * FROM annuaire WHERE description LIKE '%$filtre[0]'");
Commenter la réponse de JeanPoldeux
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013
0
Merci
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
Commenter la réponse de LaurentKOogar
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005
0
Merci
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."%'");

}

?>



@+
Commenter la réponse de JeanPoldeux