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

Langage PHP Discussion :

Récupérer données d'une base par lien d'une image


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 9
    Points
    9
    Par défaut Récupérer données d'une base par lien d'une image
    Salut,

    J'ai une base de données avec les champs
    ID - TITLE - TEXT - URL

    je crée un menu en fonction de N entrées dans ma base comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $sql = "SELECT title, url FROM upload WHERE cat = 'cat1'";
    $result = mysql_query($sql);
    while($row = mysql_fetch_assoc($result))
    {
    	echo '<a href="crea.php?img='.$row["url"].'">'.$row["title"].'</a>';
    }
     
    ?>
    Comme vous le voyez, le lien sera du type :
    Et la page appelé -crea.php- comporte ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<?php echo $_GET["img"]; ?>" />
    Ma question est la suivante,
    Comment faire pour avoir des pages appelé par l'ID (qui est AUTO-INC dans ma base) et surtout, comment extraire et afficher les données qui sont liés à l'url (puisque mon image est stockée dans un fichier mais l'url dans la base donc quand j'affiche l'image la seule relation est l'url.)
    Merci, beaucoup, d'avance!

  2. #2
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Et bien tu appel ta page crea.php en fornissant l'id de l'image voulu, et dans ta page crea.php, tu lance une requête qui récupère l'adresse suivant l'id fournit.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Oui c'est ca!
    Mais....comment, justement, recuperer l'adresse suivant l'id fournit

    J'ai essayé pas mal de choses mais j'me retrouve la moitié du temps avec des error ou bien un Resource ID #8

    Merci pour la rapidité de ta reponse SirDarken

  4. #4
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Bonjour,

    SirDarken vous a peut-être comprit mais je crains que ce ne soit pas mon cas.

    Pourquoi ne pas utiliser un switch?

    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
    16
    17
    18
    19
    20
     
    	switch($_GET['id']) /* Selon la valeur de la variable choix, effectuer les cas suivants*/
    	{
    		case '1':
    			require("pageId1.php")
    			;
    			break
    			;
    		case '2':
    			require("pageId2")
    			;
    			break
    			;
    		default:
    			require("nonConnu.php")
    			;
    			break
    			;
    	}
    	;
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    C'est vrai que j'ai eu du mal a etre clair dans mon premier message, c'est pas evident

    Mon probleme de fond est de ne pas savoir comment afficher le tableau relatif à l'ID (comprenant le "title", "text" et "url") dans une page d'appel (en l'occurence crea.php)
    Grace à GET je reussi a creer une page crea.php avec un des champs de ma table mais je n'arrive pas a rajouter les infos complementaires relatives au champ utilisé (soit "url" soit "id" soit "title, etc.)

    J'espere avoir été un peu plus conci cette fois

  6. #6
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Deux solutions.

    Soit tu envoies toutes les données dans l'URL, soit tu refais une requête dans la page suivante avec pour ID celui récupéré dans l'URL.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Merci pour ta rapidité Deallyra,
    Pour la 1er solution, ca risque d'etre un peu lourd question url vu que j'ai des commentaires
    mais la deuxieme me parle bien plus; puis-je te demander un bout d'exemple ou un petit lien vers quelquechose de concret si tu as et s'il te plait
    Merci beaucoup!

  8. #8
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Voici un lien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $sql = "SELECT * FROM upload WHERE id = '".$_GET['id']."'";
    $result = mysql_query($sql);
    $row = mysql_fetch_assoc($result);
    echo $row[1];
    echo $row[2];
    echo $row[3];
    echo $row[4];
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    De l'humour de Dev. je présume

    J'vais essayer et j'te tiens au courant.
    Merci encore!

  10. #10
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Tu avais déjà tous les éléments à ta disposition
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  11. #11
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Ouhla je vais vous accuser de flood :p

    Alors vu que ta table dans la bdd à un champs ID, tu utilise ceci pour créer tes liens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    $sql = "SELECT title, url, id FROM upload WHERE cat = 'cat1'";
    $result = mysql_query($sql);
    while($row = mysql_fetch_assoc($result))
    {
    	echo '<a href="crea.php?img='.$row["id"].'">'.$row["title"].'</a>';
    }
     
    ?>
    En faite tu remplace $row["url"] par $row["id"] (que tu a préalablement decidé de mettre dans ta requête.

    Ensuite sur la page crea.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    $id = 0;
    if(isset($_GET['img'])
    {//Si on a recu un id
      $id = $_GET['img'];
    }
    $sql = "SELECT url FROM upload WHERE id = '$id'";
    $result = mysql_query($sql);
    while($row = mysql_fetch_assoc($result))
    {
    	echo '<img src="'.$row["url"].'"></img>';
    }
    ?>
    Bon ca c'est à la vas-vite, aprés tu peux déclarer des headers pour que ta page soit reconnu comme une image et non une page web, mais je ne maitrise pas le sujet.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup SirDarken!

    A part ca, j'ai une toute petite question, qui ne mérite pas un thread;

    Est ce que le DELETE fonctionne avec SELECT ?
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE SELECT url, title, text FROM table WHERE url = 'urlEnregistrement' LIMIT 1
    Merci merci !

  13. #13
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Houlà...

    Tu veux faire quoi?

    Supprimer un enregistrement?
    Remettre à zéro un enregistrement?

    La formule de base d'un DELETE est ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DELETE FROM "nom de table"
    WHERE {condition}
    Tu aurais du tester ta requête avant de la poster, tu aurais vu que c'est impossible.

    Si tu veux supprimer un enregistrement, fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM table WHERE url = '$uneURL'
    Ceci dit, tous les enregistrements ayant la même url, l'url $uneURL seront supprimés...

    Il vaut mieux faire une suppression à partir d'un id !
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    J'aurai du tester, effectivement, ca n'marche pas.

    Ma difficulté est au niveau de la combinaison de mon script de suppression d'image d'un dossier :

    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
    16
    17
    18
    19
    <?php 
    $adresse="creation/";
    if(isset($_GET['nom']))
         {
              $nom=''.$adresse.$_GET['nom'].'';
              unlink($nom);
              echo 'Le fichier "'.$_GET['nom'].'" a été effacé !<br>';
         }
    $dossier = opendir($adresse);
    while ($Fichier = readdir($dossier))
    {  
         if ($Fichier != "." && $Fichier != "..") 
         { 
              echo '<a href="filelist.php?nom='.$Fichier.'">Supprimer</a> => <a href='.$adresse.$Fichier.' class="screenshot" rel="'.$adresse.$Fichier.'" target="_blank">'.$Fichier.'</a><BR>';
     
         }
    }
    closedir($dossier);
    ?>
    et la commande de suppression de la ligne de donnée.

    Je vois pas comment j'peux recuperer l'ID de la photo que j'efface, sachant qu'avec mon script du dessus, je traite les fichiers directement dans le dossier sans passer par la BDD

    Aurais tu une idée Deallyra ?

  15. #15
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Au lieu de transmettre en get le nom du fichier, transmets donc son ID.

    Ainsi, au début de ton fichier, tu pourras faire un isset de l'ID récupéré en GET.

    S'il est fournit, tu supprimes le fichier avec ta requêtes sql et un peu de php derrière pour supprimer effectivement le fichier du serveur.
    Fin Si
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  16. #16
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Justement traite le de façon inverse.
    Tu trouve l'image par la base de donnée du moins son ID.

    Une fois l'ID connu tu stock son url, puis tu efface l'image ( unlink() ) , puis tu efface l'enregistrement dans la bdd.

    Je dirai à ta place ce que je ferai c'est une page en administration qui donne une liste de tes images avec 2 liens par image, le premier te servira à visualiser l'image, le second appelerai une page delete.php à qui tu transmet l'ID et qui ce chargerai d'effacer l'image et l'enregistrement dans la bdd.

    Exemple en reprenant ton code d'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    //Page affichant la liste d'image
    $sql = "SELECT title, url, id FROM upload WHERE cat = 'cat1'";
    $result = mysql_query($sql);
    while($row = mysql_fetch_assoc($result))
    {
    	echo 'Image : '.$row["titre"].' <a href="crea.php?img='.$row["id"].'">target="_blank">Visualiser-ici</a><a href="delete.php?img='.$row["id"].'">Effacer-ici</a><br>';
    }
     
    ?>
    Et ta page delete
    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
    16
     
    <?php
    $id = 0;
    if(isset($_GET['img'])
    {//Si on a recu un id
      $id = $_GET['img'];
    }
    $sql = "SELECT url FROM upload WHERE id = '$id'";
    $result = mysql_query($sql);
    while($row = mysql_fetch_assoc($result))
    {
    	unlink($row["url"]);
    	sql_del ="DELETE FROM upload WHERE id='$id'";
    	$result_del = mysql_query($sql_del);
    }
    ?>
    Bon là encore c'est fait à la vas-vite je pense pas qu'une boucle soit utile mais pour pas te perdre j'ai repris le code déja crée, mais grosso-modo l'idée est là.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Tu as posté ta réponse pendant que je trouvais ma solution, je t'en fais part
    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
    16
    17
    18
    19
    20
    21
    22
     
    <?php 
    $adresse="creation/";
    if(isset($_GET['nom']))
         {
              $nom=''.$adresse.$_GET['nom'].'';
              unlink($nom);
              echo 'Le fichier "'.$_GET['nom'].'" a été effacé !<br>';
    		  $requete = "DELETE FROM upload WHERE url = '".$nom."'";
              mysql_query($requete) or die("Erreur SQL :".mysql_error()); 
         }
    $dossier = opendir($adresse);
    while ($Fichier = readdir($dossier))
    {  
         if ($Fichier != "." && $Fichier != "..") 
         { 
              echo '<a href="filelist.php?nom='.$Fichier.'">Supprimer</a> => <a href='.$adresse.$Fichier.' class="screenshot" rel="'.$adresse.$Fichier.'" target="_blank">'.$Fichier.'</a><BR>';
     
         }
    }
    closedir($dossier);
    ?>
    Il est clair que j'vais eviter de toucher, car j'y suis depuis ce midi, alors que ta methode semble plus "safe"
    Qu'en penses tu ?

  18. #18
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    La meilleur méthode est celle que tu comprend le mieux, c'est un peu comme parler des couleurs ou de nourritures.

    J'ai pris ma solution car je le connais bien et que je m'en sert pour pas mals de choses autres que des images.

    Le principal étant que tu est résolu ton souci
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    J'vous remercie grandement, Deallyra et toi, pour vos precieux conseils.
    Merci beaucoup

    (sujet resolument resolu )

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

Discussions similaires

  1. convertir une base sqlserve .sdf vers une base sql server .mdf
    Par solitude dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/01/2010, 22h54
  2. Réponses: 2
    Dernier message: 27/01/2009, 15h50
  3. Réponses: 12
    Dernier message: 03/01/2009, 21h12
  4. Réponses: 3
    Dernier message: 22/10/2008, 17h55
  5. Maj d'une base 7.0 vers une base 2000
    Par ditter dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/11/2005, 17h05

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