News - Formulaire : modification ou non de l'image

Petit nouveau ! | 3 Messages

16 juin 2008, 16:14

Bonjour,

Je suis un debutant en PHP mais je suis en train de mettre en place un back office pour la creation de newsletter.
Une page "ajout" permet de rentrer mes news dans une base Mysql avec :
- Titre
- Date sortie
- Texte
- Image

Puis j'arrive sur une page admin, qui me permet de modifier mes news si besoin.

Mon Probleme :

- J'ai reussi à mettre en place un upload d'image avec insertion dans une table du nom de mon fichier image.
>>>> Je cherche à pouvoir via ma page admin (qui contient une suite de formulaires... un formulaire par news contenant titre, date de sortie....), modifier mon image si besoin.
J'aimerais pouvoir lorsque je valide le formulaire que
1) si je n'ai rien rentré dans mon onglet "file" que le fichier reste le meme
2) Si j'ai choisi une nouvelle image qu'il refasse tout le processus de "verifier taille, nom, format puis upload et modification du nom de l'image dans ma table".

Car pour le moment, il refuse que je ne choisisse pas un fichier.....

Je ne sais pas si je suis tres clair.....J'aimerais juste le nom de la fonction qui pourrait etre :
Si if ($_FILES['photo'] est vide alors garder la valeur dans la table mais si un fichier à été choisi repartir dans le processus d'upload avec verification).

Si je ne suis pas clair, dite smoi de quoi vous avez besoin.....

Merci bcp !

Michael

Eléphant du PHP | 74 Messages

16 juin 2008, 17:58

Quelque chose du genre

if( isset($_FILES['photo']) && ( $_FILES['photo'] ! ='' ) )
{
   //processus d'upload avec verification
}


Petit nouveau ! | 3 Messages

16 juin 2008, 18:10

Bon ca fait 4h00 que je suis decu.... et je pete un cable....

J'ai reussi à faire en sorte que si on ne choisit pas une nouvelle photo, elle reste à sa place mais le reste du formulaire peut etre modifié.... Il va trouver le nom grace à une variable hidden dans mon formulaire "$oldphoto".

Par contre, je n'arrive pas du tout à remplacer la photo.....

Voilà mon code. Quelqu'un peut il me dire où est l'erreur ?
Je ne comprends vraiment pas.....

Merci de ta reponse.
<?
if (empty($_FILES['photo'])) { 
$newphoto = $_POST['oldphoto']; 
$query = "UPDATE news SET jour='$jour',mois='$mois',annee='$annee',titre='$titre',source='$source',texte='$texte',lien='$lien',photo='$newphoto' WHERE id=$id";
mysql_query($query,$connexion);} 

if(isset($_FILES['photo'])) // Formulaire envoyé
    {
        
        // getimagesize arrive a  traiter le fichier ?
        if(!$getimagesize = getimagesize($_FILES['photo']['tmp_name'])) {
            $erreurs[] = "Le fichier n'est pas une image valide.";
        }
        // on verifie le type de l'image
        if( (!in_array( get_extension($_FILES['photo']['name']), $extensions_ok ))
           or (!in_array($getimagesize[2], $typeimages_ok )))
        {
            foreach($extensions_ok as $text) { $extensions_string .= $text.', '; }
            $erreurs[] = 'Veuillez sélectionner un fichier de type '.substr($extensions_string, 0, -2).' !';
        }
        // on verifie le poids de l'image
        if( file_exists($_FILES['photo']['tmp_name']) 
                  and filesize($_FILES['photo']['tmp_name']) > $taille_max)
        {
            $erreurs[] = "Votre fichier doit faire moins de $taille_ko Ko !";
        }

        // copie du fichier si aucune erreur !
        if(!isset($erreurs) or empty($erreurs))
        {
            $dest_fichier = basename($_FILES['photo']['name']);
            $dest_fichier = strtr($dest_fichier, 'ÀÃ

Eléphant du PHP | 74 Messages

16 juin 2008, 21:13

Tu as il me semble une accolade en trop à la fin (après le else)

$dest_dossier n'a pas l'air défini ( il manque une partie du code ? )

Le else de fin me semble étrange.

if(isset($_FILES['photo'])) // S'il y a une photo dans le formulaire....
{
//code
}
else //sinon l'erreur vérifier les droits du dossier ? soit j'ai mal regarder soit il y a un souci dans l'interpretation de l'erreur...
{
$erreurs[] = "Impossible d'uploader le fichier.<br />Veuillez vérifier que le dossier ".$dest_dossier." existe avec un chmod 755 (ou 777).";
}