[RESOLU] upload et image

Petit nouveau ! | 6 Messages

28 févr. 2016, 14:57

Bonjour,

J'ai comme exercice de créer une base de donnée pays et de créer une table t_pays

dans cette table j'ai 4 champs id_pays, nom_pays, capital_pays, image

Je dois maintenant manipuler des enregistrements, c'est à dire ajouter / modifier / supprimer des éléments tout fonctionne bien !

Là où je galère c'est au niveau de l'ajout de l'image, elle ne s'affiche pas et elle n'est pas envoyé dans mon dossier images (sur wamp)

http://hpics.li/436a6b9

Code : Tout sélectionner

<?php $Temoin = 0; $pdo = new pdo('mysql:host=localhost;dbname=pays','root', ""); header("Content-Type: text/html; charset=utf-8"); include ("resize.php"); $choix = ""; if(isset ($_POST['GoToAjouter'])) { $choix="GoToAjouter"; } if(isset ($_POST['Ajouter'])) { $choix="Ajouter"; } if(isset ($_POST['Supprimer'])) { $Temoin=1; } if(isset ($_POST['Modifier'])) { $choix="Modifier"; } if(isset ($_POST['GoToModifier'])) { $choix="GoToModifier"; } switch ($choix) { default: if ($Temoin){ if(isset ($_POST['Check'])){ $check=$_POST['Check']; $sql="DELETE FROM `pays`.`t_pays` WHERE `t_pays`.`id_pays` = ".$check[0].";"; $pdo->exec($sql); } } $sql="select*from t_pays"; $stmt=$pdo->query($sql); $arr=$stmt->fetchall(); echo "<div align='center' style='background-color:#9AA0E3; border:1px solid #756020; border-width:4 ; margin: 200 500; padding: 25'> <form name='Form' action='index.php' method='POST'> <table style='background-color:white ; padding: 5;' border=1>"; for ($I = 0 ; $I<count($arr); $I++){ echo "<tr>" ; $enr=$arr[$I]; // ici on ajoute à chaque fois un champ pour notre tableau echo "<td>".$enr[0]."</td> <td>".$enr[1]."</td> <td>".$enr[2]."</td> <td><img src ='".$enr[3]."'/img></td> <td><input type='checkbox' name='Check[]' value='".$enr[0]."'/></td>"; } echo "</table> </br> <input type='submit' name='Supprimer' value='Supprimer'/> <input type='submit' name='GoToAjouter' value='Ajouter' /> <input type='submit' name='GoToModifier' value='Modifier' /> </form></div></body>"; break; case "GoToAjouter": echo "<div align='center' style='background-color:#9AA0E3; border:1px solid #756020; border-width:4 ; margin: 200 500; padding: 25'>"; echo '<form name="Form" action="index.php" method="POST"> <tab><tr><td> Nom Pays <input type="text" name="nom_pays" value=""/></br> Capital <input type="text" name="capital_pays" value=""/></br> <input type="file" name="image"/></td></tr></tab> <input type="submit" name="Ajouter" value="Ajouter dans database"/> <input type="submit" name="Lister" Value="Lister les enregistrements"/> </form></div>'; break; // pour ajouter des enrengistrements case "Ajouter": $nom_pays=$_POST['nom_pays']; $capital_pays=$_POST['capital_pays']; if (is_uploaded_file($_FILES['Image']['tmp_name'])) {$tmp_name = $_FILES['Image']['tmp_name']; $newimage = $_FILES['Image']['name']; move_uploaded_file($tmp_name,"images/".$newimage); resize($newimage); } $sql="INSERT INTO `pays`.`t_pays` (`id_pays`, `nom_pays`, `capital_pays`, `image`) VALUES (NULL, '".$nom_pays."', '".$capital_pays."', '".$newimage."');"; echo $sql; $pdo->exec($sql); header("location:index.php"); break;
Dans mon fichier resize.php j'ai ceci

Code : Tout sélectionner

<?php function resize($fichier) { $dir="images/"; $fichierSource = $dir.$fichier; $source = ImageCreateFromJpeg($fichierSource); $largeurSource = imagesx($source); $hauteurSource = imagesy($source); $ratiol=100/$largeurSource; $largeurDestination=100; $hauteurDestination=$hauteurSource*$ratiol; $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination) or die ("Erreur lors de la création de l'image"); ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource); $miniature = $dir.$fichier; ImageJpeg ($im, $miniature); } ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 mars 2016, 10:13

Bonjour,

Le problème vient de l'upload des fichiers sur le serveur (et forcément, s'ils ne sont pas chargés, ils ne s'afficheront pas :))

Dans ton formulaire, dès lors que tu veux envoyer des fichiers (inputs de type "file"), il te faut spécifier l'attribut "enctype" dans la balise "form" pour éviter que le navigateur n'encode les informations du fichier :

Code : Tout sélectionner

enctype="multipart/form-data"
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

04 mars 2016, 23:05

Bonsoir,

Merci pour ton aide Ryle.

Finalement j'ai réussi à uploadé mon image, donc je sais ajouter des enregistrement(avec image), supprimer des enregistrement (avec image) mais je galère vraiment avec la modification....

Pour info lorsque je modifie du texte dans mes enregistrements ça fonctionne, mais lorsque je veux modifier une image par exemple ça ne va pas... Je sais pas du tout comment il faut s'y prendre...

Code : Tout sélectionner

$Temoin = 0; $pdo = new pdo('mysql:host=localhost;dbname=pays','root', ""); header("Content-Type: text/html; charset=utf-8"); include ("resize.php"); $choix = ""; if(isset ($_POST['GoToAjouter'])) { $choix="GoToAjouter"; } if(isset ($_POST['Ajouter'])) { $choix="Ajouter"; } if(isset ($_POST['Supprimer'])) { $Temoin=1; } if(isset ($_POST['Modifier'])) { $choix="Modifier"; } if(isset ($_POST['GoToModifier'])) { $choix="GoToModifier"; } switch ($choix) { default: if ($Temoin){ if(isset ($_POST['Check'])){ $check=$_POST['Check']; $sql="DELETE FROM `pays`.`t_pays` WHERE `t_pays`.`id_pays` = ".$check[0].";"; $pdo->exec($sql); } } $sql="select*from t_pays"; $stmt=$pdo->query($sql); $arr=$stmt->fetchall(); echo "<div align='center' style='background-color:#9AA0E3; border:1px solid #756020; border-width:4 ; margin: 200 500; padding: 25'> <form name='ff' enctype='multipart/form-data' action='index.php' method='POST'> <table style='background-color:white ; padding: 5;' border=1>"; for ($I = 0 ; $I<count($arr); $I++){ echo "<tr>" ; $enr=$arr[$I]; // ici on ajoute à chaque fois un champ pour notre tableau echo "<td>".$enr[0]."</td> <td>".$enr[1]."</td> <td>".$enr[2]."</td> <td><img src ='".$enr[3]."'/img></td> <td><input type='checkbox' name='Check[]' value='".$enr[0]."'/></td>"; } echo "</table> </br> <input type='submit' name='Supprimer' value='Supprimer'/> <input type='submit' name='GoToAjouter' value='Ajouter' /> <input type='submit' name='GoToModifier' value='Modifier' /> </form></div></body>"; break; case "GoToAjouter": echo "<div align='center' style='background-color:#9AA0E3; border:1px solid #756020; border-width:4 ; margin: 200 500; padding: 25'>"; echo '<form name="ff" enctype="multipart/form-data" action="index.php" method="POST"> <tab><tr><td> Nom Pays <input type="text" name="nom_pays" value=""/></br> Capital <input type="text" name="capital_pays" value=""/></br> <input type="file" name="couv"/></td></tr></tab> <input type="submit" name="Ajouter" value="Ajouter dans database"/> <input type="submit" name="Lister" Value="Lister les enregistrements"/> </form></div>'; break; // pour ajouter des enrengistrements case "Ajouter": $nom_pays=$_POST['nom_pays']; $capital_pays=$_POST['capital_pays']; if (is_uploaded_file ($_FILES['couv']['tmp_name'])) { $tmp_nom= $_FILES["couv"]["tmp_name"]; $name= $_FILES["couv"]["name"]; move_uploaded_file($tmp_nom,"images/".$name); //resize($couv) } $couv="images/".$_FILES['couv']['name']; $sql="INSERT INTO `pays`.`t_pays` (`id_pays`, `nom_pays`, `capital_pays`, `couv`) VALUES (NULL, '".$nom_pays."', '".$capital_pays."', '".$couv."');"; echo $sql; $pdo->exec($sql); header("location:index.php"); break; case "GoToModifier": if(isset ($_POST['Check'])){ $check=$_POST['Check']; $sql="select * from t_pays WHERE `t_pays`.`id_pays` = ".$check[0].";"; $smtp=$pdo->query($sql); $arr=$smtp->fetch(); echo "<div align='center' style='background-color:#207555; border:1px solid #756020; border-width:4 ; margin: 200 500; padding: 25' >"; echo'<form name="ff" enctype="multipart/form-data" action="index.php" method="POST"> <input type="text" name="id_pays" value="'.$arr[0].'"/> <input type="text" name="nom_pays" value="'.$arr[1].'"/> <input type="text" name="capital_pays" value="'.$arr[2].'"/> <img src ="'.$arr[3].'"/img> <input type="file" name="couv"/></td></tr> <input type="submit" name="Modifier" value="Modifier"/> <input type="submit" name="" value="Annuler"/> </form></div>'; } break; // pour faire la modification case "Modifier": $nom_pays=$_POST['nom_pays']; $capital_pays=$_POST['capital_pays']; $id_pays=$_POST['id_pays']; if (isset($_POST['modifier'])) $couv="images/".$_POST['couv']; $sql ="UPDATE `pays`.`t_pays` SET `nom_pays` = '".$nom_pays."', `capital_pays` = '".$capital_pays."', `couv` = '".$couv."' WHERE `t_pays`.`id_pays` = ".$id_pays; $pdo->exec($sql); $sql="UPDATE `pays`.`t_pays` SET `nom_pays` = '".$nom_pays."', `capital_pays` = '".$capital_pays."', `couv` = '".$couv."' WHERE `t_pays`.`id_pays` = ".$id_pays; header ("location:index.php"); break;

Petit nouveau ! | 6 Messages

05 mars 2016, 00:09

J'y suis arrivé malgré que j'ai galéré, merci encore pour votre aide.
case "GoToModifier":
      if(isset ($_POST['Check'])){
      $check=$_POST['Check'];
      $sql="select * from t_pays WHERE `t_pays`.`id_pays` = ".$check[0].";";
      $smtp=$pdo->query($sql);
      $arr=$smtp->fetch();
      echo "<div align='center' style='background-color:#207555; border:1px solid #756020; border-width:4 ; margin: 200 500; padding: 25'    >";
      echo'<form name="ff" enctype="multipart/form-data" action="index.php" method="POST">
                <input type="text" name="id_pays" value="'.$arr[0].'"/>
                <input type="text" name="nom_pays" value="'.$arr[1].'"/>
                <input type="text" name="capital_pays" value="'.$arr[2].'"/>
                <img src ="'.$arr[3].'"/img>
                <input type="file" name="couv"/></td></tr> 
                <input type="submit" name="Modifier" value="Modifier"/>
                <input type="submit" name="" value="Annuler"/>
                </form></div>';
                 }
       break;

     
       // pour faire la modification
 
      case "Modifier":
      $nom_pays=$_POST['nom_pays'];
      $capital_pays=$_POST['capital_pays'];
      $id_pays=$_POST['id_pays'];
      // $nom="nom";
        if (is_uploaded_file ($_FILES['couv']['tmp_name']))
            {
                $tmp_nom= $_FILES["couv"]["tmp_name"];
                $name= $_FILES["couv"]["name"];
                move_uploaded_file($tmp_nom,"images/".$name);
                //resize($couv)
            }
            $couv="images/".$_FILES['couv']['name'];
   
     
                //resize($couv)
         
   
      $sql ="UPDATE `pays`.`t_pays` SET `nom_pays` = '".$nom_pays."', `capital_pays` = '".$capital_pays."', `couv` = '".$couv."' WHERE `t_pays`.`id_pays` = ".$id_pays;
      $pdo->exec($sql);
       
            $sql="UPDATE `pays`.`t_pays` SET `nom_pays` = '".$nom_pays."', `capital_pays` = '".$capital_pays."', `couv` = '".$couv."' WHERE `t_pays`.`id_pays` = ".$id_pays;
 
      header ("location:index.php");
      break;