Insertion texte et upload dans la bdd (poo)

Petit nouveau ! | 8 Messages

30 mars 2014, 00:56

Bonjour, voici mon problème le souci c' est que je ne sais pas comment uploader des fichiers et des textes dans un meme formulaire Voici mes codes:

Ma page html
<!DOCTYPE html>
<html>
	<head>
		<title> Demande de remboursement </title>
	</head>
		<body>
			<header><h1> Faire une demande de remboursement </h1></header>	
			<p>	
				<form name="formAjouter" action="ajouterDemande.php" method="post">
				
					Informations 
				
						<li>Date de trajet <input type="date" name="datetrajet" placeholder="Date de trajet" ></li>
						
						<li>Ville de départ <input type="text" name="villedepart" placeholder="Ville de départ"></li>
						
						<li>Ville d' Arrivée <input type="text" name="villearrivee" placeholder="Ville d' Arrivée"></li>
						
						<li>Puissance administrative <input type="text" name="puissance" placeholder=" Chevaux Fiscaux ">Chevaux</li>
																   
						<li>Motorisation <input type="text" name="motorisation" placeholder="Ex: Essence, Gazole... "></li>
						
						<li>Péage <input type="text" name="peage" placeholder="Montant du Péage">Euros</li><br>
				
							
       
                 
                Formulaire d'envoi de fichier :<br />
                <input type="file" name="avatar" /><br />
                
        </p>
		
 
						<input type="reset" name="reset" value="Réinitialiser"> <input type="submit" name="valider" value="Valider">
				</form>
		</body>
</html>
Ensuite ma classe classeDeamnde.php
<?php
require_once 'accesBDD.php';

class Prestation
{
	private $_datetrajet;
	private $_villedepart;
	private $_villearrivee;
	private $_puissance;
	private $_motorisation;
	private $_peage;
	
	private $_fichier ;
	private $_chemin ;
	
	private $_sqlAjouter ;
	private $_reqAjouter ;
	
	private $_sqlAjouter1 ;
	private $_reqAjouter1 ;
	
	private $_sqlAjouter2 ;
	private $_reqAjouter2 ;
	
	public function __construct($datetrajet, $villedepart, $villearrivee, $puissance, $motorisation, $peage)
	{
	// je construis mon objet en faisant une requête dans ma base de données
	// puis en affectant les résultats de la requête aux champs de mon objet
		$this->_datetrajet = $datetrajet ;
		$this->_villedepart = $villedepart ;
		$this->_villearrivee = $villearrivee ;
		$this->_puissance = $puissance ;
		$this->_motorisation = $motorisation ;
		$this->_peage = $peage;
		
	}
	
	public function ajouterInfos($BDD)
	{
		
										$this->_sqlAjouter1 = 'INSERT INTO demandederemboursement(datetrajet, villedepart, villearrivee, puissance, motorisation, peage) VALUES(:datetrajet, :villedepart, :villearrivee, :puissance, :motorisation, :peage)' ;
										$this->_reqAjouter1 = $BDD->getConnexion()->prepare($this->_sqlAjouter1);
										
										$this->_reqAjouter1->execute(array(
											  'datetrajet'    => 	$this->_datetrajet, 
											  'villedepart'   => 	$this->_villedepart, 
											  'villearrivee'  =>	$this->_villearrivee, 
											  'puissance'     =>    $this->_puissance,
											  'motorisation'  =>    $this->_motorisation,
											  'peage'         =>    $this->_peage
											  )
											  );
									
										
	}	


public function ajouterJustificatif($BDD)
	{
	if(isset($_FILES['avatar']))
		{ 
				//stockage des fichiers uploader dans le dossier upload
				 $chemin = 'upload/';
				 
				 //définition du fichier
				 $fichier = basename($_FILES['avatar']['name']);
				 
				 
						 //copie du fichier uploader dans le répertoire définie précedemment 
						 if(move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
						 {

										$this->_sqlAjouter2 = 'INSERT INTO demandederemboursement(nom, chemin) VALUES(:toto, :titi  )' ;
										$this->_reqAjouter2 = $BDD->getConnexion()->prepare($this->_sqlAjouter2);
										$this->_reqAjouter2->execute(array(':toto'=>$fichier, ':titi'=>$chemin));
									
										echo 'Upload effectué avec succès !';	
										
										
										// on affiche l' image
										//  echo $fichier;
										// echo "Affiche image : <img src=upload/$fichier>\n";
										
							  
						 }
						else //Sinon (la fonction renvoie FALSE).
						 {
							  echo 'Echec de l\'upload !';
						 }

		}
	}

}
?>


Et pour finir ma page php qui va effectuer la requete ajouterDemande.php
<?php
require_once 'accesBDD.php';
require_once 'ClasseDemande.php';



$connectBDD = new AccesBDD('root', '') ;
$connectBDD->connexion() ;

$newPrestation = new Prestation($_POST['datetrajet'], $_POST['villedepart'], $_POST['villearrivee'], $_POST['puissance'], $_POST['motorisation'], $_POST['peage']);


$newPrestation->ajouterInfos($connectBDD) ;
$newPrestation->ajouterJustificatif($connectBDD) ;

$connectBDD->deconnexion() ;
?>
Mon souci est que mes texte s' enregistre bien dans ma bdd mais pas mon upload si vous pouvez m' aider, ce serait sympa merci beaucoup

ViPHP
xTG
ViPHP | 7331 Messages

30 mars 2014, 01:37

Il manque l'attribut :

Code : Tout sélectionner

enctype="multipart/form-data"
dans ta balise <form>.
Il est nécessaire pour indiquer que la requête HTTP véhicule un fichier.

Petit nouveau ! | 8 Messages

30 mars 2014, 13:18

j' ai rajouter le encytype mais le souci est encore la.

Je dois tout regrouper dans mon formulaire y comprit l' upload voici mon changement qui ne marche pas du tout et je ne comprend vraiemnt pas ce qui cloche, si vous pouvez m 'aider merci a vous


Ma page html
<!DOCTYPE html>
<html>
	<head>
		<title> Demande de remboursement </title>
	</head>
		<body>
			<header><h1> Faire une demande de remboursement </h1></header>	
			<p>	
				<form name="formAjouter" action="ajouterDemande.php" method="post" enctype="multipart/form-data">>
				
					Informations 
				
						<li>Date de trajet <input type="date" name="datetrajet" placeholder="Date de trajet" ></li>
						
						<li>Ville de départ <input type="text" name="villedepart" placeholder="Ville de départ"></li>
						
						<li>Ville d' Arrivée <input type="text" name="villearrivee" placeholder="Ville d' Arrivée"></li>
						
						<li>Puissance administrative <input type="text" name="puissance" placeholder=" Chevaux Fiscaux ">Chevaux</li>
																   
						<li>Motorisation <input type="text" name="motorisation" placeholder="Ex: Essence, Gazole... "></li>
						
						<li>Péage <input type="text" name="peage" placeholder="Montant du Péage">Euros</li><br>
				
							
       
                 
                Formulaire d'envoi de fichier :<br />
                <input type="file" name="avatar" /><br />
                
        </p>
		
 
						<input type="reset" name="reset" value="Réinitialiser"> <input type="submit" name="valider" value="Valider">
				</form>
		</body>
</html>
Ma classe
<?php
require_once 'accesBDD.php';

class Prestation
{
	private $_datetrajet;
	private $_villedepart;
	private $_villearrivee;
	private $_puissance;
	private $_motorisation;
	private $_peage;
	
	private $_fichier ;
	private $_chemin ;
	
	private $_sqlAjouter ;
	private $_reqAjouter ;
	
	
	
	
	public function __construct($datetrajet, $villedepart, $villearrivee, $puissance, $motorisation, $peage)
	{
		$this->_datetrajet = $datetrajet ;
		$this->_villedepart = $villedepart ;
		$this->_villearrivee = $villearrivee ;
		$this->_puissance = $puissance ;
		$this->_motorisation = $motorisation ;
		$this->_peage = $peage;
	}
	
	public function ajouterInfos($BDD)
	{
	
	if(isset($_FILES['avatar']))
		{ 
				//stockage des fichiers uploader dans le dossier upload
				 $chemin = 'upload/';
				 
				 //définition du fichier
				 $fichier = basename($_FILES['avatar']['name']);
				 
				 
						 //copie du fichier uploader dans le répertoire définie précedemment 
						 if(move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
						 {

		
										$this->_sqlAjouter = 'INSERT INTO demandederemboursement(datetrajet, villedepart, villearrivee, puissance, motorisation, peage, nom, chemin) VALUES(:datetrajet, :villedepart, :villearrivee, :puissance, :motorisation, :peage, :nom, :chemin)' ;
										$this->_reqAjouter = $BDD->getConnexion()->prepare($this->_sqlAjouter);
										
										$this->_reqAjouter->execute(array(
											  'datetrajet'    => 	$this->_datetrajet, 
											  'villedepart'   => 	$this->_villedepart, 
											  'villearrivee'  =>	$this->_villearrivee, 
											  'puissance'     =>    $this->_puissance,
											  'motorisation'  =>    $this->_motorisation,
											  'peage'         =>    $this->_peage,
											  'nom'             => $this->_fichier, 
											  'chemin'          => $this->_chemin
											  )
											  );
									
										echo 'Upload effectué avec succès !';	
							
							  
						 }
						else //Sinon (la fonction renvoie FALSE).
						 {
							  echo 'Echec de l\'upload !';
						 }

		}
	}

}
?>
et pour finir mon ajout pour ajouter tout le formulaire et lupload
<?php
require_once 'accesBDD.php';
require_once 'ClasseDemande.php';



$connectBDD = new AccesBDD('root', '') ;
$connectBDD->connexion() ;

$newPrestation = new Prestation($_POST['datetrajet'], $_POST['villedepart'], $_POST['villearrivee'], $_POST['puissance'], $_POST['motorisation'], $_POST['peage']);


$newPrestation->ajouterInfos($connectBDD) ;


$connectBDD->deconnexion() ;
?>
je pense que le probleme vient de ma classe et de mon fichir d' ajout mais je ne vois pas ou si vous pouviez m' aider ce serait tres sympa de votre part merci =)

ViPHP
xTG
ViPHP | 7331 Messages

30 mars 2014, 15:29

Que te donnes :
var_dump($_FILES['avatar']);
dans la fonction de traitement.