Obtimiser la base (le champ ID)

Signaler
Messages postés
146
Date d'inscription
lundi 28 avril 2003
Statut
Membre
Dernière intervention
16 février 2012
-
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
-
slt a tt
je voudrais avoir la solution pour obtimiser mon champ id de ma table images voir photo jointe

voila donc comment je peux faire si je ve remplacer mon champ "id" par
1.2.3.4.5 a la place de 13 10 8 11 12 sachant que je ne suis pas sencé connaitre
se qu'il y a dans le champ id .

je pense que ca devrais donné un truc du genre

<?php
//on compte le nombres d'entrées du champs ID
$sql = "SELECT COUNT(*) AS id FROM images";
$nombre_id = @mysql_query($sql,$dbconnect);
$limit = ($nombre_id-1);


//on met a jour le champs id
for ($inc_id = 1; $inc_id <= $nombre_id; $inc_id++)
{
$dbecriture = "UPDATE images SET id='$inc_id' WHERE id='???' LIMIT 0, $limit";
}
mysql_close();
?>

probleme de cette requette c'est qu'elle oblige un WHERE mais comme je l'ai dis je ne pe pas le savoir
donc si vous avez une idée merci

1 réponse

Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!

Je pense que je ferais ca autrement:

Tu récupère tous les id ( classés par ordre croissant ) et tu fais une
boucle commencant par 1 et allant jusqu'au nombre d'enregistrement:



$result = mysql_query( "SELECT id FROM images ORDER BY id ASC" ) or die('MySQL Error');



// nombre d'images

$nb_rows = mysql_num_rows( $result );

// premier enregistrement

$row = mysql_fetch_row( $result );



for( $i = 1; $i <= $nb_rows; $i++ )

{

// si l'id de l'enregistrement n'est pas ce qu'il devrait être

if( $row[0] != $i )

{

// il faut remplacer par $i lid de l'enregistrement qui a l'id $row[0]

}



// prochain enregistrement

$row = mysql_fetch_row( $result );

}



Ca doit marcher. Mais, c'est très lourd, ca peut exploser le timeout et c'est pas beau, ^^

Le mieux c'est de modifier ca chaque fois que supprime un enregistrement:

- tu récupère l'id de l'enregistrement que tu vas supprimer

- tu le supprimes

- tu prends l'id du dernier enregistrement de la table ( ORDER BY id DESC LIMIT 0, 1 )

- tu remplace l'id du dernier enregistrement par celui qui a été supprimé



@++



R@f
www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"