{MySQL} Probléme requête MySQL chez OVH

Résolu/Fermé
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 - 5 févr. 2010 à 16:18
elghafoud Messages postés 121 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 29 avril 2013 - 12 mars 2010 à 10:46
Bonjour,

J'ai un soucis avec mes formulaires concernant l'insertion dans la base de donnée.
Il faut savoir que le script fonctionne parfaitement en local (avec easyphp version 3.0), j'ai pris mon hébergement hier chez OVH
Voici toutes les informations dont vous avez besoin :

[--] Les info de la base de donnée chez ovh :-------------------------------------------------------------------------

Version du serveur: 5.0.88-log
Version du client MySQL: 5.0.51a

[--] la connexion se fait comme ceci avec un fichier Connect.php :-------------------------------------------------

<?php
//Fichier contenant les définitions de constantes pour la connexion à MySQL

// Connexion en local
/*define ('NOM',"root");
define ('PASSE',"mysql");
define ('SERVEUR',"localhost");
define ('BASE',"base_ocelines");*/

// Connexion WEB
define ('NOM',"***");
define ('PASSE',"***");
define ('SERVEUR',"***");
define ('BASE',"***");
?>

[--] Voici le code qui récupère les données de mon formulaire et qui tente l'insertion en base-------------------

<?php

// Récupération des données et stockage dans des variables
$nom = ($_POST['firstname']) ;
$prenom = ($_POST['lastname']) ;
$email = ($_POST['email']) ;
$telephone = ($_POST['telephone']) ;
$choix = ($_POST['radiogoupe']) ;
$texte = ($_POST['comments']) ;

// **** *********************** **** //
// **** Affichage du formulaire **** //
// **** *********************** **** //

echo '<b>Nom : </b>'.$nom.'<br />';
echo '<b>Prénom : </b>'.$prenom.'<br />';
echo '<b>Email : </b>'.$email.'<br />';
echo '<b>Téléphone : </b>'.$telephone.'<br />';
echo '<b>Je souhaite être contacté par : </b>'.$choix.'<br />';
echo '<b>Votre demande :</b><br />'.$texte;

// **** ******************************** **** //
// **** Insertion dans la base de donnée **** //
// **** ******************************** **** //

require_once("../ressources/php/Connect.php");
require_once("../ressources/php/MySQL.class.php");

// On instancie l'objet
$bd = new MySQL (NOM, PASSE, BASE, SERVEUR);

$sql = $bd->execRequete ("INSERT INTO suivis_dossiers (nom, prenom, mail, telephone, choix, texte, date) VALUES ('".$nom."','".$prenom."','".$email."',".$telephone.",'".$choix."','".$texte."','".date("Y-m-d H:i:s'").")");[--] la fameuse ligne 80 [--]

?>

[--] La class MySQL.class.php ------------------------------------------------------------------------------------------

<?php
// Class de gestion des accés à MySQL

class MySQL
{
// ********** Partie privée : les propriétés **********
private $connexion, $nomBase;

// ***** Constructeur de la class *****
function MySQL ($login, $motDePasse, $base, $serveur)
{
// On conserve le nom de la base
$this->nomBase = $base;

// Connexion au serveur MySQL
if(!$this->connexion = @mysql_pconnect ($serveur, $login, $motDePasse))
throw new Exception ("Erreur de connexion au serveur");

// connexion à la base
if(!@mysql_select_db ($this->nomBase, $this->connexion))
throw new Exception ("Erreur de connexion à la base");
}
// Fin du constructeur

// ********** Partie publique **********

// Méthode d'exécution d'une requête
public function execRequete ($requete)
{
$resultat = @mysql_query ($requete, $this->connexion);

if(!$resultat)
throw new Exception ("Problème dans l'exécution de la requête : $requete. - ". mysql_error($this->connexion));[--] la fameuse ligne 33 [--]

return $resultat;
}

// Stocke les résultats dans un tableau
public function stockTableau ($resultat)
{ return mysql_fetch_array ($resultat); }

// Accés à la ligne suivante, sous forme d'objet
public function objetSuivant ($resultat)
{ return mysql_fetch_object ($resultat); }

// Accés à la ligne suivante, sous forme de tableau associatif
public function ligneSuivante ($resultat)
{ return mysql_fetch_assoc ($resultat); }

// Accés à la ligne suivante, sous forme de tableau indicé
public function tableauSuivant ($resultat)
{ return mysql_fetch_row ($resultat); }

// Compter le nombre de résultat
public function Nbr_tableau ($resultat)
{ return mysql_num_rows ($resultat); }

// Echappements des apostrophes et autres préparation à l'insertion
public function prepareChaine($chaine)
{ return mysql_real_escape_string($chaine); }

// ***** Destructeur de la classe: on se déconnecte *****
function __destruct ()
{ @mysql_close ($this->connexion); }

// ********** Fin de la classe **********
}

?>

[--] Le résultat qu'il me donne (j'ai chercher l'erreur sur google mais rien du tout)-------------------------------



Le message a bien été envoyé. Nous traiterons votre demande le plus vite possible.


Résumé
Nom : Altuna
Prénom : Yannick
Email : azerty@hotmail.fr
Téléphone : 033355220
Je souhaite être contacté par : mail
Votre demande :
Je fais un test pour comment ça marche
Warning: mysql_error(): 13 is not a valid MySQL-Link resource in /homez.333/communau/www/ressources/php/MySQL.class.php on line 33

Fatal error: Uncaught exception 'Exception' with message 'Probl�me dans l'ex�cution de la requ�te : INSERT INTO suivis_dossiers (nom, prenom, mail, telephone, choix, texte, date) VALUES ('Altuna','Yannick','azerty@hotmail.fr',033355220,'mail',' Je fais un test pour comment ça marche','2010-02-05 16:03:42'). - ' in /homez.333/communau/www/ressources/php/MySQL.class.php:33 Stack trace: #0 /homez.333/communau/www/contenu/enregistrement_suivis_de_dossiers.php(80): MySQL->execRequete('INSERT INTO sui...') #1 {main} thrown in /homez.333/communau/www/ressources/php/MySQL.class.php on line 33

[--] Si vous voulez tenter voici l'adresse du site --------------------------------------------------------------------

www.communaute-ocelines.com

[--] Fin des infos -------------------------------------------------------------------------------

Bien sure rien n'est rentré dans la base. J'ai indiquer en gras la ou se trouve la fameuse ligne 33 et la ligne 80 du fichier "enregistrement_suivis_de_dossiers.php"
Le problème ne viens pas de la connexion à la base car j'ai un script de news qui fonctionne de la même façon et qui n'a aucun soucis ni en local ni en ligne, cela doit venir de la requête, mais je vois pas ou.
Au départ je pensais que ça venais de ma class de connexion MySQL.class.php mais mon script de news l'utilise et fonctionne.

Je suis dépassé, pourriez vous m'aider?
S'il manque des informations demandez les moi, j'espère que ce n'est pas un gros problème, car je dois faire l'ouverture officiel du site rapidement.

4 réponses

elghafoud Messages postés 121 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 29 avril 2013 18
11 mars 2010 à 14:04
À première vue, il y a un point à la fin de ta requête SQL! Donc c'est une erreur forcement!

Sinon c'est dangereux ce que tu fais !! encode au moins tes données!!!

Essaye de voir mysql_real_escape_string

1
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 9
11 mars 2010 à 13:40
Personne ne vois la solution à mon problème?

Pourriez vous au moins me dire si la requête est bonne?

Espoir, espoir,
Yannick
0
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 9
11 mars 2010 à 15:49
Je viens de faire des test, le script qu'il y à plus haut n'est pas actualisé et j'ai bien mis des mysql_real_escape_string.

Alors j'ai testé sans le point et j'ai eu une autre erreur :

Duplicate entry '0' for key 1 .

J'ai donc fais une recherche sur google

Je suis tombé sur un autre post du site qui à résolu mon problème

https://forums.commentcamarche.net/forum/affich-70578-erreur-duplicate-entry

Mon champ ID n'était pas autoincrementé ....

Mon problème est résolu, je suis content, par contre j'ai une autre question.

Quand j'insére :

<b class="bleu_fonce">tadadaa</b>

il m'insére :

<b class=\"bleu_fonce\">tadadaa</b>

Résultat la class ne passe pas et mon tadadaaa n'est pas en bleu foncé. Comment faire?
J'affiche le texte de cette façon la :

echo '<p>'.htmlspecialchars_decode($texte, ENT_NOQUOTES).'</p>';

Merci d'avance.

Yannick
0
elghafoud Messages postés 121 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 29 avril 2013 18
12 mars 2010 à 10:46
essaye de voir stripslashes (Supprime les antislashs d'une chaîne)
0