Adresse relative URL d'images dans une BDD

Bonjour,
je dispose d'une base de données MYSQL, je fais de la progammation avec php. Lorsque je veux enregistrer un nouvel article sur ma BDD dans la table articles (id_article, libelle, prix) je dois y associer une image à l'article (image est enregistrée dans un dossier IMAGES).

Mon problème est comment faire pour mettre en liaison entre une image et un article qui lui est propre. Pour plus de compréhension voici mes codes:
ajout.php
<center>
	<form action="ajouter.php" method="post" enctype="multipart/form-data">
      <table width="552" height="43">
		<tr>
			<td width="726" height="31" align="center">
				<font size=4 face="comic sans ms">
	   				Ajout Nouvel Article
				</font>
			</td>
		</tr>
	  </table>	
	  <p>&nbsp;</p>
    <table width="88%" height="276">
	   <tr>
		  <td  height="61" align="right">
		    Libelle Article
		  </td>
		  <td align="center">
		    <input type="text" size="30" name="libelle">
		  </td>
		</tr>
		<tr>
		  <td  height="61" align="right">
		    Prix Article
		  </td>
		  <td align="center">
		    <input type="text" size="30" name="prix">
		  </td>
		</tr> 
		<tr>
		  <td height="61" align="right">
		     Photo de l'Article		  </td>
		  <td align="center">
		     <input type="file" name="fichier_a_charger" />
		  </td>
		</tr> 
		<tr>
		 <td height="84" colspan="2" align="center">
		       <input type="submit" value="AJOUTER UN ARTICLE">
		 </td>
		</tr> 	    
</table>	
 </form>
</center>


Et ajouter.php
<?php
//Si au moins une donnée n'est pas transmise...
if (empty($_POST['libelle']) || empty($_POST['prix'])){
		echo 'Tous les champs ne sont pas remplis ';
		die('<a href="ajout.php">RETOUR au formulaire d\'ajout </a>');
}
else{
//Récupération des données transmises
$libelle=$_POST['libelle'];
$prix=$_POST['prix'];


  			/*Enregistrement des données sur la BDD */
//sur-quoter les données transmises avant insertion
	if(!get_magic_quotes_gpc()){
		$libelle=addslashes($libelle);
		$prix=addslashes($prix);
		}
		
			
//connexion au serveur Mysql et sélection de la BDD
   require('Connections/link.php');
//Formatage de la requête
   $req="insert into articles values ('','$libelle','$prix')";
//Exécution de la requête
   $rslt=mysql_query($req) or die(mysql_error());
//affichage des résultats, pour savoir si l'insertion a marchée:
  echo'<script>alert("Ajout Reussi")</script>';  
//Redirection vers articles.php
 header ("location: articles.php");
  }

?>


8 réponses

  1. je trouve pas ton formulaire pour l'envoi d'image sur le site :/

    c'est parce qu'il est tard et que je suis miro ?

    en gros, tu fais

    <?php

    $nom = rand()."[extention]"
    [sauvegarde de l'image "$nom" dans le dossier IMAGES]
    [envoie vers le champ "id_article" de $nom]
    ?>
    0
    1. mais sur ton code ne vois pas le chemin qui permet d'enregistrer l'image sur le dossier IMAGES
      0
      1. ben non, je n'ai pas ton code pour enregistrer l'image :/

        donne moi le code et je te l'adapte si tu veux ;)
        0
        1. voici le script que l'on doit exécuter lorsqu'on remplit le formulaire
          le dossier IMAGES se trouve dans C:\wamp\www\appli\IMAGES
          <?php
          //Si au moins une donnée n'est pas transmise...
          if (empty($_POST['libelle']) || empty($_POST['prix']) || empty($_FILES['fichier_a_charger']['name'])){
          		echo 'Tous les champs ne sont pas remplis ';
          		die('<a href="ajout.php">RETOUR au formulaire d\'ajout </a>');
          }
          else{
          //Récupération des données transmises
          $libelle=$_POST['libelle'];
          $prix=$_POST['prix'];
          
          
            			/*Enregistrement des données sur la BDD */
          //sur-quoter les données transmises avant insertion
          	if(!get_magic_quotes_gpc()){
          		$libelle=addslashes($libelle);
          		$prix=addslashes($prix);
          		}
          		
          			
          //connexion au serveur Mysql et sélection de la BDD
             require('Connections/link.php');
          //Formatage de la requête
             $req="insert into articles values ('','$libelle','$prix')";
          //Exécution de la requête
             $rslt=mysql_query($req) or die(mysql_error());
          //affichage des résultats, pour savoir si l'insertion a marchée:
            echo'<script>alert("Ajout Reussi")</script>';  
          //Redirection vers articles.php
           header ("location: articles.php");
            }
          
          ?>
          
          

          Sur ce script il manque téléchargement de l'image et son lien avec un article qui lui est propre
          0
          1. donc en fait, c'est le téléchargement de l'image qu'il manque...

            point sur lequel je ne peux t'aider :/
            0
        2. <?php
          $destination = 'appli/images'.$_FILES['fichier_a_charger']['name'];
          if(move_uploaded_file($_FILES['fichier']['tmp_name'], $destination ) ) {
          echo 'fichier bien envoyé';
          
          }
          ?>
          


          Avec ce script j'arrive à télécharger l'image sur C:\wamp\www\appli\IMAGES mais reste le lien entre l'image et l'article
          0
          1. <?php

            $destination = 'appli/images'.$_FILES['fichier_a_charger']['name'];
            $nom = $_FILES['name']
            if(move_uploaded_file($_FILES['fichier']['tmp_name'], $destination ) ) {
            echo 'fichier bien envoyé';
            }
            [requete SQL écrivant $nom dans la BDD]
            ?>

            ça devrait marcher je pense ;)
            0
            1. maintenant comment vérifier qu'il y a une synchronisation entre l'article et l'image? Quelle est la requête qui permet de le vérifier?
              0
              1. ben l'image de l'article est celle dans la BDD...
                0
            2. mais quand j'essaie d'afficher à travers la requête select je n'obtiens pas d'image
              0