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 :

Méthode Requête mysql


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2014
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Méthode Requête mysql
    Bonjour à tous,

    Pour mon site web j'ai mis dans une table mysql des liens. Champ de la table : id, fichier, chemin, désignation, page.
    ex :
    1, toto.pdf, rep1/sousrep1, toto, page1.html
    2, titi.pdf, rep1/sousrep2, titi, page2.html
    3, toto.pdf, rep1/sousrep1, toto, page2.html
    4, tata.pdf, rep1/sousrep3, tata, page3.html
    Dans chaque page je vais chercher mes liens sans problème.

    La base venant de plus en plus conséquente et multi-utilisateur, je cherche à faire une page de contrôle.
    - Ma page me sort les liens qui sont dans ma table mais dont les fichiers ne sont pas sur le serveur (lien brisé)
    - J'affiche les liens qui sont en double ou plus comme la lig 1 et 3 dans mon ex.
    - Je ne sais pas trop comment m'y prendre pour afficher les fichiers orphelins (fichier sur le serveur qui n'ont pas de lien dans la table)

    J'ai une idée mais mon nombre de requête va être nombreux. Avez-vous une méthode ? un exemple de code...

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonsoir

    1 - Comment faites-vous pour savoir qu'un lien est "mort" ?...

    2 -
    - J'affiche les liens qui sont en double ou plus comme la lig 1 et 3 dans mon ex.
    Non !... L'enregistement 1 indique page1.html et l'enregistrement 3 indique page2.html ???...

    Cdlt

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2014
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Pour les liens morts, je fais une requête qui me sort le chemin complet de chaque enregistrement et je vérifie que le fichier existe sur le serveur.

    Pour les doublons une requête qui compte le nombre de fois que le champ fichier est identique et en affichant que ceux supérieur à 1

    Pour l'instant pour mon problème je suis partie à calculer le nombre de fichier sur le serveur et faire la différence avec ceux dans la table. Mais comme la table comporte des double "normal" je suis bien obligé de les soustraire pour avoir un nombre de fichier sur le serveur qui ne sont pas liés.

    Pardon : doublon = chemin+fichier identique en occultant les liens.
    En les affichants dans ma page de contrôle, ça me permet de voir si la liaison dans des pages différentes est normal ou pas.

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Ce que je vais dire ne répond pas tout à fait votre question mais propose une nouvelle façon de voir les choses.

    Je suppose qu'il ne s'agit que de fichier à télécharger (en tout cas, cette façon de voir les choses correspond à votre exemple).
    Je suppose donc qu'il est très possible de passer par un fichier uniquement qui gère le téléchargement de ces fichiers (qui permettrait d'ailleurs d'ajouter un compteur de téléchargement ). Donnons-lui le doux nom de "download.php"

    Dans ce fichier, faites une vérification pour savoir si le fichier existe toujours bien sur le serveur, si ce n'est pas le cas, vous aurez soit pris le soin d'ajouter une variable dans l'URL pour savoir d'où provient la personne qui a cliqué, soit vous pouvez utiliser la variable globale $_SERVER['HTTP_REFERER'] qui vous donnera l'URL complète de la page d'où provient la personne.

    Dès lors, vous avez le fichier qui fait défaut ainsi que la page où le lien est défectueux.

    => plus besoin de CRON, votre base de données de deadlinks se construit automatiquement par les personnes qui souhaitent télécharger ce fichier.

    On pourrait également imaginer afficher un message avec un formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form method="post" action="download.php">
                <p>Nous allons bientôt remettre ce fichier en ligne.</p>
                <label for="email">Vous souhaitez en être averti ? Entrez votre adresse email ci-dessous</label>
                <input type="email" name="email" id="email" value="" />
                <button type="submit">Valider</button>
            </form>

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2014
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci darkstar123456 pour cette autre vision sur la partie que j'ai déjà codé. Je fais ma page de contrôle pour que l'utilisateur n'ait pas à avoir ce genre de désagrément. Quand vous êtes déjà dans de la recherche d'information tomber sur un lien mort est fortement désagréable.
    La partie que je recherche le plus s'est de n'avoir pas le lien affiché alors qu'un fichier existe et que l'un de mes éditeurs ne m'ai rien rentrée dans la base. Les fichiers qui sont proposé demande pas mal de temps à faire. Il serait dommage qu'ils reste coincés sur un serveur sans que personne ne puisse les voir pour une petite erreur humaine.

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    OK, alors pourquoi ne pas contrôler à la soumission du formulaire que l'utilisateur n'as pas oublié de donner le fichier ?

    De plus, il me parait peu optimisé d'avoir des doublons dans les fichiers : à la fois pour la base de données, et peut-être même que c'est le cas sur le disque !
    Je vous conseillerais d'avoir une table qui contient les chemins des fichiers et une autre qui lie l'ID d'un fichier à une page. Là, on pourrait avoir ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    files_to_page
    ====================
    pagename         | file_id
    ----------------------------
    mapage1.html    | 1
    mapage2.html    | 1
    mapage3.html    | 1
    mapage1.html    | 2
    mapage1.html    | 3
    Grâce à l'exemple ci-dessus, au lieu de vérifier 5 fichiers, vous n'en vérifiez que 3 !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2014
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Je reçois les fichiers des utilisateurs par mail ou ftp. Je corrige leurs noms (suppression des accents, majuscules etc...) et les poses sur les serveurs. Je renvoi le mail aux éditeurs pour qu'ils mettent leurs textes avec leurs liens. Les fichiers sont des pdf, xls, jpg etc... pas de php ou de html. Vu que j'utilise un CMS je donnais accès aux éditeurs pour qu'ils mettent leurs textes avec leurs liens. Vue leurs niveaux de compétence et certain une rigueur très moyenne je cherche à réduire le problème avant qu'il ne devienne ingérable pour moi. J'ai décidé de mettre dans chaqu'une des pages une balise qui fait l'appel à la base de donnée. Cette balise affiche tous les enregistrements en se basant sur la page en cours. Je ne détaille pas la structure exacte mais cette table à des tables liées pour éviter la redondance d'information (page, chemin, fichiers etc...). Je supprimerais l'accès aux CMS et leurs mettraient quelques pages de formulaires pour qu'ils remplissent la table. Je maitriserais aux maximums les entrées dans la base via mes formulaires. En faisant un simple comptage entre le nombre de lien unique dans la base et le nombre de fichier sur le serveur, je trouve 7.5% de fichiers orphelins. D'où ma recherche pour retrouver mes orphelins dans un premier temps et d'évité de les avoir à l'avenir.

    Désolé pour le pavé

  8. #8
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Aïe, malheureusement vu que vous ne pouvez pas vraiment contrôler les informations en amont et que vous avez déjà mis en place des tables équivalentes à ce que j'ai montré afin d'éviter les doublons... il n'y a pas vraiment d'autres solutions.

    Je suppose que vous utilisez une CRON pour vérifier les liens morts ? Si tel est le cas, je pense qu'il n'y a plus rien à faire.
    Il ne me reste qu'à vous conseiller de ne parcourir que la table qui recense les fichiers (sans jointure) afin d'avoir un nombre de lignes de résultat équivalent au nombre de fichier et non pas une multiplication due aux jointures fichiers/pages/utilisateurs. Le tout dans une CRON évidemment, qui passerait aux heures creuses (tous les jours à minuit OU une fois par semaine OU une fois par mois... suivant la régularité des ajouts)

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2014
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    J'avais peur de cette réponse dès le départ Je vais laisser un peu histoire de voir si quelqu'un a contourné le même problème en utilisant un autre principe.

    Je n'utilise pas le CRON pour ça pour le moment. J'ai simplement une page. Quand j'ai du temps je vais sur la page. Par contre si je suis obligé de faire une recherche de chaque fichier physique et voir si mes petits éditeurs n'ont rien zappés je vais effectivement faire un CRON en heure creuse pour le balayage dans la table.

Discussions similaires

  1. Requète MySQL >> Postgresql
    Par genova dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/08/2005, 09h05
  2. Requête MYSQL LIKE particulière
    Par TheDarkLewis dans le forum Requêtes
    Réponses: 9
    Dernier message: 05/12/2004, 15h50
  3. Arrêt de l'exécution d'une requête MySQL dans DELPHI.
    Par joelmarc dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/10/2004, 16h11
  4. surcharge de requête MySQL
    Par simoryl dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/06/2004, 10h43
  5. requête mysql sous php
    Par remi59 dans le forum Débuter
    Réponses: 9
    Dernier message: 03/07/2003, 10h39

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