Update et upload

Résolu
cs_winnie39 Messages postés 45 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 4 mai 2011 - 5 mars 2009 à 13:53
cs_winnie39 Messages postés 45 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 4 mai 2011 - 16 mars 2009 à 17:42
Bonjour à tous,

Voila, a force de recherche et de poste (notamment ici),
j' ai pratiquement terminé le code que je désire.

Voici en quoi il consiste :
Je récupère de ma BDD des informations sur un produits, ainsi que un certain nombre de photo (5) dont le chemin est stocké dans la BDD.
Le script est là pour effectué des modification sur cette fiche.

Tout fonctionne, je peux tout modifier, y compris les photos...

SEULEMENT

si un champs d' upload est vide, le chemin est remplacé par un chemin vide...
comment faire pour récupérer ceux déja présent si l' on ne désire pas modifier une ou plusieurs photo???

Voici mon code tel qu' il est actuellement

<?php
include('connect.php');

$id_produit = $_POST['id_produit'];
$titre = mysql_escape_string($_POST['titre']);
$descriptif = mysql_escape_string($_POST['descriptif']);
$bonne_affaire = mysql_escape_string($_POST['bonne_affaire']);
$prix = mysql_escape_string($_POST['prix']);
$prix_promo = mysql_escape_string($_POST['prix_promo']);
mysql_query("UPDATE produit SET `titre` '$titre',`descriptif` '$descriptif',`prix` = '$prix',`prix_promo` = '$prix_promo' WHERE id_produit ='$id_produit'") or die (mysql_error());  
 

for ($i = 1 ; $i < 6 ; $i++)
{

if($_FILES['fichier'.$i]['name']!='')
                                                {
    $dossier = 'img/bonnes_affaires/';
    $fichier = basename($_FILES['fichier'.$i]['name']);
    $taille_maxi = 200000;
    $taille = filesize($_FILES['fichier'.$i]['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['fichier'.$i]['name'], '.');
  
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
        $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...';
    }
    if(($taille)>$taille_maxi)
    {
        $erreur = 'Le fichier est trop gros...';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
        //formatage du nom (suppression des accents, remplacements des espaces par "-")
        $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
        $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
        if(move_uploaded_file($_FILES['fichier'.$i]['tmp_name'], $dossier . $fichier)) //correct si la fonction renvoie TRUE
        {
            echo 'Upload effectué avec succès !';
            $chemin = 'chemin'.$i;
            ${$chemin} = $dossier.$fichier;
        }
        else //sinon, cas où la fonction renvoie FALSE
        {
            echo 'Echec de l\'upload !';
        }
    }
    else
    {
        echo $erreur;
    }
}}

echo $chemin1;
mysql_query("UPDATE produit SET `img_photo1`='$chemin1', `img_photo2`='$chemin2', `img_photo3`='$chemin3', `img_photo4`='$chemin4', `img_photo5`='$chemin5' WHERE id_produit ='$id_produit'") or die (mysql_error());
//   header('Location: accueil.php?contenu=bonnes_affaires_tmp');

?>

Si quelqu' un a une idée, je suis preneur
 

Il vaut mieux une bière dans une main que deux n' importe quoi d' autre

2 réponses

jreaux62 Messages postés 195 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 octobre 2011 32
10 mars 2009 à 23:37
Voir (MONFICHIER_TRAITER.php
) dans :
http://www.phpcs.com/tutoriaux/PHP-REDIMENSIONNER-IMAGE-PICTO-APRES-UPLOAD_881.aspx

En clair :
recuperer les NOMS des images anciennes contenues dans la
DB (au niveau du formulaire : voir MONFICHIER_FORM.php
) :
<?php echo $val['PHOTO1']; ?>
">
.........

Et au niveau du traitement (dans la boucle) :
if($_FILES['fichier'.$i]['name']!='') {
.... // (traitement de l'image uploadee)
} else {
.... // (on garde le nom de l'ancienne image)
$photo = $_POST['PHOTO'.$i.'avant'];

}
.... // enfin enregistrement dans la BD

Ou mieux :
faire dans la boucle l'enregistrement de la photo uniquement si uploadee :
if($_FILES['fichier'.$i]['name']!='') {
.... // (traitement de l'image uploadee)
.... // enregistrement du NOM de l'image uploadee dans la BD
}
3
cs_winnie39 Messages postés 45 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 4 mai 2011
16 mars 2009 à 17:42
Merci beaucoup, après étude minutieuse de ton tuto et de ton post, je suis finalement arrivé à une solution qui tiens la route,

La voici et encore merci  jreaux62:

<?php
include('connect.php');

$id_produit = $_POST['id_produit'];
$titre = mysql_escape_string($_POST['titre']);
$descriptif = mysql_escape_string($_POST['descriptif']);
$bonne_affaire = mysql_escape_string($_POST['bonne_affaire']);
$prix = mysql_escape_string($_POST['prix']);
$prix_promo = mysql_escape_string($_POST['prix_promo']);

$chemin1= $_POST['PHOTO1avant'];
$chemin2 = $_POST['PHOTO2avant'];
$chemin3 = $_POST['PHOTO3avant'];
$chemin4 = $_POST['PHOTO4avant'];
$chemin5 = $_POST['PHOTO5avant'];

echo $chemin1;
echo'
';
echo $chemin2;
echo'
';
echo $chemin3;
echo'
';
echo $chemin4;
echo'
';
echo $chemin5;
echo'
';
mysql_query("UPDATE produit SET `titre` '$titre',`descriptif` '$descriptif',`prix` = '$prix',`prix_promo` = '$prix_promo' WHERE id_produit ='$id_produit'") or die (mysql_error());  
 

for ($i = 1 ; $i < 6 ; $i++)
{

if($_FILES['fichier'.$i]['name']!='')
                                                {
    $dossier = 'img/bonnes_affaires/';
    $fichier = basename($_FILES['fichier'.$i]['name']);
    $taille_maxi = 200000;
    $taille = filesize($_FILES['fichier'.$i]['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['fichier'.$i]['name'], '.');
  
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
        $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...';
    }
    if(($taille)>$taille_maxi)
    {
        $erreur = 'Le fichier est trop gros...';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
        //formatage du nom (suppression des accents, remplacements des espaces par "-")
        $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
        $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
        if(move_uploaded_file($_FILES['fichier'.$i]['tmp_name'], $dossier . $fichier)) //correct si la fonction renvoie TRUE
        {
            echo 'Upload effectué avec succès !';
            $chemin = 'chemin'.$i;
            $final = $dossier.$fichier;
        }
        else //sinon, cas où la fonction renvoie FALSE
        {
            echo 'Echec de l\'upload !';
        }
    }
    else
    {
        echo $erreur;
    }
}
else{
$final = $_POST['PHOTO'.$i.'avant'];

}
echo'
';mysql_query("UPDATE produit SET `img_photo$i`'$final' WHERE id_produit'$id_produit'") or die (mysql_error());
echo $final;
}

//   header('Location: accueil.php?contenu=bonnes_affaires_tmp');

?>

Il vaut mieux une bière dans une main que deux n' importe quoi d' autre
0
Rejoignez-nous