Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/05/2006, 22h12   #1
Membre confirmé
 
Inscription : août 2005
Messages : 221
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 221
Points : 204
Points : 204
Par défaut [Conception] Administration pages & update

Bonsoir,

Je suis en train de faire mes pages d'administration avec possibilité de delete et update de champs et lignes dans mes tables, le delete, c'est pas compliqué

L'update quand à lui me pose un petit problème, je ne sais pas comment récupérer l'emplacement de la ligne à modifier, mes tables contiennent toutes un id, je pourrais donc me servir ce cette id pour savoir la position de la ligne, mais si je désire également updater ce champ id, je n'ai plus rien sur quoi m'appuyer dans ma table, comment faire pour récupérer le numéro de la ligne dans ma table ?

Une seconde question, par exemple sur 10 lignes dans ma table et un id en auto-increment, je supprime la ligne 7, je me retrouve donc avec un trou, donc ce que je souhaite, c'est pouvoir réinitialiser la colonne des id, et donc au lieu d'avoir 1,2,3,4,5,6,8,9,10 après delete d'une ligne, j'obtienne donc après initialisation 1,2,3,4,5,6,7,8,9.

Merci
spirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 22h21   #2
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
C'est une très mauvaise idée de modifier un champ qui te sert de clé. Trouve un petit cours sur les bases de données avant d'aller plus loin...
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 22h37   #3
Membre confirmé
 
Inscription : août 2005
Messages : 221
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 221
Points : 204
Points : 204
Bah pourquoi ce serait une mauvaise idée ?

Admettons un livre d'or ou un forum, un crétin passe par là et y laisse un message insultant, je dois bien effacer ce message, donc l'id qui va avec, je vois pas du tout où est le problème
spirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 22h41   #4
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par spirou
Bah pourquoi ce serait une mauvaise idée ?

Admettons un livre d'or ou un forum, un crétin passe par là et y laisse un message insultant, je dois bien effacer ce message, donc l'id qui va avec, je vois pas du tout où est le problème
Bien sûr ! Tu supprimes toute l'entrée, mais tu ne modifies pas l'id d'une entrée que tu laisses dans la base.

Par ailleurs, dans ton exemple, l'id n'a pas véritablement de signification, donc il importe peu d'avoir des "trous" dans la séquence.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 22h47   #5
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
salut
Je ne pense pas que cela pose de problème de supprimer l'enregistrement.

Par contre si tu fais un update, tu n'as pas besoin de modifier l'id.

Par exemple, si quelqu'un met son nom, son prenom et son email dans une base et que son enregistrement est identifié par un id.
Tu prévoir un update si il veut changer son email. Tu changes le champs email mais pas le champ id.

Julien
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 22h47   #6
Membre expérimenté
 
Avatar de papyphp
 
Inscription : avril 2005
Messages : 425
Détails du profil
Informations personnelles :
Âge : 62
Localisation : Belgique

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 425
Points : 545
Points : 545
Bonsoir Spirou,

Je rejoins totalement l'idée d'Eusebius, il est inutile et dangereux de manipuler les clés de tes enregistrements surtout si celles-ci te servent à faire des liens avec d'autres tables.
Pourquoi veux-tu qu'il n'y ait pas de trous dans ta numérotation ? Pour compter le nombre d'enregistrements de ta table (mysql_num_rows() ou équivalent est ton amie)? Pour savoir quel est le ènième enregistrement (while et un compteur sont tes amis)? ...
Franchement, je ne vois pas de raison pour 'boucher' les trous !
__________________
Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp. Et ce coup ci, elle ne nous a pas ratés
papyphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 22h59   #7
Membre confirmé
 
Inscription : août 2005
Messages : 221
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 221
Points : 204
Points : 204
Bon, ben d'accord, je vais suivre vos conseils

Par contre, pour la réinitialisation, cela m'intéresserait si cela est possible, car j'ai (comme sur la plupart des sites) des pages affichant des news du site page par page, et j'ai remarqué que si je supprimait une ligne dans la table autre que la dernière, mon affichage déconnait (normal, c'est moi qui l'ai fait ).

Merci à tous
spirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2006, 01h12   #8
Membre Expert
 
Avatar de davcha
 
Inscription : avril 2004
Messages : 1 132
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 1 132
Points : 1 190
Points : 1 190
Citation:
Envoyé par papyphp
Pour savoir quel est le ènième enregistrement (while et un compteur sont tes amis)?
On va dire que je pinaille, mais le "énième enregistrement" n'a pas de sens quand on utilise une base de donnée relationnelle.

En effet, le stockage des informations n'est pas forcément "ordonné". Certains SGBDR, par exemple, ne suppriment pas physiquement les données sur une instruction DELETE, mais marquent la ligne comme ne comportant pas de données.
On peut ainsi se retrouver avec ça, par exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
matable
--------
id ;    colonne1 ;    colonne2...
----    ----------    -----------
1 ;    'pouet' ;    0...
2 ;    'coucou' ;    1...
3 ;    'et boum !' ;    1...
4 ;    'et paf...' ;    1...
5 ;    'le chien ;    0...

DELETE FROM matable WHERE id = 3;

matable
--------
id ;    colonne1 ;    colonne2...
----    ----------    -----------
1 ;    'pouet' ;    0...
2 ;    'coucou' ;    1...
3 ;    'et boum !' ;    1...
4 ;    'et paf...' ;    1...
5 ;    'le chien ;    0...
La ligne en rouge signifie que la donnée a été supprimée (logiquement uniquement, pas physiquement).
Code :
1
2
3
4
5
6
7
8
9
10
11
INSERT INTO matable (colonne1,colonne2) VALUES ('lol',0);
 
matable
--------
id ;    colonne1 ;    colonne2...
----    ----------    -----------
1 ;    'pouet' ;    0...
2 ;    'coucou' ;    1...
6 ;    'lol' ;    1...
4 ;    'et paf...' ; 0...
5 ;    'le chien ;    0...
Ici, on voit que la donnée a été insérée dans un emplacement libre, qui peut être un emplacement qui était occupé par une donnée précédemment supprimée.
davcha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h19.


 
 
 
 
Partenaires

Hébergement Web