paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005
-
10 août 2005 à 10:58
paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005
-
10 août 2005 à 14:17
Bonjour,
J'ai créé un formulaire qui affiche un tableau dont chaque ligne correspond à un fournisseur.
Pour une machine donnée, dont je récupère le nom_machine, j'affiche ce formulaire en cochant le fournisseur qui lui est associé (code formulaire_modif_fournisseurmachine.php). Ce formulaire s'affiche correctement.
Par contre, le user peut tout à fait modifier ce "tableau à cocher" et en appuyant sur le bouton 'modifier' faire un update sur la table machine en modifiant le fournisseur associé (code modif_fournisseurmachine.php).
Seulement, je n'arrive pas à récupérer la variable id_fournisseur. j'obtiens Array !
Je ne sais pas comment faire... Pouvez-vous m'aider ?
Merci d'avance et bonne journée
Paulinett'
Voici mon code :
modif_fournisseurmachine.php
<HTML>
<HEAD>
<TITLE> Modification des caractéristiques d'une machine </TITLE>
<LINK REL = stylesheet HREF='film3.css' TYPE='text/css'>
</HEAD>
<!-- Récupération des variables pour l'update fournisseur -->
<?php
// Récupération de variables du formulaire
$nom_machine=$_POST['nom_machine'];
echo $nom_machine;
Résultat de la mise à jour de votre fournisseur pour la machine <?php echo $nom_machine;?>
//<?php
// On a besoin de ce fichier pour la connexion
require("Connect.php");
// Connexion au serveur et accès à la base
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE, $connexion);
// Requete engendrée par la pression du bouton Modifier
if (isSet($_POST['modifier']))
$requete = "UPDATE Machine "
."SET Machine.id_fournisseur=$id_fournisseur"
."WHERE nom_machine='$nom_machine'";
// Exécution de la requête SQL
$resultat = mysql_query($requete,$connexion);
if ($resultat)
echo "<HR> La requête '$requete' a été effectuée.\n";
else
{
echo "La requête n'a pas pu être effectuée pour la raison suivante :"
.mysql_error($connexion);
}
<HTML>
<HEAD>
<TITLE> Formulaire de modification du ou des fournisseurs d'une machine </TITLE>
<LINK REL =stylesheet HREF= 'film3.css' TYPE='text/css'>
</HEAD>
<H1> Formulaire de Modification de lu fournisseur de la machine
<!--------------------------------------->
<!-- RECUPERATION DU NOM DE LA MACHINE -->
<!--------------------------------------->
<?php
$nom_machine =$_POST['nom_machine'];
?>
Tous les Fournisseurs disponibles
Les founisseurs de votre machine <?php echo $nom_machine ; ?> sont cochés
<?php
// Appel le fichier connect.php
require_once("Connect.php");
// Connexion au serveur et accès à la base
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE, $connexion);
// Ecriture de la 1ere Requete pour sélectionner tous les fournisseurs
$fournisseurs_tous=mysql_query("SELECT id_fournisseur, nom_fournisseur, adresse_fournisseur, codePostal_fournisseur, ville_fournisseur, tel_fournisseur, fax_fournisseur, email_fournisseur, contact_fournisseur FROM Fournisseur",$connexion);
//Ecriture de la 2ème Requete pour sélectionner tous les fournisseurs de la machine
$fournisseurs_machine=mysql_query("SELECT Fournisseur.id_fournisseur FROM Fournisseur, Machine WHERE Machine.nom_machine LIKE '%$nom_machine%'",$connexion);
echo "<CENTER>\"
//.\"<CAPTION ALIGN=bottom>Table Données Principales </CAPTION>\"
.\"----
Nom |AdresseCode Postal |VilleTéléphone |FaxEmail |Contact<TH>Check\n\";
morpheus262
Messages postés461Date d'inscriptionmardi 27 avril 2004StatutMembreDernière intervention16 février 2012 10 août 2005 à 11:26
le nom de ton checkbox doit etre un tableau oui bien sur. as tu essayer egalement le print_r avec ta version.
$id_fournisseur[ ]=$_POST['fournisseur'][ ]; sans les espace entre les [ ] c etait juste pour que ca soit visible sur le site, mais de toute facon ca ne dois pas changer les choses.
autres possibilité
$id_fournisseur[]=$_POST['fournisseur[]']; //mais je doute de celle la lol
$id_fournisseur[]=$_POST['fournisseur']; //peut etre plus probable
je t avoue que je ne suis plus sur et que j ai souvent ce probleme aussi alors je teste tout lol.
<HR>
Loi du plagiat industriel de Felson : <CITE>Voler les idées d'une personne, c'est du plagiat. En voler à plusieurs, c'est de la recherche.</CITE>
paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005 10 août 2005 à 11:44
la seule solution pour qu'il n'y ait pas d'erreur c'est
$id_fournisseur[]=$_POST['fournisseur'];
ensuite j'ai fait un print_r et voila ce que ca me donne :
Array ( [0] => Array ( [0] => 2 ) )
je ne comprends pas bien cette info... il y a deux tableaux imbriqués ?
j'ai deux fournisseurs qui sont présents : celui dont l'id est 6 : il n'est pas coché et celui dont l'id est 2 : il est coché...
morpheus262
Messages postés461Date d'inscriptionmardi 27 avril 2004StatutMembreDernière intervention16 février 2012 10 août 2005 à 11:49
OUi y a deux tableau donc normalement
$id_fournisseur=$_POST['fournisseur'];
avec un print_r marche alors. et la la reponse veux dire que oui tu as l id 2 de coché uniquement, dans le tableau tu ne vas avoir que les reponse a true ou coché en faite.
<HR>
Loi du plagiat industriel de Felson : <CITE>Voler les idées d'une personne, c'est du plagiat. En voler à plusieurs, c'est de la recherche.</CITE>
paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005 10 août 2005 à 11:58
le problème c'est que quand je coche mes deux fournisseurs id= 2 pour la premiere ligne et id=6 pour la seconde, ca me donne :
Array( [0] => Array ( [0] => 2 [1] => 2 ) ) !!
normallement si je comprends bien, je devrais avoir 6 en face de [1] =>, non ?
et puis j'ai un deuxième problème (décidément (((:) : c'est avec ma requete :
$requete = "UPDATE Machine "
."SET Machine.id_fournisseur=$id_fournisseur"
."WHERE Machine.nom_machine LIKE '%$nom_machine%'";
il m'annonce un problème avant Machine.nom_machine... je suppose que le SET sur $id_fournisseur ne lui plait pas !
paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005 10 août 2005 à 12:03
alors, j'ai trouvé la réponse à un des deux problèmes :
dans mon code, je ne dois pas déclarer les values des checkbox avec $machine_fournisseurs->id_fournisseur mais avec $tous_fournisseurs->id_fournisseur !!!
logique !!! petite tete cette paulinett'
par contre j'ai toujours mon problème de requete !
paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005 10 août 2005 à 14:17
ok super ! ma requete est prise en compte par contre elle prend un id_fournisseur = 0
en fait j'ai deux lignes :
- la première avec un id fournisseur = 2
- la deuxième avec un id fournisseur = 6
et à chaque fois que je coche une case, il me donne Array([0]=>Array([0]=>2))
et la requete qu'il effectue est :
La requête 'UPDATE Machine SET Machine.id_fournisseur='Array' WHERE Machine.nom_machine LIKE '%barth%'' a été effectuée.
est-ce qu'il ne faudrait pas faire une boucle pour récupérer l'id_fournisseur... je ne sais pas la valeur qu'il prend la : est-ce le 0 de Array([0]=>2) ou le premier 0.
je suis un peu perdue la...