[RESOLU] INSERT INTO

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] INSERT INTO

Re: INSERT INTO

par JVL » 19 juin 2014, 08:46

J'ai compris

"<input type="button" value="Enregistrer">"

Le type doit être submit !

Re: INSERT INTO

par JVL » 18 juin 2014, 15:36

Ok merci moogli !

Rahh pdostatement aura ma peau !

Je suis sous Notepadd++ :D

Coté html j'ai pas vraiment le choix on m'impose un certain formalisme (en excel, que je converti en html).

<!DOCTYPE html> j'ai pourtant mis cela en haut de la page ?

edit: la requete ne s'execute pas en bdd, pas de message d'erreur ...

Re: INSERT INTO

par moogli » 18 juin 2014, 15:32

effectivement la classe PDOStatement n'as pas de méthode exec
dommage tu avais bon la première fois :mrgreen:

en plus clair tu peux faire ainsi
<?php

try {
    $add_affaire = $bdd->prepare('INSERT INTO affaire(Avancement_affaire, Libelle_affaire, Lieu_affaire, Dept_affaire, ID_charge_affaire, ID_charge_etude, Client, Type_etude,Date_offre, Achat_fourniture_p,Achat_soustraitance_p,  MOE_etude_p, MOE_chantier_p, MOE_mes_p, Devis_mdb_p,Phase_notification_p, Phase_debut_p, Phase_fin_p, Reserves_p) 
VALUES (1 , :libelle , :ville , :departement , :chargedaffaire , :chargedetude , :client , :type , :dateoffre, :fourniture , :soustraitance, :etude , :chantier , :mes , :mdb , str_to_date( :notification , :format), str_to_date(:debut, :format), str_to_date(:fin,:format), str_to_date(:levee,:format))');

    print_r($ajout_affaire);

    $ajout_affaire = $add_affaire->execute(array(
        'libelle'        => $_POST['libelle'],
        'ville'          => $_POST['ville'],
        'departement'    => $_POST['departement'],
        'format'         => $format,
        'client'         => $_POST['client'],
        'chargedaffaire' => $_POST['chargedaffaire'],
        'chargedetude'   => $_POST['chargedetude'],
        'type'           => $_POST['type'],
        'dateoffre'      => $_POST['dateoffre'],
        'fourniture'     => $_POST['fourniture'],
        'soustraitance'  => $_POST['soustraitance'],
        'etude'          => $_POST['etude'],
        'chantier'       => $_POST['chantier'],
        'mes'            => $_POST['mes'],
        'notification'   => $_POST['notification'],
        'debut'          => $_POST['debut'],
        'fin'            => $_POST['fin'],
        'mdb'            => $_POST['mdb'],
        'levee'          => $_POST['levee']
    ));
} catch (Exception $e) {
    echo 'Erreur SQL : ' . $e->getMessage() . '<br />';
    echo $e->getTraceAsString();
}
Les variables temporaires étant totalement inutile.
Reste a savoir si $_POST contient bien des données.

pour cela var_dump($_POST), print_r($_POST) ou encore mieux un vrai debugguer (xdebug par exemple) avec un IDE correct ;)

sinon coté html; la mise en page tableau c'est le mal, et il te manque le début de la déclaration de la page sous le Doctype.

@+

Re: INSERT INTO

par JVL » 18 juin 2014, 14:55

C'est bon je voie les messages d'erreurs

Notice: Undefined index: pour chaque variable que j'utiliser.

le print_r : Array ( ) $libelle, $ville, $departement, $client, $chargedetude, $chargedaffaire, $type,$dateoffre, $fourniture, $soustraitance, $etude, $chantier, $mes, $mdb, $notification, $debut, $fin, $levee

( ! ) Fatal error: Call to undefined method PDOStatement::exec() in D:\wamp\www\Climatelec\affi.php on line 101
<?php include("connection.php") ?>

<!DOCTYPE html>
<link rel="stylesheet" type="text/css" href="css.css" /> 

<form method="post" action="affi.php?yo=yo">
<div class="datagrid"><table>
<thead><tr><th>Charge d'affaire</th></tr></thead>
<tr><td><select name="chargedaffaire">


<?php $select1 = $bdd->query('SELECT `Nom_prenom_personnel` FROM `personnel` WHERE `rang` = 2');
while($select_chargedaffaire = $select1->fetch(PDO::FETCH_OBJ)){

echo '<option value="'.$select_chargedaffaire->Nom_prenom_personnel,'">'.$select_chargedaffaire->Nom_prenom_personnel,'</option>';  
} ?>


</select></td>
</tr>
</table></div>


<div class="datagrid"><table>
<thead><tr><th>Libelle</th><th>Ville</th><th>N° département</th><th>Client</th><th>Charge d'Etude</th><th>Type</th><th>Date (remise de l'offre)</th></tr></thead>
<tbody><tr><td><input type="text" size="40" name="libelle"></td><td><input type="text" name="ville"></td><td><input type="text"name="departement" size="10"></td><td><input type="text" name="client"></td><td><select align="center" valign="center" name="chargedetude">  


<?php $select = $bdd->query('SELECT `Nom_prenom_personnel` FROM `personnel` WHERE `rang` = 1');
while($select_chargedetude = $select->fetch(PDO::FETCH_OBJ)){
echo '<option value="'.$select_chargedetude->Nom_prenom_personnel,'">'.$select_chargedetude->Nom_prenom_personnel,'</option>';  

} ?>

</select>
</td><td><select name="type">
  <option value="volvo">Appel d'Offre Public</option>
  <option value="saab">Consultation Privée</option>
  <option value="mercedes">Devis Prospectif</option>
  <option value="audi">Etude de Faisabilité</option>
</select></td><td><input name="dateoffre"type="date" style="padding:5px; border:solid 1px black; color:steelblue; border-radius:5px;" /></td></tr>
</tbody>
</table></div>

<div class="datagrid"><table>
<thead><tr><th colspan="2" > Achat (HT €) </th><th colspan="2"> Main d'œuvre (h)</th><th> Marché de Base (HT €)</th></tr></thead>
<tbody><tr><td>Fourniture</td><td><input name="fourniture" type="text"> € </td><td> Etude </td><td><input name="etude" type="text"> h </td><td><input name="mdb" type="text"> € </td></tr>
	   <tr><td>Sous-traitance</td><td><input type="text"name="soustraitance"> € </td><td> Chantier </td><td> <input name="chantier" type="text"> h </td></tr>
	   <tr><td></td><td></td><td>Mise en Service </td><td> <input type="text" name="mes"> h </td>
</tbody></table> </div>

<div class="datagrid"><table>
<thead><tr><th colspan="4">Phasage des opérations</th></tr></thead>
<tbody><tr><td>Notification</td><td>Début des travaux</td> <td> Fin des travaux</td> <td>Levées des travaux </td></tr>
	   <tr> <td><input type="date" name="notification"> </td><td><input type="date"name="debut"> </td><td><input type="date" name="fin"> </td><td><input name="levee" type="date"> </td></tr>
</tbody></table></div>
	<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><center><input type="button" value="Enregistrer"></center></td>
<td></td>
	</tr>							
</form>	

</html>
<?php 
		if(isset($_GET['yo']) && $_GET['yo'] = "yo")
		{
 	   $libelle = $_POST['libelle'];
         $ville = $_POST['ville'];
   $departement = $_POST['departement'];
        $client = $_POST['client'];
  $chargedetude = $_POST['chargedetude'];
$chargedaffaire = $_POST['chargedaffaire'];
          $type = $_POST['type'];
     $dateoffre = $_POST['dateoffre'];
    $fourniture = $_POST['fourniture'];
 $soustraitance = $_POST['soustraitance'];
         $etude = $_POST['etude'];
      $chantier = $_POST['chantier'];
           $mes = $_POST['mes'];
  $notification = $_POST['notification'];
         $debut = $_POST['debut'];
           $fin = $_POST['fin'];
           $mdb = $_POST['mdb'];
         $levee = $_POST['levee'];
	    $format = "%d/%m/%Y";
		print_r($_POST);
		echo '$libelle, $ville, $departement, $client, $chargedetude, $chargedaffaire, $type,$dateoffre, $fourniture, $soustraitance, $etude, $chantier, $mes, $mdb, $notification, $debut, $fin, $levee ';

$add_affaire = $bdd->prepare('INSERT INTO `affaire`(`Avancement_affaire`, `Libelle_affaire`, `Lieu_affaire`, `Dept_affaire`, `ID_charge_affaire`, `ID_charge_etude`, `Client`, `Type_etude`,`Date_offre`, `Achat_fourniture_p`,`Achat_soustraitance_p`,  `MOE_etude_p`, `MOE_chantier_p`, `MOE_mes_p`, `Devis_mdb_p`,`Phase_notification_p`, `Phase_debut_p`, `Phase_fin_p`, `Reserves_p`) 
VALUES ("1" , :libelle , :ville , :departement , :chargedaffaire , :chargedetude , :client , :type , :dateoffre, :fourniture , :soustraitance, :etude , :chantier , :mes , :mdb , str_to_date( :notification , :format), str_to_date(:debut, :format), str_to_date(:fin,:format), str_to_date(:levee,:format))');


													
$ajout_affaire = $add_affaire->exec(array(
								   'libelle' => "$libelle",
									 'ville' => "$ville",
							   'departement' => "$departement",
					             	'format' => "$format",
									'client' => "$client",
							'chargedaffaire' => "$chargedaffaire",
							  'chargedetude' => "$chargedetude",
									  'type' => "$type",
								 'dateoffre' => "$dateoffre",
							    'fourniture' => "$fourniture",
					         'soustraitance' => "$soustraitance",	
								     'etude' => "$etude",	
								  'chantier' => "$chantier",
									   'mes' => "$mes",				
							  'notification' => "$notification",			
									 'debut' => "$debut",
									   'fin' => "$fin",	
  									   'mdb' => "$mdb",	
									 'levee' => "$levee"
									));
									execute() or die($add_affaire->errorInfo());
									}

Re: INSERT INTO

par telnes » 18 juin 2014, 14:49

hello

print_r($_POST);

Re: INSERT INTO

par Elie » 18 juin 2014, 14:44

Aucune erreur ne s'affiche ?
Peux-tu essaye un execute() or die($add_affaire->errorInfo());
C'est pas la raison mais vite les " autour de => "$variable".
C'est pas la raison mais pourquoi utiliser str_to_date est pas simplement traiter la date en PHP sur ta variable : 'fin' => date($format, strototime($fin))

INSERT INTO

par JVL » 18 juin 2014, 14:33

Bonjour à tous,

Je souhait insérer des données dans ma bdd, mais seule une ligne vide s'insère, je pense que c'est un problème de concaténation, ou de syntaxe.

       $libelle = $_POST['libelle'];
         $ville = $_POST['ville'];
   $departement = $_POST['departement'];
        $client = $_POST['client'];
  $chargedetude = $_POST['chargedetude'];
$chargedaffaire = $_POST['chargedaffaire'];
          $type = $_POST['type'];
     $dateoffre = $_POST['dateoffre'];
    $fourniture = $_POST['fourniture'];
 $soustraitance = $_POST['soustraitance'];
         $etude = $_POST['etude'];
      $chantier = $_POST['chantier'];
           $mes = $_POST['mes'];
  $notification = $_POST['notification'];
         $debut = $_POST['debut'];
           $fin = $_POST['fin'];
           $mdb = $_POST['mdb'];
         $levee = $_POST['levee'];
	    $format = "%d/%m/%Y";

$add_affaire = $bdd->prepare('INSERT INTO `affaire`(`Avancement_affaire`, `Libelle_affaire`, `Lieu_affaire`, `Dept_affaire`, `ID_charge_affaire`, `ID_charge_etude`, `Client`, `Type_etude`,`Date_offre`, `Achat_fourniture_p`,`Achat_soustraitance_p`,  `MOE_etude_p`, `MOE_chantier_p`, `MOE_mes_p`, `Devis_mdb_p`,`Phase_notification_p`, `Phase_debut_p`, `Phase_fin_p`, `Reserves_p`) 
VALUES ("1" , :libelle , :ville , :departement , :chargedaffaire , :chargedetude , :client , :type , :dateoffre, :fourniture , :soustraitance, :etude , :chantier , :mes , :mdb , str_to_date( :notification , :format), str_to_date(:debut, :format), str_to_date(:fin,:format), str_to_date(:levee,:format))');

print_r($ajout_affaire); 
													
$ajout_affaire = $add_affaire->execute(array(
								   'libelle' => "$libelle",
									 'ville' => "$ville",
							   'departement' => "$departement",
					             	'format' => "$format",
									'client' => "$client",
							'chargedaffaire' => "$chargedaffaire",
							  'chargedetude' => "$chargedetude",
									  'type' => "$type",
								 'dateoffre' => "$dateoffre",
							    'fourniture' => "$fourniture",
					         'soustraitance' => "$soustraitance",	
								     'etude' => "$etude",	
								  'chantier' => "$chantier",
									   'mes' => "$mes",				
							  'notification' => "$notification",			
									 'debut' => "$debut",
									   'fin' => "$fin",	
  									   'mdb' => "$mdb",	
									 'levee' => "$levee"
									));
Merci d'avance pour votre aide.

Cordialement.