Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1300 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  transfert d'images dans une bdd

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

transfert d'images dans une bdd

n°1024404
Chryss
Posté le 25-03-2005 à 03:52:55  profilanswer
 

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§

mood
Publicité
Posté le 25-03-2005 à 03:52:55  profilanswer
 

n°1024406
esox_ch
Posté le 25-03-2005 à 04:56:35  profilanswer
 

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
n°1026132
Chryss
Posté le 26-03-2005 à 14:47:30  profilanswer
 

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.

n°1026298
Profil sup​primé
Posté le 26-03-2005 à 20:56:55  answer
 

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
n°1026335
Chryss
Posté le 26-03-2005 à 21:39:30  profilanswer
 

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§

n°1026656
esox_ch
Posté le 27-03-2005 à 11:21:28  profilanswer
 

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
n°1026838
Chryss
Posté le 27-03-2005 à 18:25:57  profilanswer
 

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§

n°1027172
esox_ch
Posté le 28-03-2005 à 11:24:50  profilanswer
 

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
n°1027315
Chryss
Posté le 28-03-2005 à 14:16:02  profilanswer
 

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...

n°1027366
esox_ch
Posté le 28-03-2005 à 15:39:19  profilanswer
 

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
mood
Publicité
Posté le 28-03-2005 à 15:39:19  profilanswer
 

n°1030633
Chryss
Posté le 31-03-2005 à 01:26:16  profilanswer
 

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§

n°1039358
esox_ch
Posté le 07-04-2005 à 20:52:29  profilanswer
 

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
n°1046798
Chryss
Posté le 13-04-2005 à 23:40:25  profilanswer
 

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§


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  transfert d'images dans une bdd

 

Sujets relatifs
images de fonds...Transfert ftp
[C++] Défilement d'images avec CreateProcess ou ShellExecutecours d'algorithmie sur les images (rotation, pivotement, effets diver
[CSS] Alignement vertical d'un menu d'images?vba : excel, supprimer des images
Problème de chargement d'images sur Rollover avec IEQuel type transfert choisir SSH FTP HTTP ??
Transfert d'images via un socket ?[web] Transfert d'images....
Plus de sujets relatifs à : transfert d'images dans une bdd


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR