Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & SQL-Server
PHP & SQL-Server Forum d'entraide sur SQL-Server avec PHP. Avant de poster -> FAQ SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2007, 17h14   #1
Invité régulier
 
Inscription : mai 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 63
Points : 7
Points : 7
Par défaut Insertion via checkbox des données dans une bdd

Bonjour à tous et merci de me répondre,

je suis bloquée je sais pas comment faire pour récupérer des données sur un formulaire que j'ai créé pour les insérer dans ma base ???
si quelqu'un sait comment les récupérer et les insérer ? ou quel test il faut faire ? je lui serais bien reconnaissante !
mes input (je les ai recupéré sur un tuto ) sont du genre :

Code HTML :
1
2
<input type="checkbox" name="fonction_controlee[]" id="1" value="OK"/ > 
Etiquetage

je récupère la valeur OK s'il est coché et mon code php pour les inserer est le suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?PHP
 
$choix =implode(', ',$fonction_controlee);
 
if (isset($_POST['fonction_controlee']) {
	if (isset($_POST['OK'])){
mssql_query("INSERT INTO FONCTIONS_CONTROLEES (etiquetage, enclanchement, marquage_laser, assemblage_implant, matiere, indice_plan, 
 
assemblage_broche, autotaraudage, oxydation_anodique, nutriration ) VALUE 
 
('".$choix."')";
 
	}
}
?>
agur29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 18h15   #2
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
je dirai qu'il faut faire plutot quelque chose dans le genre
Code :
1
2
3
4
5
6
7
 
$total=count($_POST['fonction_controlee']);
$compteur=0;
while($compteur<$total){
  echo $_POST['fonction_controlee'][$compteur];
  $compteur++;
}
ou un truc dans le genre.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 19h09   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
La requête ne sera pas bonne car vous regroupez actuellement le résultat de vos champs en un seul. Je verrais plutôt :
Code :
1
2
3
4
5
6
$choix = "'" . implode("', '", $fonction_controlee) . "'";
 
# ... 
 
mssql_query("INSERT INTO FONCTIONS_CONTROLEES (etiquetage, enclanchement, marquage_laser, assemblage_implant, matiere, indice_plan, assemblage_broche, autotaraudage, oxydation_anodique, nutriration ) VALUE 
($choix)";
Mais il reste éventuellement deux choses à gérer :
  • La valeur des checkbox cochées/non cochées
  • Le type de vos champs (string contre numérique ou assimilé)

Note : vous utilisez $fonction_controlee puis $_POST['fonction_controlee']
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 17h18   #4
Invité régulier
 
Inscription : mai 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 63
Points : 7
Points : 7
Merci pour les réponses,

j'ai essayé de faire un "foreach" comme suit :

Code :
1
2
3
4
5
6
7
foreach($_POST['fonction_controlee'] as $val){
echo "<BR><B>$val\n</B>";
 
if (array_key_exists('OK pour Etiquetage', $_POST['fonction_controlee']) ){
    $val = 'Y';
  }else{
    $val = 'N';}
pour les valeur des checkbox c-a-d : y s elle est cochée et N sinon......mais j'ai toujours Y qui est affecté pour toutes les valeur ???
agur29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 17h22   #5
Invité régulier
 
Inscription : mai 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 63
Points : 7
Points : 7
je me suis trempé c'est la Valeur N qui est affectée pour toutes les valeur du tableau et non Y !
agur29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 18h03   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Pourrait-on avoir plus de détails : comment sont générées les checkbox et à quoi correspondent-elles ?

Parce que vos checkbox, si j'ai bien compris, il y en a une par champ (type booléen) or après avoir validé le formulaire on a aucun moyen d'associer (identifier) celle qui a été cochée au champ correspondant.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 18h10   #7
Invité régulier
 
Inscription : mai 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 63
Points : 7
Points : 7
LEs checkbox sont du genre :
Code :
1
2
3
4
<input type="checkbox" name="fonction_controlee[]" value ="OK pour 
 
Etiquetage"<?php if(est_selectionne("etiquetage")) {echo 'checked';
} ?>/>Etiquetage<br/>
et je veux faire en sorte que si une valeur est cochée elle prendra la valeur 'Y' sinon ça sera 'N' et par la suite inserer la valeur 'Y' dans une table à la colonne par exemple ici ça sera 'etiquetage'

et la fonction est_selectionne () est :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Renvoie vrai si $option fait partie du résultat
function est_selectionne($option) {
    if (!isset($_POST['fonction_controlee'])) {
            return FALSE;
    }
    for ($i = 0, $c = count($_POST['fonction_controlee']); $i < $c; $i++) {
        if ($_POST['fonction_controlee'][$i] == $option) {    
 
	return TRUE;	
echo "<br/><b>" . $_POST['fonction_controlee'][$i] . "</b>";
 
      }
    }
    return FALSE;
}
 
?>
voila donc mon code
agur29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 18h45   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
C'est plus clair ainsi

Un moyen simple de faire tout cela, je pense, serait :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
# Tableau contenant les champs de la table de type booléen
# (la valeur N indique un état désactivé s'ils sont absents du résultat du formulaire)
$fonctions = array(
    'etiquetage' => 'N',
    'enclanchement' => 'N',
    'marquage_laser' => 'N',
    # ...
);
 
# Formulaire soumis ?
if (!isset($_POST['mon_champ_submit'])) {
?>
 
<form method="POST">
    <!-- ... -->
 
<?php
    # Génération des checkbox à partir du tableau $fonctions
    foreach ($fonctions as $k => $v) {
        echo '<input type="checkbox" name="fonction_controlee[' . $k . ']" value="Y"' . (isset($_POST['fonction_controlee']) && isset($_POST['fonction_controlee'][$k]) ? ' checked="checked"' : '') . ' />' . $k;
    }
?>
 
    <!-- ... -->
</form>
 
<?php
} else {
    # On prépare la requête SQL ...
    if (isset($_POST['fonction_controlee']) && count($_POST['fonction_controlee']) > 0) {
        $valeurs = array_merge($fonctions, $_POST['fonction_controlee']);
        $sql_fonctions = "'" . implode("', '", $valeurs) . "'";
    } else {
        $sql_fonctions = "'" . implode("', '", $fonctions) . "'";
    }
    $sql_champs = implode(', ', array_keys($fonctions));
    # ... et on l'exécute
    mssql_query("INSERT INTO FONCTIONS_CONTROLEES($sql_champs) VALUE($sql_fonctions)");
}
?>
Mais ce n'est probablement pas ce que vous attiendez
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2007, 10h17   #9
Invité régulier
 
Inscription : mai 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 63
Points : 7
Points : 7
Merci beaucoup julp,

t'es un chef c'est exactement ce que je veux.....je viens de le tester et ça marche !

merci encore
agur29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h43.


 
 
 
 
Partenaires

Hébergement Web