plusieurs valeurs pour une variable?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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

Eléphant du PHP | 55 Messages

28 juin 2005, 14:44

:-k plus precisement ca donne ?

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

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

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

?>

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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 ?

Eléphant du PHP | 55 Messages

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 :)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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

Eléphant du PHP | 55 Messages

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juin 2005, 16:34

Dans un foreach, il ne faut pas mettre les []
foreach ($imprimante as $num_imprimante)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 55 Messages

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

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());
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 55 Messages

28 juin 2005, 17:06

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

merci je vais essaye ca.

Eléphant du PHP | 55 Messages

28 juin 2005, 17:12

Nickel chrome ;) !!!!

Grand merci a tous ca marche comme sur des roulettes.

Deux problemes de plus de resolus.