cyrilherve
Messages postés324Date d'inscriptiondimanche 12 août 2007StatutMembreDernière intervention26 août 2011
-
15 mai 2009 à 13:59
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 2009
-
15 mai 2009 à 15:55
bonjour à tous,
je rencontre un petit soucis avec un de mes formulaire depuis que je l'ai mis en ligne.il doit me permettre de faire des enregistrements de bordereaux, j'ai ce message d'erreur chaque fois que je clic que le bouton 'ENREGISTRER' :
No database selected
. j'ai beau fouillé mais je ne vois toujours pas d'ou vient le probleme, tout me semble correcte. voici le code de ma page
<script src="champsdyna1.js"></script>
<style type="text/css">
<!--
.Style6 {color: #000000; }
.Style7 {font-size: 10px}
.Style8 {font-size: 9px}
-->
</style>
<?php
require_once ("mes_fonctions.php");
connection_bd();
?>
<script language="javascript">
function controle()
{
var a=document.expedition.nombord.value;
var b=document.expedition.provenance.value;
var c=document.expedition.destination.value;
var d=document.expedition.nomexp.value;
var e=document.expedition.prenomexp.value;
var f=document.expedition.villexp.value;
var g=document.expedition.ruexp.value;
var h=document.expedition.telephonexp.value;
var i=document.expedition.nomdes.value;
var j=document.expedition.prenomdes.value;
var k=document.expedition.villedes.value;
var l=document.expedition.ruedes.value;
var m=document.expedition.telephonedes.value;
var x=document.expedition.paysexp.value;
var y=document.expedition.paysdes.value;
if (a=="")
{
alert(" Entrez un numero de bordereau! ");
document.expedition.num_bo.focus();
}
else
if (b=="")
{
alert(" vous preciser la provenance du colis ");
document.expedition.provenance.focus();
}
else
if (c=="")
{
alert(" vous devez preciser la destination du colis");
document.expedition.destination.focus();
}
else
if (d=="")
{
alert(" vous devez preciser le nom de l'expediteur");
document.expedition.nomexp.focus();
}
else
if (e=="")
{
alert(" vous devez preciser le prenom de l'expediteur ");
document.expedition.prenomexp.focus();
}
else
if (f=="")
{
alert(" vous devez preciser la ville de l'expediteur ");
document.expedition.villexp.focus();
}
else
if (x=="")
{
alert(" vous devez preciser le pays de l'expediteur ");
document.expedition.paysexp.focus();
}
else
if (g=="")
{
alert(" vous devez preciser la rue de l'expediteur ");
document.expedition.ruexp.focus();
}
else
if (h=="")
{
alert(" vous devez preciser le telephone de l'expediteur ");
document.expedition.num_bo.focus();
}
else
if (isNaN(h))
alert (" le numero de telephone doit etre entierement numerique ");
else
if (i=="")
{
alert(" vous devez preciser le destinataire ");
document.expedition.nomdes.focus();
}
else
if (j=="")
{
alert(" vous devez preciser le prenom du destinataire ");
document.expedition.prenomdes.focus();
}
else
if (k=="")
{
alert(" vous devez preciser la ville du destinataire ");
document.expedition.villedes.focus();
}
else
if (y=="")
{
alert(" vous devez preciser le pays du destinataire ");
document.expedition.paysdes.focus();
}
else
if (l=="")
{
alert(" vous devez preciser une rue pour le destinataire ");
document.expedition.ruedes.focus();
}
else
if (m=="")
{
alert(" vous devez preciser le telephone du destinataire ");
document.expedition.telephonedes.focus();
}
else
if (isNaN(m))
alert (" le numero de telephone doit etre entierement numerique ");
else
document.expedition.submit();
}
</script>
<script type="text/JavaScript">
<!--
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i[escale.php ][escale.php ][livraison.php ]
EXPEDITION
<form method="post" action="expedition.php" name="expedition">
----
<fieldset>
<legend> Details </legend>
<table width="661" border="0" cellspacing="0" cellpadding="5">
----
, <label></label></td>
Nom de l'agence:,
<select name="agence" id="agence">
<?php
$mesagences="SELECT * FROM agences"; //*****************selection des agences dans la base de données
$resultagence=mysql_query($mesagences) or die (mysql_error());
while($ligne=mysql_fetch_array ($resultagence)){ //listage des agences
?>
<option><?php echo @$ligne['nom_agence']; ?></option>
<?php } ?>
</select>,
&nbsp;,
&nbsp;,
----
&nbsp;,
N° du Bordereau:,
<label>
</label>,
&nbsp;,
----
<label>
Provenance:
</label>,
<label>
</label>,
<label>
Destination:
</label>,
<label>
</label>,
----
<fieldset>
<legend>Expéditeur</legend>
<table width="267" border="0">
----
, Nom:</td>
<label>
</label>,
----
Prenom(s):,
<label>
</label>,
----
Ville:,
<label>
</label>,
----
Pays:,
<label>
<select name="paysexp" id="paysexp" style="font-size:9px">
<option></option>
<?php
$sql="SELECT * FROM pays"; //*****************selection des pays dans la base de données
$resultat=mysql_query($sql) or die (mysql_error());
while($row=mysql_fetch_array ($resultat)){ //listage des pays
?>
<option><?php echo @$row['fr']; ?></option>
<?php } ?>
</select>
</label>,
----
Rue:,
<label>
</label>,
----
T&eacute;l&eacute;phone:,
<label>
</label>,
</fieldset> </td>
<td width="34">&nbsp;</td>
<td width="395" colspan="2"><fieldset id="destinataire">
<legend>Destinataire</legend>
----
Noms:,
<label>
</label>,
----
Pr&eacute;noms:,
<label>
</label>,
----
Ville:,
<label>
</label>,
----
Pays:,
<label>
<select name="paysdes" id="paysdes" style="font-size:9px">
<option></option>
<?php
$sql="SELECT * FROM pays"; //*****************selection des pays dans la base de données
$resultat=mysql_query($sql) or die (mysql_error());
while($row=mysql_fetch_array ($resultat)){ //listage des pays
?>
<option><?php echo @$row['fr']; ?></option>
<?php } ?>
</select>
</label>,
----
Rue:,
<label>
</label>,
----
T&eacute;l&eacute;phone:,
<label>
</label>,
</fieldset></td>
</tr>
</table>
</fieldset>
</td>
</tr>
</table>
----
<fieldset id='fichiers' style="font-size:11px">
<legend> Details colis </legend>
<table width="459" height="28" border="0">
----
,
Quantit&eacute;
</td>
D&eacute;signations,
Poids,
</fieldset> </td>
</tr>
<tr>
<td width="0"></td>
</tr>
</table>
----
<fieldset>
<legend>Details:</legend>
<table width="725" border="0" cellspacing="0" cellpadding="5">
----
, <label>Statut:</label></td>
<select name="statut" id="statut">
<option value="en cours de traitement">en cours de traitement</option>
<option value="en route">en route</option>
</select>,
<label>Compteur
</label>
,
</fieldset></td>
</tr>
</table>
<?php
// verifie si le numero de bordereau n'existe pas deja dans la base de données
if ($_POST) {
@$numbe=htmlentities ($_POST['nombord']);$requette" select * from bordereaux where num_be '$numbe' " ;
$resultat=mysql_query($requette);
$lign=mysql_num_rows($resultat);
if ($lign > 0)
{
echo '<script language="Javascript">alert("il existe deja un bordereau à ce numero !!!");</script>';
}
else
{
// insertion des donnees dans la base de donnees si le numero n'existe pas
@$nomagence=securiseChaineTxt($_POST['agence']);
@$prove=securiseChaineTxt($_POST['provenance']);
@$desti=securiseChaineTxt($_POST['destination']);
@$nomexp=securiseChaineTxt($_POST['nomexp']);
@$prenomexp=securiseChaineTxt($_POST['prenomexp']);
@$paysexp=securiseChaineTxt($_POST['paysexp']);
@$villeexp=securiseChaineTxt($_POST['villexp']);
@$rueexp=securiseChaineTxt($_POST['ruexp']);
@$telexp=securiseChaineTxt($_POST['telephonexp']);
@$nomdest=securiseChaineTxt($_POST['nomdes']);
@$prenomdest=securiseChaineTxt($_POST['prenomdes']);
@$paysdest=securiseChaineTxt($_POST['paysdes']);
@$villedest=securiseChaineTxt($_POST['villedes']);
@$ruedest=securiseChaineTxt($_POST['ruedes']);
@$teldest=securiseChaineTxt($_POST['telephonedes']);
@$statut=securiseChaineTxt($_POST['statut']);
@$dat=date("Y/m/d");
@$heur=date("H:i");
@$valeur=count( securiseChaineTxt($_POST['mesquantite']) );
@$valeurdes=count( securiseChaineTxt($_POST['mesdesignation']) );
for ($i=0;$i<$valeur;$i++)
{
//valeurs
@$quantite=array_values($_POST['mesquantite']);
@$designation =array_values($_POST['mesdesignation']);
@$poids=array_values($_POST['mespoids']);
@$produitfacture=mysql_query("INSERT INTO produits (num_prdt,num_be,designation,qute,poids) values ('','$numbe','$designation[$i]','$quantite[$i]','$poids[$i]')") or die (mysql_error());
//envoi dans la base de données
}
$resultat2=mysql_query("INSERT INTO bordereaux(num_be,nom_agence,provenance,destination,statut_depart,date_depart,heure_depart,nom_exp, prenom_exp,pays_exp,ville_exp,rue_exp,tel_exp,nom_recep,prenom_recep,pays_recep,ville_recep,rue_recep,tel_recep) values ('$numbe','$nomagence','$prove','$desti','$statut','$dat','$heur','$nomexp','$prenomexp','$paysexp','$villeexp','$rueexp','$telexp','$nomdest','$prenomdest','$paysdest','$villedest','$ruedest','$teldest')") or die (mysql_error());// execute le requette
echo '<script language="Javascript">alert(" enregistrement effectué !!!");</script>';
}
}
?>
</form>
voici le code mes_fonctions.php
<!-- ceci est le fichier de connection au serveur et a la base de données -->
<?php
// fonction de connection à la base de données
function connection_bd()
{
$seveur="localhost";
$user="user";
$bdd="xxx_mabase";
$password="xxx";
$link=mysql_connect($serveur, $user, $password) or die (" erreur de connexion à la base de données ");
mysql_select_db($bdd) or die ( mysql_error() );
}
// fonction de deconnection à la base de données
function deconnection_bd()
{
mysql_close();
}
//Sécurisé la chaine de caractères contre les injection XSS
function securiseChaineTxt($string)
{
//On securise chaques balise HTML
$string = htmlspecialchars ($string);
//On securise la variable contre les injection SQL
$connecte=mysql_connect("localhost", "user", "xxx");
$string = mysql_real_escape_string($string, $connecte);
return $string;
}
//Sécurise un nombre(si on envoi 145APL par exemple, la fonction revoie 145)
function securiseNombre($nombre)
{
$nombre = intval ($nombre); //On ne recupere dans la variable que les nombres
return $nombre;
}
?>
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 20091 15 mai 2009 à 15:55
en utilisant mysql_escape_string( $string ), sans le paramètre de connexion, il utilisera la connexion par défaut...
Mais, à mon avis, il vaudrait mieux migrer peu à peu à PDO et aux abstractions d ebases de données. Non seulement le code serait plus portable, mais l'escaping est transparent, tu ne t'en occupes plus.
Et dans l'idéal, coder en pur PHP 5 et séparer la logique métier de la présentation, la maintenance du tout en serait grandement simplifiée.
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 20091 15 mai 2009 à 14:03
àa signifie tout simplement qu'il y a certainement un appel à un SELECT ou INSERT avant l'ouverture de la base.
Dans du code spaghetti qui ne sépare pas clairement le traitement de la présentation, il est parfois peu évident de retrouver les erreurs de ce type.
cyrilherve
Messages postés324Date d'inscriptiondimanche 12 août 2007StatutMembreDernière intervention26 août 2011 15 mai 2009 à 14:43
bon c vrai que ç'est un peu toufu,,, je ne pense que ça vienne de la puisque je me connecte directment a ma base de donnees au chargement de ma page avec la fonction ' connection_bd ' au debut de mon script.
ce code marche pourtant en local ,,,ce n'est que lorsque j'ai heberge mon application que j'ai commencé à avoir ce probleme
cdlt
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 20091 15 mai 2009 à 14:56
Un script qui fonctionne dans un environnement, mais plus dans un autre, là, il faut vérifier en mode trace où ça coince. Les sauses peuvent être très nombreuses (différences de versions de PHP, de MySQL, etc..). Commences par vérifier ces différences là, et aussi la configuration de PHP. Le problème provient certainement de là.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cyrilherve
Messages postés324Date d'inscriptiondimanche 12 août 2007StatutMembreDernière intervention26 août 2011 15 mai 2009 à 15:33
j'ai
viré le mysql_connect( ) et le $connecte de
mysql_real_escape_string() je n'ai plus de probleme de connection a la
base de donnees mais maintenant ma fonction mysql_real_escape_string ne
passe plus ????