Récupération un formulaire avec une photo : impossible

Résolu
chero9000kee Messages postés 10 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 19 juin 2011 - 14 juin 2011 à 13:00
chero9000kee Messages postés 10 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 19 juin 2011 - 14 juin 2011 à 22:04
Bonjour à tous et merci d'avance pour votre aide !!!!!!!!!!
Je tiens à préciser que je suis débutant, et que ça fait 3 jours que j’essaie d'envoyer (uploader) une Photo en local, j'arrive à le faire avec mon fichier upload.php mais pas en l'intégrant dans mon formulaire.
J'ai fait de nombreux test et recherche sur différents forum, mais je n'y arrive toujours pas.

J'ai un formulaire avec les variables : nom, adresse, CP, Ville etc ... et Photo que j'envoie dans une base MySQL.
Ça fonctionne bien, mais pas le transfert de la "Photo".

J'ai 2 fichiers

1). modifier.php

<?php
    echo '<form action= "modifier_valider.php?Photo='.$photo.'" method="POST" class="form" enctype="multipart/form-data" />';

echo "\";
echo \"----
\";
echo \"Num identifiant, \";
echo \"" . $id .", \";
echo \"\";
echo \"----
\";
echo \"Num, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"Adresse, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"CP, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"ville, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"Détail, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"Sindyc, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"Relance, \";
echo \"\"$date\", \";
echo \"\";
echo \"----
\";
echo \"Photo, \";
echo ', ';
echo \"\";
echo \"----
\";
echo \"Photo, \";
echo \"";
echo  ' 

';
//  $bien_Photo = $_GET['Photo'];
if (!isset($_GET['Photo'])) {
$idir = "photo/";
$tdir = "vignette/";
$twidth = "50";
$theight = "40";
} else  if (isset($_GET['photo']) && $_GET['photo'] == 'Photo') {
$url = $_FILES['Photo']['name'];
if ($_FILES['Photo']['type'] == "image/jpg" || $_FILES['Photo']['type'] == "image/jpeg" || $_FILES['Photo']['type'] == "image/pjpeg" ) {
$file_ext = strrchr($_FILES['Photo']['name'], '.');

$copy = copy($_FILES['Photo']['tmp_name'], "$idir" . $_FILES['Photo']['name']);
if ($copy) {
print ' L\'image a été téléchargé avec succès.
';   // A réussi à télécharger l'image
$simg = imagecreatefromjpeg("$idir" . $url);
$currwidth = imagesx($simg);
$currheight = imagesy($simg);
if ($currheight > $currwidth) {
$zoom = $twidth / $currheight;
$newheight = $theight;
$newwidth = $currwidth * $zoom;
} else {
$zoom = $twidth / $currwidth;
$newwidth = $twidth;
$newheight = $currheight * $zoom;
}
$dimg = imagecreate($newwidth, $newheight);
imagetruecolortopalette($simg, false, 256);
$palsize = ImageColorsTotal($simg);
for ($i = 0; $i < $palsize; $i++) {
$colors = ImageColorsForIndex($simg, $i);
ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']);
}
imagecopyresized($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight);
imagejpeg($dimg, "$tdir" . $url);
imagedestroy($simg);
imagedestroy($dimg);
print 'La vignette a été créé avec succès.';   // Redimensionnement réussi
} else {
print ' ERREUR: Impossible de télécharger l\'image. ';   // Message d'Erreur lors d'un Échec du transfert du fichier
}
} else {
print 'ERREUR: Mauvais Type de fichier (vérifiez que le format (l\'extention) soit en .jpg ou .jpeg ou .png . ';   // Message d'erreur si le Type de fichier est Mauvais
print $file_ext;
print '.';
}
}
echo "";

echo "----, Notes</td>
<textarea type='longtext' style='width:320px; height:150px;' heigth='30' width='50' cols='1' rows='1' value='$notes' name='notes'/></textarea>,
\";
echo \"----
\";
echo \"Actions, \";
echo \"";
echo '';
echo ", \";
echo \"\";
echo "
";

      		echo "";

    echo "</form>";

  ?>


1). modifier_valider.php

<?php
// ACCES A LA BASE DE DONNEE
include "config.php";

// Rendre la base de données foo, la base courante
 $db_selected  = mysql_select_db($sql_bd, $sqllink);
 if (!$db_selected) {
    die ('Impossible de sélectionner la base de données : ' . mysql_error());
    }
        $id= $_GET['id'];
       $num_adresse = $_POST['num_adresse'];
       $adresse = $_POST['Adresse'];
       $cp = $_POST['CP'];
       $ville = $_POST['Ville'];
           $detail = $_POST['Detail'];
           $notes = $_POST['notes'];
           $date = $_POST['date'];
           $photo = $_POST['Photo'];
           $prop_ID = $_POST['prop_ID'];

$sql_query = "UPDATE $sql_tbb SET
num_adresse='".$num_adresse."',
Adresse_bien='".$adresse."',
CP='".$cp."',
Ville='".$ville."',
                        Detail='".$detail."',
                        notes='".$notes."',
                        date='".$date."',
Photo='".$photo."',
                        prop_ID='".$prop_ID."'
                        WHERE id='".$id."' ";

$result = mysql_query($sql_query);
if (!$result) {
   echo 'Impossible d\'exécuter la requête : ' . mysql_error();
      exit;
}
else {
echo 	"Le bien a été mis a jour $sql_query ";
}
echo "l'image ".$photo." a bien été récupéré . ";

echo    '[detail.php?id='.$id.' retour]';

mysql_close($sqllink);
?>

6 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
14 juin 2011 à 17:25
bonjour
gros problème d'organisation du code
bon je te propose
comme j'ai pas ta table
j ai pas pu verifier update
...
a++


modifier.php
<?php
/*tu peux supprimer cette partie c'est au cas ou undefined ...*/
if(isset($_POST) && count($_POST)>0){
extract($_POST);
}else{
$photo="";
$id="";
$num_adresse="";
$adresse="";
$bien_cp="";
$ville="";
$detail="";
$str_bien_syndic="";
$date="";
$photo="";
$notes="";
} 

echo '<form action="modifier_valider.php" method="POST" class="form" enctype="multipart/form-data" />';
echo "\";
echo \"----
\";
echo \"Num identifiant, \";
echo \"" . $id .", \";
echo \"\";
echo \"----
\";
echo \"Num, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"Adresse, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"CP, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"ville, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"Détail, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"Sindyc, \";
echo \", \";
echo \"\";
echo \"----
\";
echo \"Relance, \";
echo \"\"$date\", \";
echo \"\";
echo \"----
\";
echo \"Photo, \";
echo ', ';
echo \"\";
echo \"----
\";
echo \"Photo, \";
echo \"";
echo '';
echo ", \";
echo \"----

Notes,
<textarea type='longtext' style='width:320px; height:150px;' heigth='30' width='50' cols='1' rows='1' value='$notes' name='notes'/></textarea>,
\";
echo \"----
\";
echo \"Actions, \";
echo \"";
echo '';
echo ", \";
echo \"\";
echo "
";
echo "";
echo "</form>";
?>





modifier_valider.php
<?php
function redimPhoto($img,$x=125,$y=75){

# L'emplacement de l'image à redimensionner. L'image peut être de type jpeg, gif ou png 
$file = $img ;
$size = getimagesize($file); 

/*homothetie peu être dévalidée*/
$w=$size[0];
$h=$size[1];
if($h>$w){
$zoom=$x/$h;
$y=$y;
$x=$w*$zoom;
}else{
$zoom=$x/$w;
$x=$x;
$y=$h*$zoom;
}
/*fin homothetie*/

if (isset($size)>0) { 
//echo 'Image en cours de redimensionnement...'; 

if ($size['mime']=='image/jpeg' ) {
//echo 'jpg'; 
$img_big = imagecreatefromjpeg($file); # On ouvre l'image d'origine 
$img_new = imagecreate($x, $y); 
# création de la miniature 
$img_mini = imagecreatetruecolor($x, $y) 
or   $img_mini = imagecreate($x, $y); 

// copie de l'image, avec le redimensionnement. 
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]); 

imagejpeg($img_mini,$file ); 

} 
elseif ($size['mime']=='image/png' ) {
//echo 'png';  
$img_big = imagecreatefrompng($file); # On ouvre l'image d'origine 
$img_new = imagecreate($x, $y); 
# création de la miniature 
$img_mini = imagecreatetruecolor($x, $y) 
or   $img_mini = imagecreate($x, $y); 

// copie de l'image, avec le redimensionnement. 
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]); 

imagepng($img_mini,$file ); 

} 
elseif ($size['mime']=='image/gif' ) { 
//echo 'gif'; 
$img_big = imagecreatefromgif($file); # On ouvre l'image d'origine 
$img_new = imagecreate($x, $y); 
# création de la miniature 
$img_mini = imagecreatetruecolor($x, $y) 
or   $img_mini = imagecreate($x, $y); 

// copie de l'image, avec le redimensionnement. 
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]); 

imagegif($img_mini,$file ); 

} 

return $file;
//echo 'Image redimensionnée !'; 

}else{
return false;
}
//fin function image thumb
}



/*voilà ce que envoi ton formulaire*/
echo '';
echo '<hr>variables $_GET actuelles
';
print_r($_GET);
echo '<hr>variables $_POST actuelles
';
print_r($_POST);
echo '<hr>variables $_FILES actuelles
';
print_r($_FILES);
echo '

';
/**/

/*ta nouvelle photo si on la change*/

if(isset($_FILES['Photo']['name']) && !empty($_FILES['Photo']['tmp_name'])){

$idir = "photo/";
$tdir = "vignette/";

$err=null;
    
    $file_ext=strrchr($_FILES['Photo']['name'], '.');
    
    /*verification extension*/
    
    if($_FILES['Photo']['type'] == "image/jpg" || $_FILES['Photo']['type'] == "image/pjpeg" || $_FILES['Photo']['type'] == "image/jpeg" ){
    
    $ext = '.jpg';
    
    }
    
    elseif($_FILES['Photo']['type'] == "image/gif"){
    
    $ext = '.gif';
    
    }
    
    elseif($_FILES['Photo']['type'] == "image/png"){
    
    $ext = '.png';
    }
    
    else{
    $err.="Problème avec extension du fichier";
    }
            
    /*un choix de securite*/
    /*evitons les problèmes de securité et doublons forçage du nom du fichier*/
    //$new = time().$ext;
    
    
    /*on peut faire un filtre regex ou str_replace pour proteger ...*/
    $new = $_FILES['Photo']['name'];
            
    /*copier l'original*/
    $copy=copy($_FILES['Photo']['tmp_name'],$file=$idir.$new);
    if($copy){
    }else{
    $err.="Problème avec la copie du fichier";
    }
    
    /*creation de la vignette et protection par getimagesize refuse les fichiers pas images*/
    if($redim=redimPhoto($_FILES['Photo']['tmp_name'])){
    copy($redim,$thumb=$tdir.$new);
    }else{
    unlink($file);/*efface la photo déjà chargée*/
    $err.="Problème avec la vignette du fichier";
    }
    
    
    if($err!=null){
    /*il y a des erreurs on previent l'internaute*/
    echo ''.$err.'
';exit;
    }else{
    echo 'image copiée et vignette créee
';
    }


}else{
//aucune photo
}



/*insertion*/
// ACCES A LA BASE DE DONNEE
include "config.php";
// Rendre la base de données foo, la base courante
$db_selected = mysql_select_db($sql_bd, $sqllink);
if (!$db_selected) {
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}


$id= $_GET['id'];
$num_adresse = $_POST['num_adresse'];
$adresse = $_POST['Adresse'];
$cp = $_POST['CP'];
$ville = $_POST['Ville'];
$detail = $_POST['Detail'];
$notes = $_POST['notes'];
$date = $_POST['date'];
$photo = $_POST['Photo'];
$prop_ID = $_POST['prop_ID'];


if(isset($new)){
$photo=$new;
//on change image
$sql_query = "UPDATE $sql_tbb SET
num_adresse='".$num_adresse."',
Adresse_bien='".$adresse."',
CP='".$cp."',
Ville='".$ville."',
Detail='".$detail."',
notes='".$notes."',
date='".$date."',
Photo='".$photo."',
prop_ID='".$prop_ID."'
WHERE id='".$id."' ";
}else{
//on change que les champs non image
$sql_query = "UPDATE $sql_tbb SET
num_adresse='".$num_adresse."',
Adresse_bien='".$adresse."',
CP='".$cp."',
Ville='".$ville."',
Detail='".$detail."',
notes='".$notes."',
date='".$date."',
prop_ID='".$prop_ID."'
WHERE id='".$id."' ";
}

$result = mysql_query($sql_query);
if (!$result) {
echo 'Impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
else {
echo 	"Le bien a été mis a jour $sql_query ";
}
echo "l'image ".$photo." a bien été récupéré . ";

echo    '[detail.php?id='.$id.' retour]';

mysql_close($sqllink);
?>




Bonne programmation !
3
chero9000kee Messages postés 10 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 19 juin 2011
14 juin 2011 à 18:08
Ça ne fonctionne pas quand j'envoie le formulaire vers modifier_valider.php
J'ai le message suivant :

Objet non trouvé!

L'URL requise n'a pu etre trouvée sur ce serveur. La référence sur la page citée semble être erronée ou perimée. Nous vous prions d'informer l'auteur de cette page de cette erreur.

Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le gestionnaire du site.

Error 404

Merci beaucoup pour ton aide code57
3
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
14 juin 2011 à 19:37
as tu sauvegardé
modifier_valider.php

car l'erreur explique que le fichier n'existe pas
donc il faut verifier si modifier.php et valider_modifier.php sont dans le meme repertoire ... chez moi tout fonctionne nickel

Bonne programmation !
3
chero9000kee Messages postés 10 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 19 juin 2011
14 juin 2011 à 21:11
Merci pour ton aide, il y avait une erreur du nom "modifie_valider.php" manque le "r" à modifier_ .
J'arrive enfin a envoyer les images mais mon soucie est que je ne récupère plus le nom de l'image dans ma variable "Photo" : le nom de l'image ne s'écrit plus dans base MySQL.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chero9000kee Messages postés 10 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 19 juin 2011
14 juin 2011 à 21:47
Tout est OK, Merci c'est trop cool !!!!
0
chero9000kee Messages postés 10 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 19 juin 2011
14 juin 2011 à 22:04
Je ne sais comment clôturer le sujet du style : [Résolu] .
0
Rejoignez-nous