cs_dgdg
Messages postés17Date d'inscriptionmardi 11 janvier 2005StatutMembreDernière intervention20 mars 2008
-
8 mai 2006 à 23:33
cs_dgdg
Messages postés17Date d'inscriptionmardi 11 janvier 2005StatutMembreDernière intervention20 mars 2008
-
20 mai 2006 à 12:29
Salut à tous !
j ai un petit prob
je cherche à modifier toute une table avec une requête dans un FOR ...
genre :
for($i=0;i<$taille;$i++){
if(exp...){
$sql="UPDATE categories SET nom='$nom',locked='1' WHERE ordre='1' ";
}else{
$sql="UPDATE categories SET nom='$nom',locked='0' WHERE ordre='1' ";
}
mysql_query($sql);
}
Y a t il une solution ???
je suis débutant...
cs_spyro666
Messages postés137Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention28 août 2007 9 mai 2006 à 07:57
En fait tu n'est pas trop mal parti, à part le fait que si tu le fais de cette manière et que ta table compte 15'000 enregistrement tu mettra 15'000 * 0.015 s c'est à dire plus de 3 minutes juste pour mettre à jour 15'000 entrée.
Maintenant est ce que $nom est unique à chaque entrée ou est ce qu'elle est commune? Parce que comme tu fais ta requete là tu mets en fait à jour TOUTES les entrées ou ordre='1' et ça $taille fois.
En plus ton test est inutile aussi car les deux requêtes affectent les mêmes entrées en fin de compte.
Pourrais tu préciser de quelle manière tu voudrais modifier la table?
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 9 mai 2006 à 14:00
ouais ca depend de ton test "exp...". si il depend de champs de la table, et sur une partie definie des enrgistrements, alors tu a surement un moyen de faire une seule ou quelques requetes.
Il nous faut juste un peu plus de details pour t'aider...
En amont j ai 2 tableaux 1-> categorie vu
2->categorie cachée
$taille= la taille de la table sql à modifier
$index1=0;
for.... $index<$taille {
if( sizeof(tableau (categorie vu)) > $index) {
$sql="UPDATE categories SET nom='$nom',locked='0' WHERE ordre='$index' ";
}else{
$nom=tableau[$index1] (nom des categories cachée)
$sql="UPDATE categories SET nom='$nom',locked='1' WHERE ordre='$index' ";
$index1++;
}
mysql_query($sql);
}
(bien sur je fais des tests avant de passer dans ma boucle
genre : if( taille nouvelles donnees == taille table sql) ...
Ce bout de code me semble plus qu affreux et comme dis "spyro666" avec 15000 enregistrements ca va être la mort
j espere avoir été assez claire
merci à tous votre aide !!!
cs_spyro666
Messages postés137Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention28 août 2007 9 mai 2006 à 19:22
Mais à la rigueur tu t'en fous de l'ordre dans lequel se trouvent les données dans ta base de donnée. Tu n'as qu'a faire un tri au moment ou tu veux récupérer les valeur ( grâce à ORDER BY).
Spyro666 contre le 555
Vous n’avez pas trouvé la réponse que vous recherchez ?
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 9 mai 2006 à 23:30
et il me semble que tu peu prendre juste les N premiers enregistrements. je crois qu'en postgres c la commande OFFSET, mais c ptetre different en MySQL
cs_dgdg
Messages postés17Date d'inscriptionmardi 11 janvier 2005StatutMembreDernière intervention20 mars 2008 20 mai 2006 à 12:29
pfffff bien sur ORDER BY....
desolé pour la question un peu crmmmm crmmmm
fin de journée un peu à l ouest lol
en tout cas merci à tous d avoir pris le temps de me répondre !
bonne prog