[PHP] variable non numérique -> numérique
micom59
Messages postés
71
Date d'inscription
Statut
Membre
Dernière intervention
-
micom59 Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
micom59 Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai un problee avec une liste déroulante dans un formulaire, avant cette liste me retournait une variable numérique, tout marché parfaitement. cela ressemblait a
<SELECT name="zone">
<OPTION VALUE="01">01</OPTION>
<OPTION VALUE="02">02</OPTION>
<OPTION VALUE="A03">A03</OPTION>...
</SELECT>
Maintenant on me demande d'ajouter des lettres devant la zone, j'ai donc cela
<SELECT name="zone">
<OPTION VALUE="A01">A01</OPTION>
<OPTION VALUE="A02">A02</OPTION>
<OPTION VALUE="A03">A03</OPTION>
</SELECT>
mais mon programme ne marche plus, quelqu'un du forum m'expliquant que ce n'était plus une variable numérique. Peut on faire croire a php que zone est numérique malgrés la présence de lettres dedans? sinon comment faire?
ajouter.php qui traitee mon formulaire se présente de cette maniere (l'erreur donnée est Champ 'A01' inconnu dans where clause)
<html>
<body>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'kael';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
if (is_numeric($_POST['article']))
{
if (is_numeric($_POST['quantite']))
{
$sql = "SELECT * FROM article where article=".$_POST['article']." and zone=".$_POST['zone']."";
$result = mysql_query($sql) or die(mysql_error());
$articles= mysql_fetch_array($result);
$article = $articles['article'];
$quantite = $articles['quantite'];
$zone = $articles['zone'];
if($_POST['article']==$article and $_POST['zone']==$zone)
{
$quantite=$_POST['quantite']+$quantite;
mysql_query("UPDATE article SET quantite=".$quantite." where article=".$article." and zone=".$zone."");
echo "quantité modifiée";
}
else
{
mysql_query("INSERT INTO article VALUES('$_POST[article]','$_POST[quantite]','$_POST[zone]') ");
echo "Enregistrement effectué";
}
unset($_POST['article'],$_POST['zone'],$_POST['quantite'],$zone,$quantite,$article);
}
else {echo "erreur, quantité non valide! Veuillez entrer des données numériques";
}
}
else {
echo "erreur, article non valide! Veuillez entrer des données numériques";
}
?>
<BODY BGCOLOR=#33CCFF>
<p>
<a href="index.html">Accueil</a><p>
<a href="formulaire.html">Ajouter un autre composant</a><p>
<a href="visu.php">Visualisation générale</a><p>
</body>
</html>
<SELECT name="zone">
<OPTION VALUE="01">01</OPTION>
<OPTION VALUE="02">02</OPTION>
<OPTION VALUE="A03">A03</OPTION>...
</SELECT>
Maintenant on me demande d'ajouter des lettres devant la zone, j'ai donc cela
<SELECT name="zone">
<OPTION VALUE="A01">A01</OPTION>
<OPTION VALUE="A02">A02</OPTION>
<OPTION VALUE="A03">A03</OPTION>
</SELECT>
mais mon programme ne marche plus, quelqu'un du forum m'expliquant que ce n'était plus une variable numérique. Peut on faire croire a php que zone est numérique malgrés la présence de lettres dedans? sinon comment faire?
ajouter.php qui traitee mon formulaire se présente de cette maniere (l'erreur donnée est Champ 'A01' inconnu dans where clause)
<html>
<body>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'kael';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
if (is_numeric($_POST['article']))
{
if (is_numeric($_POST['quantite']))
{
$sql = "SELECT * FROM article where article=".$_POST['article']." and zone=".$_POST['zone']."";
$result = mysql_query($sql) or die(mysql_error());
$articles= mysql_fetch_array($result);
$article = $articles['article'];
$quantite = $articles['quantite'];
$zone = $articles['zone'];
if($_POST['article']==$article and $_POST['zone']==$zone)
{
$quantite=$_POST['quantite']+$quantite;
mysql_query("UPDATE article SET quantite=".$quantite." where article=".$article." and zone=".$zone."");
echo "quantité modifiée";
}
else
{
mysql_query("INSERT INTO article VALUES('$_POST[article]','$_POST[quantite]','$_POST[zone]') ");
echo "Enregistrement effectué";
}
unset($_POST['article'],$_POST['zone'],$_POST['quantite'],$zone,$quantite,$article);
}
else {echo "erreur, quantité non valide! Veuillez entrer des données numériques";
}
}
else {
echo "erreur, article non valide! Veuillez entrer des données numériques";
}
?>
<BODY BGCOLOR=#33CCFF>
<p>
<a href="index.html">Accueil</a><p>
<a href="formulaire.html">Ajouter un autre composant</a><p>
<a href="visu.php">Visualisation générale</a><p>
</body>
</html>
A voir également:
- [PHP] variable non numérique -> numérique
- Télévision numérique - Guide
- Télévision numérique terrestre - Accueil - TV & Vidéo
- Pavé numérique bloqué - Guide
- Clavier numérique bloqué - Guide
- Caractère numérique - Guide
2 réponses
Tu peux essayer la fonction PHP intval(), qui permet de transformer une variable en son équivalent numérique...
en fait j'aimerais que A01 soit afficher dans mon tableau qui affiche ce qu'il y a dans ma base, du coup ca ne marche pas. sinon si je remet des 01, 02 tout ca, y a t'il un endroit ou je peux lui dire que 01=A01 pour que dans mon tableau soit affiché A01 au lieu de 01? j'ai essayé a plusieurs endroits mais je n'ai eu que des erreur. Je vous rapelle mes principaux programmes, ajouter.php et visu.php (qui permet de visualiser le tableau des données) :
ajouter.php
<html>
<body>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'kael';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
if (is_numeric($_POST['article']))
{
if (is_numeric($_POST['quantite']))
{
$sql = "SELECT * FROM article where article=".$_POST['article']." and zone=".$_POST['zone']."";
$result = mysql_query($sql) or die(mysql_error());
$articles= mysql_fetch_array($result);
$article = $articles['article'];
$quantite = $articles['quantite'];
$zone = $articles['zone'];
if($_POST['article']==$article and $_POST['zone']==$zone)
{
$quantite=$_POST['quantite']+$quantite;
mysql_query("UPDATE article SET quantite=".$quantite." where article=".$article." and zone=".$zone."");
echo "quantité modifiée";
}
else
{
mysql_query("INSERT INTO article VALUES('$_POST[article]','$_POST[quantite]','$_POST[zone]') ");
echo "Enregistrement effectué";
}
unset($_POST['article'],$_POST['zone'],$_POST['quantite'],$zone,$quantite,$article);
}
else {echo "erreur, quantité non valide! Veuillez entrer des données numériques";
}
}
else {
echo "erreur, article non valide! Veuillez entrer des données numériques";
}
?>
<BODY BGCOLOR=#33CCFF>
<p>
<a href="index.html">Accueil</a><p>
<a href="formulaire.html">Ajouter un autre composant</a><p>
<a href="visu.php">Visualisation générale</a><p>
</body>
</html>
visu.php
<html>
<head>
<title>Tableau général</title>
</head>
<body>
<BODY BGCOLOR=#33CCFF>
<img src="rexamlogo.gif" alt="1"><center><h1>Tableau général</h1></center>
<p>
<hr>
<a href="index.html">Retour</a><p>
<a href="visuparzone.php">Trier le tableau par zones</a><p>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'kael';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$select = 'SELECT * FROM article where quantite>0 order by article, zone';
$result = mysql_query($select,$link);
$total = mysql_num_rows($result);
echo "<h2><center><table width='250' border='1'><TR><TD>Article</TD><TD>Quantité</TD><TD>Zone</TD></TR></h2>\n";
while ($row = mysql_fetch_assoc($result))
{
echo "<h3><TR><TD>".$row['article']."</TD><TD>".$row['quantite']."</TD><TD>".$row['zone']."</TD></TR></h3>\n";
}
?>
</body>
</html>
ajouter.php
<html>
<body>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'kael';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
if (is_numeric($_POST['article']))
{
if (is_numeric($_POST['quantite']))
{
$sql = "SELECT * FROM article where article=".$_POST['article']." and zone=".$_POST['zone']."";
$result = mysql_query($sql) or die(mysql_error());
$articles= mysql_fetch_array($result);
$article = $articles['article'];
$quantite = $articles['quantite'];
$zone = $articles['zone'];
if($_POST['article']==$article and $_POST['zone']==$zone)
{
$quantite=$_POST['quantite']+$quantite;
mysql_query("UPDATE article SET quantite=".$quantite." where article=".$article." and zone=".$zone."");
echo "quantité modifiée";
}
else
{
mysql_query("INSERT INTO article VALUES('$_POST[article]','$_POST[quantite]','$_POST[zone]') ");
echo "Enregistrement effectué";
}
unset($_POST['article'],$_POST['zone'],$_POST['quantite'],$zone,$quantite,$article);
}
else {echo "erreur, quantité non valide! Veuillez entrer des données numériques";
}
}
else {
echo "erreur, article non valide! Veuillez entrer des données numériques";
}
?>
<BODY BGCOLOR=#33CCFF>
<p>
<a href="index.html">Accueil</a><p>
<a href="formulaire.html">Ajouter un autre composant</a><p>
<a href="visu.php">Visualisation générale</a><p>
</body>
</html>
visu.php
<html>
<head>
<title>Tableau général</title>
</head>
<body>
<BODY BGCOLOR=#33CCFF>
<img src="rexamlogo.gif" alt="1"><center><h1>Tableau général</h1></center>
<p>
<hr>
<a href="index.html">Retour</a><p>
<a href="visuparzone.php">Trier le tableau par zones</a><p>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'kael';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$select = 'SELECT * FROM article where quantite>0 order by article, zone';
$result = mysql_query($select,$link);
$total = mysql_num_rows($result);
echo "<h2><center><table width='250' border='1'><TR><TD>Article</TD><TD>Quantité</TD><TD>Zone</TD></TR></h2>\n";
while ($row = mysql_fetch_assoc($result))
{
echo "<h3><TR><TD>".$row['article']."</TD><TD>".$row['quantite']."</TD><TD>".$row['zone']."</TD></TR></h3>\n";
}
?>
</body>
</html>