Problème de requète SQL

Résolu/Fermé
me - 12 juin 2007 à 10:02
 me - 12 juin 2007 à 10:18
Bonjour,

J'ai créé cette applications en PHP pour pouvoir afficher les données d'une base dans un tableau en fonction d'un code qui a été saisie ($bx) :


<?

$base ="C:\Program Files\EasyPHP\www\StageKevin\bd1.mdb";
$connexion = odbc_connect('MS Access Database', 'root', '') or die ('Erreur de connexion1');

if( ! isset( $_POST["bx"] ) ) $_POST["bx"] = 0;


$bx=$_POST["bx"];

$sql = "SELECT Date_paiement, Somme_versée_euro, Nom_abonné, Pnom_abonné, CP_abonné, Adrue_abonné, Ville_abonné, Num_véhicule, Num_carte  FROM paiement, abonnes, abonnements, vehicules WHERE Num_bx_int='$bx' AND paiement.num_carte°=abonnements.num_carte AND abonnements.num_véhicule°=vehicules.num_véhicule AND abonnes.num_abonné = vehicules.num_abonné°";
$req = odbc_do($connexion, $sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$row = odbc_fetch_array($req);

$dir = $row["Date_paiement"];
$dir2 = $row["Somme_versée_euro"];
$dir3 = $row["Nom_abonné"];
$dir4 = $row["Pnom_abonné"];
$dir5 = $row["CP_abonné"];
$dir6 = $row["Adrue_abonné"];
$dir7 = $row["Ville_abonné"];
$dir8 = $row["Num_véhicule"];
$dir9 = $row["Num_carte"];

$datedujour=date("d/m/Y");

echo "<br>";


 echo "<table border='2' bgcolor='#FFFFFF' width=''>";
   echo "<td width=''><b><div align='center'>$datedujour</div></b></td>";
	echo "<td width=''><b><div align='center'></div></b></td>";
	echo "<td width=''><b><div align='center'>N° Bordereaux intermédiare: $bx</div></b></td>";
echo "</table>";
echo "<table border='2' bgcolor='#FFFFFF' width=''>";
   echo "<tr>";
	echo "<td width=''><b><div align='center'>Date paiement</div></b></td>";
	echo "<td width=''><b><div align='center'>Somme versée</div></b></td>";
	echo "<td width=''><b><div align='center'>Nom</div></b></td>";
	echo "<td width=''><b><div align='center'>Prénom</div></b></td>";
	echo "<td width=''><b><div align='center'>Adresse</div></b></td>";
	echo "<td width=''><b><div align='center'>Code postal</div></b></td>";
	echo "<td width=''><b><div align='center'>Ville</div></b></td>";
	echo "<td width=''><b><div align='center'>N° Immat</div></b></td>";
	echo "<td width=''><b><div align='center'>N° Carte</div></b></td>";
  echo " </tr>";
  echo " <tr>";
	echo "<td width=''><div align='center'>$dir</div></td>";
	echo "<td width=''><div align='center'>$dir2</div></td>";
	echo "<td width=''><div align='center'>$dir3</div></td>";
	echo "<td width=''><div align='center'>$dir4</div></td>";
	echo "<td width=''><div align='center'>$dir5</div></td>";
	echo "<td width=''><div align='center'>$dir6</div></td>";
	echo "<td width=''><div align='center'>$dir7</div></td>";
	echo "<td width=''><div align='center'>$dir8</div></td>";
	echo "<td width=''><div align='center'>$dir9</div></td>";
	echo "</tr>";
echo "</table>";



odbc_close( $connexion);

?>



Mais quant je l'éxecute j'obtient l'erreur suivante:



Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère., SQL state 22005 in SQLExecDirect in c:\program files\easyphp\www\stagekevin\bx_mois2.php on line 42

Erreur SQL !
SELECT Date_paiement, Somme_versée_euro, Nom_abonné, Pnom_abonné, CP_abonné, Adrue_abonné, Ville_abonné, Num_véhicule, Num_carte FROM paiement, abonnes, abonnements, vehicules WHERE Num_bx_int='0' AND paiement.num_carte°=abonnements.num_carte AND abonnements.num_véhicule°=vehicules.num_véhicule AND abonnes.num_abonné = vehicules.num_abonné°




Quelqu'un voit il où est le problème?

Merci d'avance ;-)

1 réponse

Jean-François Pillou Messages postés 18301 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274
12 juin 2007 à 10:13
Pourquoi mettre '°' dans les noms de champs ?

Sinon je pense que le problème vient du fait que tu entoures 0 de guillemets simples. Or, si c'est un entier qui est attendu, il faudrait avoir ceci :

SELECT Date_paiement, Somme_versée_euro, Nom_abonné, Pnom_abonné, CP_abonné, Adrue_abonné, Ville_abonné, Num_véhicule, Num_carte FROM paiement, abonnes, abonnements, vehicules WHERE Num_bx_int=0 AND paiement.num_carte°=abonnements.num_carte AND abonnements.num_véhicule°=vehicules.num_véhicule AND abonnes.num_abonné = vehicules.num_abonné° 


Dernière chose, commence par vérifier que $_POST["bx"] est un entier avant de faire ta requête... ça t'évitera des injections de code SQL de la part de gentils pirates ;-)
0
C'est bon sa marche!!
Merci beaucoup! ;-)

et pour le '°' dans les nom de champs je ne sais pas se n'est pas mois qui est créé la table..

Merci!
Problème résolut!!
0