plusieurs valeurs pour une variable?

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 : plusieurs valeurs pour une variable?

par freebug » 28 juin 2005, 17:12

Nickel chrome ;) !!!!

Grand merci a tous ca marche comme sur des roulettes.

Deux problemes de plus de resolus.

par freebug » 28 juin 2005, 17:06

arfffff
j ai du yaourt dans les yeux ou quoi !!!!!

merci je vais essaye ca.

par zeus » 28 juin 2005, 17:04

Tu as raison pour le foreach

ensuite, ton erreur est facile :

tu déclare $slq4
$slq4="INSERT INTO convient(id_convient,num_imprimante,reference)
   VALUES ('','".$imprimante."','".$reference."')";
et tu utilise $sql4
mysql_query($sql4) or die(mysql_error());

par freebug » 28 juin 2005, 16:58

En fait je crois que je dois me melanger les pinceaux dans les variables.

dans le :
foreach ($imprimante as $num_imprimante) 
la premiere variable represente le tableau

donc ca ne decrait pas plutot etre la variable que l on a declare juste au dessus:
$num_imprimante = $_POST['imprimante'];
car j ai essaye avec le
foreach ($imprimante as $num_imprimante) 
et il me remet exactement la meme erreur :

Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\ges_imprimante\nouvelle_cartouche\nouvelle_cartouche.php on line 22




Puis j ai essaye avec

foreach ($num_imprimante as $imprimante) 
 {     
   $slq4="INSERT INTO convient(id_convient,num_imprimante,reference) 
   VALUES ('','".$imprimante."','".$reference."')"; 
   mysql_query($sql4) or die(mysql_error()); 
 }
et la il me dit :

Notice: Undefined variable: sql4 in c:\program files\easyphp1-8\www\ges_imprimante\nouvelle_cartouche\nouvelle_cartouche.php on line 26
Query est vide

par zeus » 28 juin 2005, 16:34

Dans un foreach, il ne faut pas mettre les []
foreach ($imprimante as $num_imprimante)

par freebug » 28 juin 2005, 16:27

Je viens de tester:

la partie de mon formulaire donne :
<?php
                        $base = "ges_imprimante";
       			//ouverture de la nouvelle connexion sur la base
                        if ($base != -1 ){
                            //ouvertur de la nouvelle connexion sur la base récupérée
                           $link = connect_db($base);
                            //édition de la requete
                            $requete_util = "select * from imprimante";
							//execution de la requete
                            $resultat_util = mysql_query($requete_util) or die ("requete base erreur");
                            while ($data = mysql_fetch_array($resultat_util))
                            {
                              
                            print "<input type=checkbox name='imprimante[]' value='".$data['num_imprimante']."'> ".$data['imprimante']."<br>\n"; 

                           }
                          
                        }
                        else
                        {
                            ?>
        <div class="erreur">
        
      
      Aucune base n'est activ&eacute;e.
      
      
        </div>
        <br>
        <br>
        <?php
                        }
                        //fermeture de la connection
                        mysql_close();
                        ?>
et la partie traitement du formulaire donne :
<html>
<body bgcolor="#000066" text="yellow">
<?php

include("connect.php");


$reference = $_POST['reference'];    
$libelle = $_POST['libelle'];
$prix = $_POST['prix'];
$stock = $_POST['quantite'];
$compatible = $_POST['compatible'];
$num_imprimante = $_POST['imprimante'];





 $sql3 = "INSERT INTO cartouche(reference,libelle,prix,stock,compatible) VALUES('$reference','$libelle',$prix,$stock,'$compatible')";   
 mysql_query($sql3) or die(mysql_error());
 
 foreach ($imprimante[] as $num_imprimante) 
 {     
   $slq4="INSERT INTO convient(num_imprimante,reference) 
   VALUES ('','".$num_imprimante."','".$reference."')"; 
   mysql_query($sql4) or die(mysql_error()); 
 }


mysql_close();
?>

<br><br><br><br><br><br><br><br><br><br><br>
<p align='center'>Insertion reussie .</p>
<br><br><br><br><br><br>
<p align='center'><a href=../centre_acceuil.htm>retour a l'accueil</a></p>

</body>
</html>
lorque j execute le formulaire la partie du traitement qui incremente ma table cartouche fonctionne.
par contre ma table convient n'est pas incremente et le message d erreur suivant apparait:

Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\ges_imprimante\nouvelle_cartouche\nouvelle_cartouche.php on line 22

soit a la ligne :
 foreach ($imprimante[] as $num_imprimante)


j ai essaye en ecrivant $imprimante et il me met le meme message d erreur

par ouckileou » 28 juin 2005, 15:51

ça parait pas mal oui
mais indente ton code et sépare les variables du texte
<?php
foreach ($imprimante[] as $num_imprimante)
{    
   $slq4="INSERT INTO convient(num_imprimante,reference)
   VALUES ('".$num_imprimante."',''.$reference."')";
   mysql_query($sql4) or die(mysql_error());

?>
-Est ce que la boucle s'arrete bien a la fin du tableau (il ne faut pas lui mettre de balise de fin) ?
la boucle foreach parcoure le tableau tant qu'il y a des trucs dedans, elle s'arrête au bout
-il n'y a pas besoin de declarer la variable de num_imprimante par un $num_imprimante=$_POST['imprimante[]']?
si, tu dois toujours la récupérer comme ça
$num_imprimante=$_POST['imprimante']; // pas de crochets pour le  moment

par freebug » 28 juin 2005, 15:37

est ce que cela parait bon ?
<?php
foreach ($imprimante[] as $num_imprimante) 
{    
$slq4="INSERT INTO convient(num_imprimante,reference)
VALUES ($num_imprimante,'$reference')";
mysql_query($sql4) or die(mysql_error());

?>
a savoir que je vais mettre ca a la suite de mon taitement de mon formulaire
<html>
<body bgcolor="#000066" text="yellow">
<?php

include("connect.php");


$reference = $_POST['reference'];    
$libelle = $_POST['libelle'];
$prix = $_POST['prix'];
$stock = $_POST['quantite'];
$compatible = $_POST['compatible'];



 $sql3 = "INSERT INTO cartouche(reference,libelle,prix,stock,compatible) VALUES('$reference','$libelle',$prix,$stock,'$compatible')";   
 mysql_query($sql3) or die(mysql_error());
 
//ici sans les balises <?php et ?>


mysql_close();
?>

<br><br><br><br><br><br><br><br><br><br><br>
<p align='center'>Insertion reussie .</p>
<br><br><br><br><br><br>
<p align='center'><a href=../centre_acceuil.htm>retour a l'accueil</a></p>

</body>
</html>
question:
-est ce que c est bien comme ca qu il faut declarer le tableau ?
-Est ce que la boucle s'arrete bien a la fin du tableau (il ne faut pas lui mettre de balise de fin) ?
-il n'y a pas besoin de declarer la variable de num_imprimante par un $num_imprimante=$_POST['imprimante[]']?

@ouckileou : non je n'est jamais utilise les tableaux ca fait une semaine que j ai commence l'html et le php et sur mon interface php/html j ai beaucoup de truc qui fonctionne que j ai repris sur qq un mais j arrive pas a comprendre comment ca fonctionne et lui n'arrive pas a m expliquer comment il a fait :)

par ouckileou » 28 juin 2005, 14:49

bah plus précisément tu cherches :)

essaye foreach() pour récupérer facilement les valeurs
=> http://fr.php.net/manual/fr/control-str ... oreach.php
après franchement c'est pas dur

tu veux créer des lignes numéro-cartouche | numéro_imprimante

t'as le numéro cartouche d'un coté, et plein de numéros imprimantes dans l'autre, dans un tableau

alors bon... tu devrais t'en sortir non ? tu n'as jamais utilisé les tableaux ?

par freebug » 28 juin 2005, 14:44

:-k plus precisement ca donne ?

<?php
$reference=$_post['$libelle'];

while (imprimante[] <>""))
{

INSERT INTO convient(num_imprimante,reference)
VALUES (????,$reference);
}

?>

par ouckileou » 28 juin 2005, 14:33

avec les crochets tu va récupérer un tableau, rempli uniquement avec les valeurs des cases cochées

donc à la réception tu boucles sur ce tableau, et pour chaque valeur tu insères ta ligne

par freebug » 28 juin 2005, 14:29

bon on s approche du resultat dernier petit detail
apres chaque nom d imprimante j ai un >
ex :HP 1220c> 6400> Phaser 8400> Lexmark W812> Dell A320>

sinon (la il va y avoir du boulot) apres comment je fais pour savoir les lesquelles cases sont coche?

comment je fais pour qu il fasse autant d'insertion que de case de cocher?

voila deja avant que j ai compris le tout on decrait etre tard ce soir ^^

par zeus » 28 juin 2005, 14:10

autant pout moi, je devrais lire les sujets avec un peu plus d'attention ...

Sorry :oops:

ouckileou a parfaitement raison

par ouckileou » 28 juin 2005, 14:06

non mais en fait je dis n'importe quoi, pour l'instant imprimante n'est pas une variable, simplement le nom de la future variable
print "<input type=checkbox name='imprimante[]' value='".$data['imprimante']."'> ".$data['imprimante'].">";
si tu enlèves les crochets tu ne pourras pas récupérer toutes les valeurs cochées
(il faudrait un exemple de traitement de saisie dans des cases à cocher :lol:)

par zeus » 28 juin 2005, 14:06

enlève les [] et laisse le $