Question en php

Fermé
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011 - 23 mai 2009 à 21:07
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011 - 30 mai 2009 à 00:09
bonjour ,

quelqu'un peut m'aider svp ? je ss debutant en php et on me signale une erreur dans ce code :
.
....
$x1=$_POST['a'];
$x2=$_POST['b'];
$x3=$_POST['c'];
$req="update contenir set qte='$x3' where idproduit='$x1' ,nbdc='$x2' ";
.....


Notice: Undefined index: a in C:\wamp\www\editprod.php on line 4

Notice: Undefined index: b in C:\wamp\www\editprod.php on line 5

Notice: Undefined index: c in C:\wamp\www\editprod.php on line 6

merci davance
A voir également:

12 réponses

Nirvv Messages postés 25 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 13 juin 2009 1
26 mai 2009 à 19:57
Undefined index : Toujours la meme erreur, la variable n'est pas défini au moment ou tu vas sur la page.
Donc comme on a dit plus haut, faut faire un "isset" pour voir si la variable existe.

Là, c'est la variable a et tu la recupere par un POST donc tu fais :
if(isset($_POST['a']))
{
$x1=$_POST['a'];
Ta requete sql blabla..
}

Et là t'auras plus d'erreur, et normalement ça fonctionne correctement.
1
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011
26 mai 2009 à 20:25
bien recu, merci ami .

jai une autre question, comment faire des tabulations en php , j'affiche des données mais c moche sans les espaces, comment faire svp ?
0
Utilisateur anonyme
23 mai 2009 à 21:35
$req="update contenir set qte='$x3' where idproduit='$x1' and nbdc='$x2' ";
0
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011
23 mai 2009 à 22:09
merci mais ca ne fonctionne tjs pas :s...

ca pose tjs le mm probleme, dautres suggestions ?merciii
0
Bonjour

La remarque de TotoAussi est juste, mais ça n'est pas ça qui provoque les 3 messages que tu affiches.
Tu as ces messages parce que les variables $_POST['a'],$_POST['b'], et $_POST['c'] ne sont pas définies.
C'est classique quand on essaye de traiter un formulaire avant de l'avoir saisi.
Si tu as bien le formulaire et son traitement dans le même script, il faut éviter toute la partie traitement quand le formulaire n'a pas été saisi, en testant l'existence des variables avec if (isset($_POST['a']) &&.. etc
0
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011
23 mai 2009 à 22:18
oui jai compris c que tu voulais dire mais ca me pose encore des problemes, voici tt le code en html et en php ,si vous pouvez reperer la fuite, jen serais tres reconnaissant .
code HTML :
<form method="POST" action="editprod.php">
saisissez le Numero de Bon de Commande: <input type="int" name="a"><br>
saisissez la Rference du produit: <input type="varchar" name="b"><br>
saisissez la nouvelle quantite: <input type="int" name="c"><br>
<input type="submit" value="ok">
</form>
code PHP :
<?php
$x=mysql_connect('localhost','root','');
mysql_select_db('mysite',$x);
$x1=$_POST['a'];
$x2=$_POST['b'];
$x3=$_POST['c'];
$req="update contenir set qte='$x3' where idproduit='$x1' and nbdc='$x2' ";
mysql_query($req);
mysql_close();
?>
0
Nirvv Messages postés 25 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 13 juin 2009 1
23 mai 2009 à 22:08
"Undefined index ..." ça veut dire que la variable dite n'est pas défini (pas déclaré).

Il faut que tu fasses
if(isset($_POST['a']) && isset($_POST['b']) && isset($_POST['c'])) // Si tes 3variables POST existent :
{
Tu mets ton $x1 = ... etc
}

Et oui oublie pas le "and" du "WHERE" ^^'.


EDIT : owned :( lol ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nirvv Messages postés 25 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 13 juin 2009 1
23 mai 2009 à 22:24
Bon alors personnellement, j'ai jamais vu de "type="int"" dans des input ou meme varchar. J'ai vu ça que dans les types pour les champs dans une BDD. Apres peut-être que ça existe je connais pas tout.
Mais après moi je te conseillerais de mettre plutot type="text" (meme si c'est des chiffres ça fonctionne).

Pour la partie php :
Ensuite, c'est encore mon avis, mais t'es pas obligé de mettre ta variable $x dans la select de bdd.
Tu peux faire :
mysql_connect("localhost", "root", "");
mysql_select_db("mysite");
(Chacun sa façon de coder apres ^^')
Ensuite tu fais comme "le père" et moi t'avons dit : Tu mets des if(isset(...)) pour voir si tes variables existent (et qu'on a bien envoyer les données avec le formulaire).
Pour faire un update, il y a aussi plus simple :
mysql_query("UPDATE contenir SET qte=..... blabla");

Je pense que ça devrait aller ensuite ^^'
0
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011
23 mai 2009 à 22:44
jai fais comme comme vs m avez dis , jai mis des if(isset(...)), ya plus derreurs c cool , mais la il recupere pas les valeurs que je saisi .. j c plus koi faire ....

merci d me trouver une solution
0
Je confirme, les type de champs de saisie "int" et "varchar" n'existent pas en HTML. Il ne faut pas mélanger avec les types de champs mysql ...
0
Nirvv Messages postés 25 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 13 juin 2009 1
23 mai 2009 à 22:51
T'as bien changer les types de tes input en mettant type="text" ?
Ah oui aussi, une balise input et une balise br ça se ferme.
Soit :
<input type="int" name="a" />
et
<br />
0
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011
23 mai 2009 à 22:57
oui oui jai tt fait , voila mm le code :
<form method="POST" action="editprod.php">
saisissez le Numero de Bon de Commande: <input type="text" name="a"/><br></br>
saisissez la Rference du produit: <input type="text" name="b"/><br></br>
saisissez la nouvelle quantite: <input type="text" name="c"/><br></br>

<input type="submit" value="ok">
</form>
0
Nirvv Messages postés 25 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 13 juin 2009 1
25 mai 2009 à 20:31
Bon apparemment dans le code en lui-même il n'y a pas d'erreur de "fonctionnement". Donc ça doit venir de la BDD.
Est-ce que tes champs "qte, idproduit, nbdc" sont de types "INT" ? (Apparemment on doit insérer des chiffres donc le mieux c'est que ce soit un champ de type INT, ou BIGINT si c'est beaucoup de chiffres a entré, mais en général int suffit pour contenir de très grand nombre déjà ^^').

Ensuite il faut que tes champs existent déjà.
Par exemple si tu n'as aucune entree dans ta base, tu pourras rien update.
Car tu dis d'update la quantité là ou l'id du produit et le numero de reference est égal à ce qu'on a entré.
Donc si tu n'as pas les chiffres correspondant ça marche pas.

Jte donne un exemple :
Tu veux update la quantité d'un produit a 5, dont l'id est 500, et le numéro de reference 16259.
Il faut que tu possèdés une entrée possedant idproduit a 500, et nbdc a 16259.
Ensuite là ta requete SDL est correcte, tu entres donc : 5, 500, 16259 et ça updatera la bonne entrée.

Sois sur que tout ça soit correct ^^'
0
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011
25 mai 2009 à 23:42
oui oui jai verifie maintenant et ca a marche tres bien :d , merci .
jai une autre petite question , on me signale undefined index a dans le fichier php , c koi le probleme svp?:
code html :
<form method="POST" action="reglerfact.php">
saisissez le NUMERO DU BON DE COMMANE: <input type="text" name="a"/><br>
<input type="submit" value="ok">
</form>

code php :

<?php
$x=mysql_connect('localhost','root','');
mysql_select_db('mysite',$x);
$x1=$_POST['a'];
$req="insert into regler values ('$x1')";
mysql_query($req);
mysql_close();
?>
0
Je te conseil aussi d'utiliser mysql_real_escape_string!!
regarde la doc pour l'utiliser :
http://www.progmatique.fr/docs/
0
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011
26 mai 2009 à 20:47
je ss alle au site ke tu ma indiqué mais cetait pas c que je voulais , moi je veux afficher des tabulations

produit prix quantité ....
voici le code :
echo " REFERENCE DU PRODUIT ","   ","   ", "PRIX ", "   ","   "," QUANTITE ","<br>";
while($lig=mysql_fetch_array($res))
{
echo " \t ", $lig['idproduit']," \t "," \t "," \t ","\t ","   ","   ","   ","   ",
$lig['prix'],"$"," <t\> <t\>",
$lig['qte'],"<br>";
$montant_HT+=$lig['prix']*$lig['qte'];
$montant_TVA=$montant_HT*0.20;
$montant_TTC=$montant_HT+$montant_TVA;

}
les tabulations ne saffichent tjs pas , aidez moi svp
0
Le lien que je t'ai envoyé sert a protéger ton code des attaques. (injection sql) Tu utilise tes variable $_GET et/ou $_POST directement dans ta requête, c'est pas sécurisé :)

Sinon, pour tes tabulations, ça n'existe pas en HTML, donc le plus simple : ton résultat dans un tableau
ou bien si en css si tu connais.

bon courage :)
0
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011
26 mai 2009 à 23:41
oui oui tres bone idee , sauf que je ss debutant en php :s ... si seulement quelqu'un peut me dire comment faire jen serai tres reconnaissant .

et merci davance
0
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011
28 mai 2009 à 02:17
bonjour est ce que quelqu'un peut me dire comment afficher des informations dans un tableau en php..?
j'en serai tres reconnaissant .

et merci davance
0
sinzo Messages postés 91 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 23 septembre 2011
30 mai 2009 à 00:09
bonjour ,

svp jai realisé un code en html ca me rend dingue jarrive pas a trouver la faille!!
voici la partie du code qui me derange :
if(isset($_POST['a']) && isset($_POST['b']) && isset($_POST['c']))
{ $x1=$_POST['a'];
$x2=$_POST['b'];
$x3=$_POST['c'];
$e=0;
$req="select * from contenir where idproduit='$x2' and nbdc='$x1'";
$res=mysql_query($req);
while($lig=mysql_fetch_array($res))
{ if(($lig['idproduit']=='$x2') && ($lig['nbdc']=='$x1'))
{
$x3=$lig['qte']+$x3;
mysql_query("update contenir set qte='$x3' where idproduit='$x2' and nbdc='$x1'");
$e=1;
}

}
if($e==0)
{
$req="insert into contenir values ('$x2','$x1','$x3')";
mysql_query($req);
}
}
0