Trier une table

Résolu
LaurentKOogar Messages postés 369 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 20 octobre 2013 - 16 mars 2005 à 23:34
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]}%'");
}
?>

9 réponses

JeanPoldeux Messages postés 64 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 août 2005
17 mars 2005 à 11:58
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.
@++
3
JeanPoldeux Messages postés 64 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 août 2005
16 mars 2005 à 23:47
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.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 mars 2005 à 00:11
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>
0
LaurentKOogar Messages postés 369 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 20 octobre 2013
17 mars 2005 à 00:17
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 : (
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

}

?>



@+
0
Rejoignez-nous