Vous n'êtes pas identifié(e).
Bonjour à tous,
Je cherche à récupérer les données d'un select multiple dans le champ "services" de ma base de données.
ma champ service est en varchar(255) latin1_swedish_ci not null
Dans ma page html :
<script>
function PostSelect(liste)
{
// On compte le nombre d'item de la liste select
Nbservices = document.forms[liste].elements.services.length;
// On lance une boucle pour selectionner tous les items
for (a = 0; a < Nbservices; a++)
{
document.forms[liste].elements.services.options[a].selected = true;
}
// On modifie l'ID du champ select pour que PHP traite cette
// dernière comme un array
document.forms[liste].elements.services.name = "services[]";
// On soumet le formulaire
document.forms[liste].submit();
}
</script>
dans mon body, j'ai un form dans un form :
le tout traité par ajout location.php
include ("conec.php");
// cookie d'indentification
include ("cookie.php");
$type = mysql_real_escape_string($_POST['type']);
$pays = mysql_real_escape_string($_POST['pays']);
$departement = mysql_real_escape_string($_POST['departement']);
$ville = mysql_real_escape_string($_POST['ville']);
$nom_location = mysql_real_escape_string($_POST['nom_location']);
$description = mysql_real_escape_string($_POST['description']);
$pieces = mysql_real_escape_string($_POST['pieces']);
$surface = mysql_real_escape_string($_POST['surface']);
$services = mysql_escape_string($_POST['services']);
//$services = (";" $_POST['services']);
// requète d'insertion dans la table
mysql_query("INSERT INTO locations VALUES ('', '$type', '$pays', '$departement', '$ville','$nom_location', '$description', '$pieces', '$surface', '$services')")or die ("erreur requète");
// on ferme la connexion
mysql_close();
echo "<div class = \"ptitre\"> </b><br><br><br><br><b>La location à été ajoutée</b><br><br><br><br> Vous allez être redirigé vers la page de configuration</div>";
?><head>
<meta http-equiv="refresh" content="2;url=config_reserv.php">
<title>Ajout d'une location</title></head>
<link REL="StyleSheet" TYPE="text/css" HREF="style.css">
<p> </p>
<p> </p>
<table width="50%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td class="texte">
<div align="center">Si rien ne se passe cliquez ici : <a href="config_reserv.php">Configuration</a></div>
</td>
</tr>
</table>
tous les champs sont bien importés dans la BDD, mais dans le champ services, il ne m'affiche que la dernière des valeurs selectionnée.
Par exemple, si je coche Jardin et terrasse, il ne m'enregistre que terrasse.
j'ai du rater une étape, et toute aide est bienvenue
Dernière modification par allhambra (10-09-2009 12:47:17)
Hors ligne
Saluton,
Deux choses :
1.- Aucune donnée tabulaire dans les colonnes des tables des bases de données. Ce n'est pas en formes normales. En formes normales toute valeur d'une colonne doit être strictement scalaire.
2.-Comme un select multiple n'est pas un scalaire mais une liste de scalaires, dans le script de traitement, il faut en tenir compte. $_POST['services'] est un array().
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
coucou et merci pour ta réponse
si je te suis bien il me faudrait quelque chose du genre :
$fieldnames = array_keys($values[0]);
$size = sizeof($fieldnames);
$i = 1;
$sql = "INSERT INTO$table";
$fields = '( ' . implode(' ,', $fieldnames) . ' )';
$bound = '(:' . implode(', :', $fieldnames) . ' )';
$sql .= $fields.' VALUES '.$bound;
$stmt = $this->db->prepare($sql);
foreach($values as $vals)
{
$stmt->execute($vals);
}
}
?>
où dans mon cas, $fieldnames= $services ???
Hors ligne