[PHP] variable non numérique -> numérique

Fermé
micom59 Messages postés 71 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 11 août 2009 - 10 juil. 2007 à 11:06
micom59 Messages postés 71 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 11 août 2009 - 10 juil. 2007 à 12:30
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>
A voir également:

2 réponses

Jean-François Pillou Messages postés 19261 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274
10 juil. 2007 à 11:14
Tu peux essayer la fonction PHP intval(), qui permet de transformer une variable en son équivalent numérique...
-1
micom59 Messages postés 71 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 11 août 2009 1
10 juil. 2007 à 12:30
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>
-1

Discussions similaires