IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Insérer et supprimer des lignes dans un tableau PHP


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2024
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2024
    Messages : 19
    Points : 11
    Points
    11
    Par défaut Insérer et supprimer des lignes dans un tableau PHP
    Bonjour

    J'ai fait un tableau PHP qui va aller chercher des données dans une base SLQ express

    Je peux ajouter des nouvelles lignes et supprimer la dernière ligne sans problème via un formulaire php et son fichier de traitement.
    Par contre je n'arrive pas à faire des insertions ou des suppressions sans que ne pose de problème dans la base car ce sont des ID auto incrémenté.

    et même via un script purement SQL, cela me donne en suppression un trou dans les ID et quand je veux remettre une ligne cela me met un message d’erreur " violation **** " il faut désactiver un truc et le réactiver un après, d'autant que si je veux modifier la ligne par exemple 25, en réalité il faut indiquer l'ID 24...

    Je ne sais pas si il y a déjà des scripts tous fait ou non pour résoudre mes deux problèmes, si c'est le cas, je suis preneur

    exemple code SQL ligne 104 pour remettre une ligne supprimé

    SET IDENTITY_INSERT AttributionAbon ON;

    INSERT INTO AttributionAbon (ID, Departutil, NomUtilisateur, NomOrdinateur, EnvSystem, NomLogiciel, VersLogiciel, NumBC, NumDeSerie, CleLicence, TypeIns, InfoActivation, DateFinAbon, NumTicket, Commentaire)
    VALUES (104, 'Test', 'toto', 'pc01', 'Windows', 'test', '1', '001', 'test', '123456', 'Initial', 'N/A', '02022022', 'TCK0001', 'RAS');

    SET IDENTITY_INSERT AttributionAbon OFF;
    l'idéal serait lors de la suppression d'une ligne avoir toutes les ligne qui était supérieur à 104 de descendre d'une position.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 117
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 117
    Points : 8 266
    Points
    8 266
    Billets dans le blog
    17
    Par défaut
    je n'arrive pas à faire des insertions ou des suppressions sans que ne pose de problème dans la base car ce sont des ID auto incrémenté.
    et même via un script purement SQL, cela me donne en suppression un trou dans les ID
    Un ID ne doit être utilisé qu'une seule et unique fois. Une suppression provoque donc un trou, c'est normal.

    l'idéal serait lors de la suppression d'une ligne avoir toutes les ligne qui était supérieur à 104 de descendre d'une position.
    Il ne faut surtout pas faire cela. Résultat de telles pratiques avec un cas classique :

    1. Chargement de la ligne ID 123 pour modification
    2. Suppression de la ligne ID 100
    3. Modification de l'ID des lignes 101 et plus en ID − 1 => La ligne ID 123 devient ID 122, la ligne ID 124 devient ID 123
    4. L'utilisateur qui était en train d'éditer la ligne initialement ID 123 soumet ses modifications => Les modifs sont enregistrées et écrasent les valeurs de la ligne initialement ID 124
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2024
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2024
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Bonjour Séb

    Ok donc pour le visuel, il faut que j'adapte le code pour ne pas avoir de trou dans le tableau visible par l'utilisateur...

    ça promet quelques de travail ( enfin heure pour moi .. )


    Merci pour ta réponse..
    donc après pour les insertions les lignes vont se suivre dans la base SQL mais ce sera le n° dans le tableau PHP qui vont changer....

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 399
    Points : 5 754
    Points
    5 754
    Billets dans le blog
    1
    Par défaut
    Bonsoir draidius,
    as-tu encore une erreur SQL quand tu insères une ligne (sans insérer l'ID vu que c'est auto-incrémenté) ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 117
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 117
    Points : 8 266
    Points
    8 266
    Billets dans le blog
    17
    Par défaut
    Ok donc pour le visuel, il faut que j'adapte le code pour ne pas avoir de trou dans le tableau visible par l'utilisateur...
    ça promet quelques de travail ( enfin heure pour moi .. )
    S'il s'agit d'un index de ligne alors tu peux utiliser ROW_NUMBER() :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ALL
        id, created_at, col1, col2,
        ROW_NUMBER() OVER (ORDER BY created_at ASC) AS row_index
    FROM your_table
    ORDER BY created_at ASC

    La colonne row_index vaudra 1 pour la 1re ligne, 2 pour la 2nde, etc. selon l'ordre de tri spécifié (ici selon l'horodatage de création) et en toute indépendance de l'ID.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2024
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2024
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    ...
    Bonjour laurentSc
    Oui, ppiur l'instant le problème est en suspens, j’étais passé à autre chose pour le moment mais je suis preneur de conseil...
    Merci

    Citation Envoyé par Séb. Voir le message
    ...
    Merci, je vais tester ça

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 399
    Points : 5 754
    Points
    5 754
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par draidius Voir le message
    Oui, ppiur l'instant le problème est en suspens, j’étais passé à autre chose pour le moment mais je suis preneur de conseil...
    Merci
    Dans ce cas, donne STP, la structure SQL de ta table (fais un export)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

Discussions similaires

  1. Réponses: 10
    Dernier message: 09/01/2019, 10h18
  2. Réponses: 2
    Dernier message: 27/03/2018, 13h48
  3. Réponses: 5
    Dernier message: 11/08/2008, 15h25
  4. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo