Besoin d'aide pour améliorer mon script

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Besoin d'aide pour améliorer mon script

Re: Besoin d'aide pour améliorer mon script

par weshpub » 10 oct. 2010, 21:41

Merci Sadeq, et tous les autres pour ce magnifique travail. =D>
Je pense revenir prochainement pour d'autre renseignements, vous êtes vraiment trop fort, y-a pas c'est un métier.
J'ai déjà aperçu d'autre petit problèmes sur une autre partie de mon script, je regarde si c'est grave, et je reviens vous faire coucou !

Sadeq, ta réflexion m'a bien aidé.
En effet, j'ai passé tellement de temps sur un problème de requête SQL, que j'ai oublié de changer $connexion en $cnx.
Du coût, quand on est a fond sur un truc, on oubli de relire le code en entier et on ne voit pas un mauvais copier coller d'un ancien bout de code remis au goût du jour.

Voilà le résultat final.
 <?php
  //connection au serveur
include '../config/settings.php';

  // Connexion à la base
  $cnx = mysql_connect("$hote","$utilisateur","$motDePasse") or die ("Impossible de se connecter à la base de données");
  // sélection de la base
  mysql_select_db("$baseDeDonnees",$cnx);

  //nom:
  $login = mysql_real_escape_string($_POST['login']);
  //code postal:
  $cp = mysql_real_escape_string($_POST['cp']);
  //ville:
  $ville = mysql_real_escape_string($_POST['ville']);  
  //pays:
  $pays = mysql_real_escape_string($_POST['pays']);
  
  //création de la requête SQL:
  $sql = "INSERT  INTO carte (login, cp, ville, pays)
            VALUES ( '$login', '$cp', '$ville', '$pays') " ;
 
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
 
  //affichage des résultats, pour savoir si l'insertion a marché:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion a échoué") ;
  }
?>

Re: Besoin d'aide pour améliorer mon script

par sadeq » 10 oct. 2010, 20:25

Il y a une erreur dans le script qui a échappé à notre vigilance, dans l'instruction :
//exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
Il faut utiliser la variable $connexion au lieu de $cnx, la correction est:
//exécution de la requête SQL:
  $requete = mysql_query($sql, $connexion) or die( mysql_error() ) ;

Re: Besoin d'aide pour améliorer mon script

par xTG » 10 oct. 2010, 19:56

Quel est lé déroulement du script ?
Affichage d'erreur lors de la connexion à la base de donnée ?
Affichage "L'insertion a échoué" ?
Affichage d'erreur sur le include ?

Personne n'est devin ici. :)

Re: Besoin d'aide pour améliorer mon script

par weshpub » 10 oct. 2010, 19:46

Désolé, j'ai déjà essayer, mais cela ne fonctionne pas. :non:

Donc j'ai recommencer en faisant un copier coller de ton code, mais c'est pareil. :(

Alors là, je ne vois pas ce qui se passe !!!!!! :?

Re: Besoin d'aide pour améliorer mon script

par sadeq » 10 oct. 2010, 18:25

hé ben, tu fais la même chose dans le script insertion.php, comme ça:
 
<?php
  //connection au serveur
include '../config/settings.php';

// Connexion à la base
$connexion = mysql_connect("$hote","$utilisateur","$motDePasse") or die ("Impossible de se connecter à la base de données");
// sélection de la base
mysql_select_db("$baseDeDonnees",$connexion);


//nom:
  $login = mysql_real_escape_string($_POST['login']);
  //code postal:
  $cp = mysql_real_escape_string($_POST['cp']);
  //ville:
  $ville = mysql_real_escape_string($_POST['ville']);  
  //pays:
  $pays = mysql_real_escape_string($_POST['pays']);
  //création de la requête SQL:
  $sql = "INSERT  INTO carte (login, cp, ville, pays)
            VALUES ( '$login', '$cp', '$ville', '$pays') " ;
 
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
 
  //affichage des résultats, pour savoir si l'insertion a marché:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion a échoué") ;
  }
?>

Re: Besoin d'aide pour améliorer mon script

par weshpub » 10 oct. 2010, 16:56

Bonjour Sadec,

Merci pour ton intervention.
Justement, c'est là que je ne comprends pas.
Si tu lis le début du post, je souhaite supprimé ce bloc, pour le remplacer par les infos contenu dans un fichier settings.php qui est situé dans un autre répertoire config/.
D'où le remplacement de ces 2 lignes par include '../config/settings.php';
J'ai fais la modif sur un autre fichier admin.php, et celui-ci fonctionne parfaitement.

Voici le début du code de "admin.php"
<?php
include '../config/settings.php';
//Noms de la table et leurs champs :
$champs=array(
    "carte"=>array("login","cp","ville","pays")
);
// Connexion à la base
$connexion = mysql_connect("$hote","$utilisateur","$motDePasse") or die ("Impossible de se connecter à la base de données");
// sélection de la base
mysql_select_db("$baseDeDonnees",$connexion);
// FONCTIONS DIVERSES
function Ajouter($table, $query) {
$insert=mysql_query("insert into $table set $query");
if ($insert==TRUE) {
echo "Les données ont été correctement ajoutées<br />";
}
else {
echo "Erreur lors de l'ajout des données<br />";
}
}
function Modifier($table, $query, $where) {
$update=mysql_query("update $table set $query where $where");
if ($update==TRUE) {
echo "Les données ont été correctement modifiées<br />";
}
else {
echo "Erreur lors de la modification des données<br />";
}

Re: Besoin d'aide pour améliorer mon script

par sadeq » 10 oct. 2010, 16:30

Bonjour,
Tu as oublié d'ouvrir la connexion au serveur, c'est à dire ce bloc:
//connection au serveur
  $cnx = mysql_connect( "localhost", "root", "password" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "bdd" ) ;

Re: Besoin d'aide pour améliorer mon script

par stealth35 » 10 oct. 2010, 16:18

chez 1and1 t'aura PDO, donc niveau amélioration et sécurité ca sera beaucoup mieux

Re: Besoin d'aide pour améliorer mon script

par weshpub » 10 oct. 2010, 16:03

Oui, chez free pour le moment, et si mon script fonctionne bien, il sera hébergé chez 1and1.

Re: Besoin d'aide pour améliorer mon script

par stealth35 » 10 oct. 2010, 15:18

Pour répondre à stealth35, ma version PHP est 5.1.3RC4-dev
chez free :wink:

Re: Besoin d'aide pour améliorer mon script

par weshpub » 10 oct. 2010, 15:13

Pour répondre à stealth35, ma version PHP est 5.1.3RC4-dev

Re: Besoin d'aide pour améliorer mon script

par weshpub » 10 oct. 2010, 15:06

Ok, alors j'ai ça dans insertion.php
<?php
  //connection au serveur
include '../config/settings.php';  
  //récupération des valeurs des champs:
  //nom:
  $login = mysql_real_escape_string($_POST['login']);
  //code postal:
  $cp = mysql_real_escape_string($_POST['cp']);
  //ville:
  $ville = mysql_real_escape_string($_POST['ville']);  
  //pays:
  $pays = mysql_real_escape_string($_POST['pays']); 
  //création de la requête SQL:
  $sql = "INSERT  INTO carte (login, cp, ville, pays)
            VALUES ( '$login', '$cp', '$ville', '$pays') " ;
 
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $hote, $utilisateur, $motDePasse) or die( mysql_error() ) ;
 
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }
?>
et ça dans settings.php
// Paramètres de la base de données
    
$hote = "localhost" ;               // Nom de votre serveur SQL
$utilisateur = "root" ;        // Nom d'utilisateur SQL
$baseDeDonnees = "bdd" ;      // Nom de la base de données
$motDePasse = "password" ;             // Mot de passe SQL
$tableUtilisee = "carte" ;        // Nom de la table utilisée (par défaut "carte")

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
// Paramètres de champs
// Nom des champs de votre base

$champId = 'id';
$champNom = 'login';    
$champCodePostal = 'cp';
$champVille = 'ville';
$champPays = 'pays';

Re: Besoin d'aide pour améliorer mon script

par stealth35 » 10 oct. 2010, 15:00

hello, t'as quelle version de PHp ?

Re: Besoin d'aide pour améliorer mon script

par Ryle » 10 oct. 2010, 14:08

As-tu déplacé le bloc de connexion/choix de la bdd dans ton fichier settings ? Il faut soit les déplacer soit les laisser dans ton script, sinon il va effectivement manquer la connexion pour que php puisse exécuter la requête chez mysql :)
  //connection au serveur
  $cnx = mysql_connect( "localhost", "root", "password" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "bdd" ) ;

Re: Besoin d'aide pour améliorer mon script

par weshpub » 10 oct. 2010, 12:50

Je pense que ça vient de la requête SQL

Code : Tout sélectionner

//exécution de la requête SQL: $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;

Code : Tout sélectionner

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /mnt/164/sdb/c/7/htdocs/carte/install/insertion.php on line 6 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /mnt/164/sdb/c/7/htdocs/carte/install/insertion.php on line 8 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /mnt/164/sdb/c/7/htdocs/carte/install/insertion.php on line 10 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /mnt/164/sdb/c/7/htdocs/carte/install/insertion.php on line 12 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /mnt/164/sdb/c/7/htdocs/carte/install/insertion.php on line 18