transfert d'images dans une bdd

transfert d'images dans une bdd - PHP - Programmation

Marsh Posté le 25-03-2005 à 03:52:55    

Bonjour à toutes et à tous,  
 
j'ai construit un site qui contient un partie administrateur où la personne peut télécharger des images avec des informations. Tout se passe bien à l'exception des photos qui ne se transfert pas. Voici mon script :  
 
PHP:  
<?php  
if ($ajoutArticle=="ok" )  
{  
    //sélection de la base de données  
    mysql_select_db($database_ConnexionFit, $ConnexionFit);  
    //vérification si la reference existe déjà dans la base  
    $query_rsReference = "SELECT reference FROM articles WHERE reference = '$reference' ";  
    $rsReference = mysql_query($query_rsReference, $ConnexionFit) or die(mysql_error());  
    $totalRows_rsReference = mysql_num_rows($rsReference);  
    //si la reference n'existe pas encore alors :  
    if ($totalRows_rsReference==0)  
        {  
            //test si un fichier photo est sélectionné sinon photo0 par défaut  
            if ($photosm['photosm']['size']!=0) $photosm_name=$photosm['photosm']['name']; else $photosm_name="photo0.jpg";  
            if ($photobg['photobg']['size']!=0) $photobg_name=$photobg['photobg']['name']; else $photobg_name="photo0.jpg";  
            //enregistrement dans la base du nouvel article  
            mysql_select_db($database_ConnexionFit, $ConnexionFit);  
            $insertArticles = "INSERT INTO articles (reference, titre, description, prix, rubriqueID, ssrubriqueID, photosm, photobg) VALUES ('$reference', '$titre', '$description', '$prix', '$rubriqueID', '$ssrubriqueID', '$photosm_name', '$photobg_name')";  
            mysql_query($insertArticles, $ConnexionFit) or die(mysql_error());  
            //----Gestion de la photo de l'article si elle a était modifiée  
            if ($photosm['photosm']['size']!=0)  
                {  
            $repertoiresm="../photosm/";  
            move_uploaded_file($photosm['photosm']['tmp_name'],$repertoiresm.$photosm['photosm']['name']);  
                }  
            elseif ($photobg['photobg']['size']!=0)  
                {  
            $repertoirebg="../photobg/";  
            move_uploaded_file($photobg['photobg']['tmp_name'],$repertoirebg.$photobg['photobg']['name']);  
                }  
 
            //redirection vers la page articles.php  
           header("Location: articles.php" );      
        }//fin du if  
    //si la reference existe déjà > message d'erreur  
    else  
        {  
        $erreur_reference=1;  
        }  
}  
?>  
 
 
Si quelqu'un pouvait m'aider je lui serais vraiment reconnaissante car cela fait un moment que j'essaie de comprendre mon erreur...  
Merci beaucoup  
 
Chry§

Reply

Marsh Posté le 25-03-2005 à 03:52:55   

Reply

Marsh Posté le 25-03-2005 à 04:56:35    

fait une gestion d erreur au niveau des upload file pour savoir ou ca coice


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 26-03-2005 à 14:47:30    

Merci de me répondre esox_ch, mais je ne sais pas comment faire ce que tu me demandes... Ce que je peux te dire c'est que tout marche, tout va dans la base de données mais le transfert des images ne fonctionne pas... Les images n'arrivent pas dans la bdd et donc ce sont les images par défaut (photo0.jpg) qui s'affichent.

Reply

Marsh Posté le 26-03-2005 à 20:56:55    

a premiere vu tu utilises un formulaire d'upload de deux images
pour récupérer le contenu des images uploadées :  
dans ton formulaire tu dois avoir quelque chose du style:  
<form method="post" enctype="multipart/form-data" action="page_de_destination.php">
<input type="file" name="photosm">
<input type="file" name="photobg">
</form>
ensuite, tu recuperes les deux fichiers par :
$photosm = $_FILES['photosm'];
$photosg = $_FILES['photobg'];
 
t'auras directement accès au propriétés d'un fichier par $photosm['la_propriete'];
pour eviter toute erreur possible, mets
error_reporting(E_ALL), qui t'avertira de toute erreur eventuelle
 
pour tes chemins de fichiers lors de leur copie dans le repertoire de destination, regarde s'il n'y aurait pas de / oublié quelque part ca arrive :)


Message édité par Profil supprimé le 26-03-2005 à 20:58:38
Reply

Marsh Posté le 26-03-2005 à 21:39:30    

Merci Spike pour ta réponse, j'ai changé mon code. Voici le changement :
<?php  
if ($ajoutArticle=="ok" )
{
 //sélection de la base de données
 mysql_select_db($database_ConnexionFit, $ConnexionFit);
 //vérification si la reference existe déjà dans la base
 $query_rsReference = "SELECT reference FROM articles WHERE reference = '$reference' ";
 $rsReference = mysql_query($query_rsReference, $ConnexionFit) or die(mysql_error());
 $totalRows_rsReference = mysql_num_rows($rsReference);
 //si la reference n'existe pas encore alors :  
 if ($totalRows_rsReference==0)
  {
   //test si un fichier photo est sélectionné sinon photo0 par défaut
            if ($_FILES['photosm']['size']!=0) $photosm_name=$_FILES['photosm']['name']; else $photosm_name="photo0.jpg";  
            if ($_FILES['photobg']['size']!=0) $photobg_name=$_FILES['photobg']['name']; else $photobg_name="photo0.jpg";  
   //enregistrement dans la base du nouvel article
   mysql_select_db($database_ConnexionFit, $ConnexionFit);
   $insertArticles = "INSERT INTO articles (reference, titre, description, prix, rubriqueID, ssrubriqueID, photosm, photobg) VALUES ('$reference', '$titre', '$description', '$prix', '$rubriqueID', '$ssrubriqueID', '$photosm_name', '$photobg_name')";
   mysql_query($insertArticles, $ConnexionFit) or die(mysql_error());  
   //----Gestion de la photo de l'article si elle a était modifiée
            if ($_FILES['photosm']['size']!=0)
    {
   $repertoiresm="../photosm/";
   move_uploaded_file($_FILES['photosm']['tmp_name'],$repertoiresm.$_FILES['photosm']['name']);
                }
      elseif ($_FILES['photobg']['size']!=0)
    {
   $repertoirebg="../photobg/";
   move_uploaded_file($_FILES['photobg']['tmp_name'],$repertoirebg.$_FILES['photobg']['name']);
                }
//redirection vers la page articles.php  
header("Location: articles.php" );  
}//fin du if  
//si la reference existe déjà > message d'erreur
else
{
$erreur_reference=1;
}
}
?>
 
Ce qui est dingue c'est qu'en local il n'y a que la photosm qui se copie et non la photogm. De plus, l'image photosm s'affiche correctement du côté administrateur et non du côté public ??? Incompréhensible... Je pense que pour les deux images je suis obligée de faire deux blocs distincts if et il faut que j'enlève le elseif. Quand je fais le test non en local, rien ne marche, aucune photos ne s'affichent, même celle que j'ai eu en local du côté administrateur... POURQUOI ??? Je tiens à préciser que je ne veux pas utiliser de FTP... Je me suis téléchargée 'MonExplorateurFTP' mais je vais t'avouer que je n'y comprends pas grand chose... Cela fait 2 mois que j'utilise Php que j'ai appris seule et d'avoir des coups mains est très réconfortant pour moi.
Si tu as une solution je te remercie d'avance.  
Chry§

Reply

Marsh Posté le 27-03-2005 à 11:21:28    

Donc,  
La strucutre if elseif marche comme ca :
If(ceci marche) => Faire ca
Elseif(ceci marche ET celui d'avant non) => Faire ca
 
Donc dans ton cas c'est normal que si le IF marche, le elseif soit pas considéré, il faut en effet faire 2 if distinct :D
 
Sur ton hebergeur il se peut que se soit des problemes de permissions (controle que tu aies le droit d'ecrire un fichier dans ../photodb/ (il faut que tout les utilisateurs aient l'attribut w)), et pour le fait que ca s'affiche chez l'admin et pas chez le client,je crois que l'erreur esta rechercher dans le code client, il y a pas de raison autrement


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 27-03-2005 à 18:25:57    

Salut esox_ch,  
Effectivement, afin de copier les 2 images dans leur dossier respectif, j'ai fait :  
 
            if ($_FILES['photosm']['size']!=0 AND $_FILES['photobg']['size']!=0)
    {
   $repertoiresm="../photosm/";
   move_uploaded_file($_FILES['photosm']['tmp_name'],$repertoiresm.$_FILES['photosm']['name']);
   $repertoirebg="../photobg/";
   move_uploaded_file($_FILES['photobg']['tmp_name'],$repertoirebg.$_FILES['photobg']['name']);
                }
//redirection vers la page articles.php  
header("Location: articles.php" );  
}//fin du if  
 
Et là ça marche, en revanche, les images s'affichent bien du côté admi dans la page 'modif' tandis que du côté client je ne les vois pas. Pourtant en faisant un clic droit 'Propriétés', je vois les bons chemins pour ces photos... Et puis les autres articles que j'ai mis au départ dans la bdd s'affichent correctement...
Je sais que je suis ennuyante avec mon problème et je vous remercie de votre patience. Et puis ça servira sûrement à quelqu'un car en ce qui concerne les transferts de fichiers, ce n'est pas évident....
Merci...
Chry§

Reply

Marsh Posté le 28-03-2005 à 11:24:50    

On peut avoir une page de test client pour voir ou est-ce que ca plante ? :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 28-03-2005 à 14:16:02    

Houra !!!! J'y ai passé du temps mais j'ai trouvé... c'est concernant le 'CHMOD'. J'ai eu du mal à trouver les infos nécessaires pour comprendre mais c'est enfin réussi. Merci pour ta patience... ça fait seulement 2 mois que je fais du Php et je dois t'avouer que d'entrée de jeu je ne me suis pas attaquée au plus facile... Mais c'est trop super !!!
Merci encore...

Reply

Marsh Posté le 28-03-2005 à 15:39:19    

Chmod etant change mod, etant la commande pour changer les permissions d'un fichier/directory (voir mon post sur les permissions de l'hebergeur :D ). Parcontre ca fait plaisir de voir qqn avec ton esprit, c'est le genre de topic que j'aime bien lire et que j'aime bien aider :D. Continue comme ca,et si tu as un os, esite pas a me mailer ou revenir ici ;)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 28-03-2005 à 15:39:19   

Reply

Marsh Posté le 31-03-2005 à 01:26:16    

Heuuuhhh et bien justement... j'ai fait une page qui permet de modifier les photos d'un l'article. Je me suis dit que maintenant que je sais les insérer, il me serait facile de les modifier... eh bien non... J'ai donc repris le script de la page 'ajoutArticle' et je l'ai modifié pour l'adapter à la page 'modifArticle', ce qui donne :
<?php  
if ($modifPhoto=="ok" )
{
    if ($_FILES['photosm']['size']!=0) $photosm_name=$_FILES['photosm']['name']; else $photosm_name="photo0.jpg";  
    if ($_FILES['photobg']['size']!=0) $photobg_name=$_FILES['photobg']['name']; else $photobg_name="photo0.jpg";  
 //enregistrement dans la base du nouvel article
 mysql_select_db($database_ConnexionFit, $ConnexionFit);
 $updateArticle="UPDATE articles SET (reference='$reference', photosm='$photosm_name', photobg='$photobg_name')";
 $updateArticle.="WHERE reference='$reference'";
 mysql_query($updateArticle, $ConnexionFit) or die(mysql_error());
 //----Gestion de la photo de l'article si elle a était modifiée
            if ($_FILES['photosm']['size']!=0 AND $_FILES['photobg']['size']!=0)
    {
   $repertoiresm="../photosm/";
   move_uploaded_file($_FILES['photosm']['tmp_name'],$repertoiresm.$_FILES['photosm']['name']);
   $repertoirebg="../photobg/";
   move_uploaded_file($_FILES['photobg']['tmp_name'],$repertoirebg.$_FILES['photobg']['name']);
                }
header("Location: articles.php" );  
}
?>
 
Je récupère bien la référence et la photosm de l'article sélectionné, mais les photosm et photobg ne se changent pas, et donc ne se transfert pas au serveur. J'ai essayé plusieurs trucs et je ne vois pas où est mon erreur...
D'avance merci de ton aide.
Chry§

Reply

Marsh Posté le 07-04-2005 à 20:52:29    

Les erreurs c'est quoi?
 
A part ça ta requete me semble bizard


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-04-2005 à 23:40:25    

En fait, en haut du message, la page concernait une insertion de nouvelles images du poste de l'administrateur au serveur. Maintenant que ça marche, j'essaie de faire une page qui me permettrait de modifier les images en les insérant avec leurs noms. J'ai essayé plusieurs trucs et je n'y arrive pas...sniff... Je n'arrive pas à trouvé mon erreur, les images ne se changent pas (les images sm et bg).
Je te remercie beaucoup pour ta patience... J'essaye encore de mon côté...
A bientôt et mercie...mercie...
Chry§

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed