Bonjour,
Voila je rencontre un petit problème avec mon code, j'ai un formulaire dynamique avec un bouton en js pour ajouter des lignes supplémentaire, le probleme c'est pour insérer mes données dans ma table avec ma requête insert into j'ai une erreur "array to string conversion" j'ai déja passé plusieurs heures à résoudre mon problème mais en vain.
Voici mon code html avec mon bouton en js :
<script type="text/javascript">
function add()
{
var input = addInput.innerHTML
addInput.innerHTML = input + '<table><div id="divform" class="form-group row"><div class="col-xs-10" id="formulaire"><tr><td><input class="form-control" type="date" name="dateactu[]" value="2017-01-10" id="input"></br></td><td><input class="form-control" type="text" name="heure_eff[]" placeholder="heure(s) éffectuée(s)" id="input"></br></td><td><input class="form-control" placeholder="prix repas" type="text" name="repas[]" id="input"></br></td><td><input class="form-control" type="text" name="num_commande[]" placeholder="numéro commande" id="input"></br></td><td><input class="form-control" type="text" name="nom_cli[]" placeholder="nom du client" id="input"></br></td><td><input class="form-control" type="text" name="adr_cli[]" placeholder="adresse client" id="input"></br></td></tr></div></div></table>';
}
</script>
</head>
<body>
<?php include "utils/navbar.php" ?>
<br/>
<form method="post" action="callback/addformulaire.php">
<div class="form-group row" id="semaine">
<label for="example-week-input" class="col-xs-2 col-form-label">Semaine n°</label>
<div class="col-xs-10">
<input class="form-control" type="week" name="nb_semaine[]" value="2017-W01">
</div>
</div>
</br>
<hr>
</br>
<?php
for ($i=0; $i < 5 ; $i++) {
echo '<table name="tableform">
<div id="divform" class="form-group row">
<div class="col-xs-10" id="formulaire">
<tr>
<td><input class="form-control" type="date" name="dateactu[]" value="2017-01-10" id="input"></br></td>
<td><input class="form-control" type="text" name="heure_eff[]" placeholder="heure(s) éffectuée(s)" id="input"></br></td>
<td><input class="form-control" placeholder="prix repas" type="text" name="repas[]" id="input"></br></td>
<td><input class="form-control" type="text" name="num_commande[]" placeholder="numéro commande" id="input"></br></td>
<td><input class="form-control" type="text" name="nom_cli[]" placeholder="nom du client" id="input"></br></td>
<td><input class="form-control" type="text" name="adr_cli[]" placeholder="adresse client" id="input"></br></td>
</tr>
</div>
</div></table>';
}
?>
<input type="submit" name="envoyer" id="btnenvoi" class="btn btn-success" value="Envoyer">
<input id="btn+" type="button" class="btn btn-info" onClick="add();" value="Ajouter champs">
</br>
</br>
<div id="addInput"></div>
</form>
Et mon code php :
<?php
session_start();
$connect = 0;
$admin = 0;
if (!empty($_SESSION['login'])) $connect = 1;
if (!empty($_SESSION['admin'])) {
if ($_SESSION['admin'] == 1) $admin = 1;
}
// Je vérifie que toutes les infos du formulaire sont bien là.
if (!empty($_POST['heure_eff']) && !empty($_POST['repas'])
&& !empty($_POST['num_commande']) && !empty($_POST['nom_cli']) && !empty($_POST['adr_cli'])) {
$nbligne = count($_POST['heure_eff']);
$dateactu = $_POST['dateactu'];
$heure_eff = $_POST['heure_eff'];
$repas = $_POST['repas'];
$num_commande = $_POST['num_commande'];
$nom_cli = $_POST['nom_cli'];
$adr_cli = $_POST['adr_cli'];
$nb_semaine = $_POST['nb_semaine'];
try {
//connexion BDD
$bdd = new PDO('mysql:host=localhost;dbname=rapport', 'root', 'root');
$sql = $bdd->prepare ('INSERT INTO form (dateactu, heure_eff, repas, num_commande, nom_cli, adr_cli, nb_semaine) VALUE (
:dateactu, :heure_eff, :repas , :num_commande , :nom_cli , :adr_cli , :nb_semaine )');
for ($i=0; $i < $nbligne; $i++) {
$sql -> execute(array('dateactu' => $dateactu , 'heure_eff' => $heure_eff , 'repas' => $repas , 'num_commande'=> $num_commande , 'nom_cli' => $nom_cli, 'adr_cli' => $adr_cli , 'nb_semaine' => $nb_semaine));
}
header('Location: ../contact.php');
}
catch (PDOException $e) {
echo 'Erreur : ' . $e -> getMessage();
}
}
else {
echo "Vous n\'avez pas rempli tous les champs.";
}
?>
L'erreur : Notice: Array to string conversion in C:\UwAmp\www\rapport\rapport\callback\addformulaire.php on line 31
la ligne 31 correspond à "$sql -> execute(array('dateactu' => $dateactu , 'heure_eff' => $heure_eff , 'repas' => $repas ... "
Lorsque je regarde dans ma table form j'ai bien le nombre de ligne que je veux mais dans tous les champs j'ai "Array" et non les données que j'ai entré dans le formulaire