Insertion d'une variable array issue d'un formulaire.

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 : Insertion d'une variable array issue d'un formulaire.

par Invité » 01 oct. 2005, 21:07

Merci beaucoup pour vos interventions rapides, mon problème est résolu !

par Cyrano » 01 oct. 2005, 20:17

$champs = implode(", ", $enregistrement);
Ensuite, tu fais un écho($champs); et ils seront tous séparés par une virgule. Attention, il n'y aura ni virgule au début ni à la fin.

Pour information...

par Invité » 01 oct. 2005, 20:11

Voici ce que j'obtiens lorsque j'effectue
un echo $enregistrement;
INSERT INTO machines (Marque,Modele,TypeMachine,NB_Goblets,NB_Sels,Liste_Sels,NB_Cafe_Min,Types_Monnaies,Dim_H,Dim_L,Dim_P,Description) VALUES ('Cocou','Coucou','Thé Feuilles','100','100','Array','','Array','1000','1000','1000','Test')

Comment transformer ce Array svp ?

par Invité » 01 oct. 2005, 19:50

Effectivement je ne déclarait pas le champ 'Types_Monnaies' d'ou le probleme.

Merci

Seulement mon code n'est pas bon et je n'obtiens pas le resultat escompté.
En effet, a chaque sélection effectuée dans le formulaire de saisie, une création est faite dans la table. ( et non une seule création contenant tous les éléments sélectionnés dans le formulaire, pour le champ donné (Liste_Sels par exemple))

Il faudrait je pense que je sorte la requete SQL de la boucle. Mais je ne sais pas concatener les différents éléments d'un tableau, pour ensuite pouvoir les insérer dans la requete.

Mon but : obtenir $Liste_Sels = "Café court, Café long, Café crême, etc..."

Une idée SVP ?

par Cyrano » 01 oct. 2005, 19:33

Sauf que dans ta requête, tu envoies 13 valeurs pour 12 champs mentionnés, vérifie bien, soit il manque un champ, soit il y a une valeur de trop.

par Invité » 01 oct. 2005, 19:29

Et pourtant ma table comporte 13 champs ma requete egalement :o(

par Cyrano » 01 oct. 2005, 19:22

Ça veut dire que le nombtre de champs dans la table ne correspond pas au nombre de champs inscrits dans la requête qui en comporte à priori au moins un de trop.

par Invité » 01 oct. 2005, 19:21

Merci, aussitot dit aussitot fait ! le message d'erreur est le suivant :

Column count doesn't match value count at row 1

par ouckileou » 01 oct. 2005, 19:12

les messages d'erreur MySQL ne s'affichent pas automatiquement, tu en as peut-être un

affiche le avec cette fonction : mysql_error()
mysql_query($enregistrement) or dir(mysql_error());
ou fais afficher le code de la requête pour l'exécuter dans phpMyAdmin pour la tester directement

tu auras surement des infos en plus ;)

Insertion d'une variable array issue d'un formulaire.

par Invité » 01 oct. 2005, 19:06

Bonjour,
J'ai créé une table 'machines' qui m'aide à faire un descriptif de ditributeurs automatiques de boissons chaudes, elle contient les champs :
id > INT auto increment
Marque > VARCHAR(255)
Modele > VARCHAR(255)
TypeMachine > ENUM('Café grains', 'Café soluble', 'Café Moulu', 'Thé feuilles')
NB_Goblets > smallint(6)
NB_Sels > smallint(6)
Liste_Sels > set('Café court', 'Café long', 'Café crême', 'Café au lait', 'Cappuccino', 'Moccacino', 'Cappcioc', 'Lait sucré', 'Boisson chocolat', 'Boisson chocolat au lait', 'Thé feuilles', 'Thé soluble', 'Potage tomates', 'Potage legumes', 'Eau chaude', 'Gobelet seul', 'Plus sucre', 'Sans sucre', 'Séléction sucre par affichage', 'Orge', 'Orge+Lait')
NB_Cafe_Min > smallint(6)
Dim_H > decimal(10,0)
Dim_L > decimal(10,0)
Dim_P > decimal(10,0)
TypesMonnaies > set('Monnaie', 'Jetons', 'Monnayeur accepteur', 'Monnayeur rendeur', 'Cashless')
Description > longtext

Pour renseigner les champs de cette base, je crée un formulaire situé sur la page materiel.php qui a pour action la page enreg_machine.php

Là ou je coince, c pour l'insertion dans ma table SQL des données issues des champs Liste_Sels et TypesMonnaies du formulaire (qui utilisent la balise

Code : Tout sélectionner

<select name="Liste_Sels[]" multiple>
par exemple pour liste sels.

voici ce que j'ai mis dans mon script enreg_mach.php, mais qui ne focntionne pas :
<?php
$i=0;
$j=0;
while($_POST["Types_Monnaies"][$i] && $_POST["Liste_Sels"][$j])
{
    $enregistrement = "INSERT INTO machines (id, Marque, Modele, TypeMachine, NB_Goblets, NB_Sels, Liste_Sels, NB_Cafe_Min, Dim_H, Dim_L, Dim_P, Description) ".
                      "VALUES ('', '$Marque', '$Modele', '$TypeMachine', '$NB_Goblets', '$NB_Sels', '$Liste_Sels[$j]', '$Types_Monnaies[$i]', '$NB_Cafe_Min', '$Dim_H', '$Dim_L', '$Dim_P', '$Description')";
    mysql_query($enregistrement);
    mysql_close();
    $i++;
    $j++;
}
Aucun message d'erreur n'apparait, mais le nouvel enregistrement n'est pas inséré dans la table

D'avance merci pour votre aide.

mailto:webmaster[Nosp@m]chambraymatic.fr
[NOSP@M] = @