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 :

Ajouter des données dans une table avec la cmd update [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut Ajouter des données dans une table avec la cmd update
    Bonjour,
    j'ai une petite question dont la réponse me permettrait de planifier mon travail

    Résumé de mon code
    J'ai créé un code PHP qui me permet de lister les dossiers (situé dans un dossier "root").
    Le nom des dossiers seront affichés dynamiquement sur ma page web comme menu. Si j'ajoute u nouveau fichier, mon code PHP va le detecter et l'ajouter dans mon menu. Puis il afichera le contenu du dossier, soit tout les fichiers (principalement des images)
    Jusqu'à la , tout fonctionne très bien

    Perfectionner le code
    Cependant, j'aimerais que chaque fichier aie un petit texte (commentaire) et ce texte sera stocké dans ma base de donné. Donc là, intervient ma base de donnée.

    La structure de ma base sera donc:

    une table par dossier soit une table par dossier, le nom de ma table sera le meme que le nom de mon dossier.

    Ensuite, dans chaque table il y aura 2 champs. 1 champs pour le nom des fichiers, et le deuxieme champs pour le commentaire qui correspondra au fichier.


    Cas de figure:
    Admettons que j'ai préalablement créé les tables pour chaque dossier.
    Si par la suite, je crée un nouveau dossier, il va me générer un message d'erreur, car mon code PHP ne trouvera par cette table. Normal que je ne l'ai pas créé manuellement

    J'aimerais ne pas à avoir créé ma table manuellement.

    Je pourrais donc créer une condition qui dit:
    Si table n'existe pas, crée là
    ou
    Si le fichier "monfichier" n'existe pas dans ma table, crée 2 nouveaux champs
    Mes questions sont les suivantes
    Dans le cas ou le dossier et la table existe, et que l'on ajoute un nouveau fichier dans le dossier, es-ce que la commande update va créer un nouveau champ, ou dois-je impérativement utiliser la commande insert?

    Dans le cas ou on ajoute un nouveau dossier et que la table n'existe pas encore et que j'utilise la commande update, va-t-il automatiquement créer la table et les champs?

    J'espère avoir été clair

    En fait, en résumé:
    Es-ce que la commande update créé des champs s'ils n'existe pas, comme le ferai insert?
    Si une table n'existe pas, et l'on veut updater son contenu par la commande update="une_table_qui_n_existe_pas_encore", es-ce qu'il va créé la tbale et les champs automatiquement

    Mille mercis
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Membre régulier Avatar de MikeV
    Profil pro
    Webmaster
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Points : 86
    Points
    86
    Par défaut
    Il serait beaucoup plus facile de faire une seule table "dossier_root" par exemple puisque tous tes titres de champs sont similaires. Tu n'aurais qu'à faire des update dans une seule table.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Pourquoi ne crées tu pas simplement une table fichier avec comme champ:
    id_fichier, chemin_fichier, commentaire_fichier.

    A chaque fois que tu rajoutes ou modifies un fichier physiquement sur le disque, tu lances un script qui te réindexe correctement le tout.

    en gros dans ta table, tu aurais;
    1,"/root/dossier1/fichier2","commentaires"
    2,"/root/dossier1/fichier3","commentaires"
    3,"/root/dossier1/dossier2/fichier3","commentaires"
    4,"/root/dossier1/fichier4","commentaires"

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Merci MikeV et Raidman pour vos idée. C'est vrai que c'est bien pensé de faire qu'une table. Dans ce cas j'aurais pas besoin de me préocuper a créé des bases si elle n'existe pas.

    1.Cependant je reste intérogé sur 2 chose. Raidman, tu as mentionné le mot "reindexé" est ce que c'est un terme donc = à update, ou c'est une commande qui compare ce qui existe ou pas.
    2. Es-ce que la commande update fait ceci:
    -fichier (table)
    -- nom_fichier ---- chemin ---- commentaire
    ---------------------------------------------------
    -- img11 ----- doss1 ---- comment
    -- img12 ----- doss2 ---- comment
    Admettons que j'ajoute une image "img13" dans mon dossier 2 (doss2) en plus de l'"img12" qui existe deja, dans le dossier et dans la base, la commande UPDATE va me généré un message d'erreur par ce que je n'aurais pas utiliser la commande INSERT pour l'"img13" ou il va ajouter "img13" dans les 3 champs (avec le chemin et le commentaire dans le champ correspondant, bien sure)

    Je crois que la commande UPDATE, suffit mais je ne suis pas sure

    Concernant le mot "reindexé" que tu a utilisé, voulais tu dire UPDATE ou y a il une commande qui reindex tout??

    Parce que c'est vrai que si je supprime un image de l'un de mes dossiers, ces dernières informations doivent aussi etre retirer de la base (si possible dynamiquement
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  5. #5
    Membre régulier Avatar de MikeV
    Profil pro
    Webmaster
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Points : 86
    Points
    86
    Par défaut
    Ca dépend de ce que tu veux faire:
    UPDATE : C'est pour modifier un enregistrement de ta table
    INSERT : C'est pour insérer un nouvel enregistrement.

    Pour ta table je te recommande de créer 3 champs dossier + fichier + commentaire

    ne créer pas un champs chemin pour rien, car avec dossier et fichier tu as tout ce qui te faut pour 'générer' ton chemin d'accès.

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    oui, mais si j'utilise UPDATE pour modifier un enregistrement qui n'existe pas, va-t-il le créer?
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Comment pourrais-je créé une condition sur le contenu d'une base de donnée:
    Si enregistrement n'existe pas, crée une enregistrement, si mets a jour
    Es-ce que c'est bien de jouer sur un message d'erreur?
    Par exemple, si j'utilise la commande UPDATE et que l'enregistrement n'existe pas, il va me générer un message d'erreur. Je pourrais donc faire comme ceci, par exemple
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $update_files='UPDATE tb_files SET  fd_name="'.$files.'" fd_folder="'.$folder.'" fd_coment="" fd_updated_by="" fd_updated_date=""';
    	$ok=mysql_query($update_files);// or die('Erreur SQL! '.$update_files.'<br>'.mysql_error());
     
    if(!$ok){//on utilise la commande INSERT
    }else{echo 'lenregistrement a été exécuté';}

    Qu'en penser vous?
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  8. #8
    Membre régulier Avatar de MikeV
    Profil pro
    Webmaster
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Points : 86
    Points
    86
    Par défaut
    Salut,
    Il y a plein de façon de résoudre ton problème.
    Voici ce que je ferais dans ton cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    // ON VERIFIE SI LE FICHIER EST DANS LA TABLE
        $sql  = "SELECT COUNT(*) AS nbr FROM tb_files WHERE fd_folder = '".$folder." ";
        $res  = mysql_query($sql);
        $alors  = mysql_fetch_assoc($res);
     
    // FAIRE L'ACTION NÉCESSAIRE SELON LE RÉSULTAT
     
        if($alors['nbr'] == 0){
            $update_files='UPDATE tb_files SET  fd_name="'.$files.'" fd_folder="'.$folder.'" fd_coment="" fd_updated_by="" fd_updated_date=""';
    	mysql_query($update_files);// or die('Erreur SQL! '.$update_files.'<br>'.mysql_error());
        }else{
           $insert_files="INSERT INTO tb_files bla bla bla ";
    	mysql_query($insert_files);
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Ajouter des données dans une table vide
    Par othke dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/04/2010, 19h16
  2. [MySQL] Insérer des données dans une table avec Foreach
    Par Gogad dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/04/2010, 08h53
  3. Réponses: 2
    Dernier message: 28/09/2009, 13h46
  4. Access/VBA Ajouter des données dans une table !
    Par vto59 dans le forum VBA Access
    Réponses: 10
    Dernier message: 04/06/2009, 15h18
  5. Ajouter des champ dans une table avec une procedure sp
    Par Abdou1 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/07/2006, 18h32

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