Impossible de poster dans une BDD

Résolu/Fermé
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 - 21 mars 2019 à 03:00
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 - 21 mars 2019 à 14:34
Bonjour,

Bonjour,
Avec wamp server je n'arrive plus a poster dans ma BDD
ma config :
php 7.2.4
MySQL 5.7.14
Apache 2.4.23
windows 10

Le code ci dessous marche sur mon hebergement OVH (avec bien sur la connexion à la bdd ovh et pas la connexion local comme ci dessous)
le contenu de la bdd s'affiche donc la connection à la bdd est correcte
le nom de la table est correcte
Aucune erreur ne s'affiche lors du post
tous les privilèges dans phpmyadmin sont cochés
Le nom de la page est bien avisclient10.php
J'aimerais bien savoir pourquoi ca ne poste pas


le php
if  (!empty($_POST['envoi'])) {
        $hote = '127.0.0.1';
        $base = 'clownrobsql';
        $user = 'root';
        $pass = '';
        $link = mysqli_connect($hote, $user, $pass, $base);
        mysqli_set_charset($link, "utf8");
        if (!$link) { die('Erreur de connexion : ' . mysqli_connect_errno());
}
                                                        

    $pseudo = strip_tags(mysqli_real_escape_string($link, $_POST['pseudo'])); 
    $message = strip_tags(mysqli_real_escape_string($link, $_POST['message']));  
    $date = date('Y-m-d') ."\n";
    $interdit ="href=(.*)|href|http(.*)|www(.*)|\bcon\b|\bconnard\b|\bsalope\b|\bmerde\b|\bchier\b|\babrutit\b|\benfoiré\b|\bputain\b|\bempafé\b|\bcouille\b|\bbite\b|\bpute\b|\benculé\b|\bprêt\b|\bargent\b|\bcialis\b|\bviagra\b|\bporn\b|\bpharmacy\b|\bbuy\b|\bpenis\b|\bporno\b|\bsuck\b|\bdick\b";


    if((!empty($_POST['pseudo']))  && (!empty($_POST['message'])) && ($_POST['surname']=="") && !preg_match('#'.$interdit.'#i', $_POST["message"]) && !preg_match('#'.$interdit.'#i', $_POST["pseudo"]))
    {   
        mysqli_query($link, "INSERT INTO livre_or VALUES('', '" . $pseudo . "','" . $date . "', '" . $message . "')");
        echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Votre message a été posté</h2><p>Pour voir votre message</p><a href="avisclient10.php#avis">Cliquez ici</a><br><br></div>';

    }

    else if ($_POST['surname']!="") { echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Les robots sont interdits !</h2><p><button class="fermeravis">Recommencer</button></p></div>';}

    else if ( preg_match('#'.$interdit.'#i', $_POST["message"]) || preg_match('#'.$interdit.'#i', $_POST["pseudo"])) {echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Votre message n\'a pas été posté</h2><p>Vous avez posté un lien</p><p>Ou bien</p><p>Votre message ou pseudo contient une injure</p><p><button class="fermeravis">Recommencer</button></p></div>';}

    else {
        echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Votre message n\'a pas été posté</h2><p>Un champ du formulaire n\'a pas été rempli</p><p><button class="fermeravis">Recommencer</button></p></div>';

    }
    mysqli_close($link);

.
le code html du formulaire
<form action="avisclient10.php" method="post">
    <p><label for="pseudo">Prénom/Nom ou pseudo :</label><br>
        <input type="text"  id="pseudo" name="pseudo"></p>

    <p class="Surname"><label for="surname">honeypot</label><br>
        <input type="text"  id="surname" name="surname"></p>

    <p><label for="message">Votre avis :</label><br>
        <textarea name="message" id="message" rows="5" cols="35"></textarea></p>

    <p><input type="submit" value="Envoyer" class="bouton" name="envoi"></p>
</form>


Merci d'avance pour celui qui me donne un début de soluce ou au moins qui me dise comment savoir ce qui cloche.

Configuration: Windows / Firefox 65.0

A voir également:

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
21 mars 2019 à 07:18
Bonjour

Commence par gérer les éventuels erreurs de ta requête en y plaçant un mysqli_error

https://www.w3schools.com/php/func_mysqli_error.asp

Fais également un print_r($_POST) afin de voir ce que retourne ton formulaire.

Montre nous ensuite ton code modifié et donne nous la structure exacte de ta table
.

0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
Modifié le 21 mars 2019 à 13:40
Bonjour Jordane

j'ai fais ce que as demandé
le r_print($_POST) retourne bien la saisie du formulaire
mais l'echo donne une erreur
Incorrect integer value: '' for column 'id' at row 1

c'est la colonne id
clé primaire / Type : int(6) / interclassement : / Attribut : / Null : non / Valeur par defaut : aucune / commentaire : / Extra : AUTO_INCREMENT/

voici la capture d'ecran de la structure


de plus c'est la même structure que sur mon hebergement et la ca fonctionne

version sql distante 5.5.60-0+deb7u1-log (qui marche sur OVH)

version SQL locale 5.7.14 - MySQL Community Server (GPL) erreur en local
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
21 mars 2019 à 13:56
rebonjour

voici le code modifié si a te dit mais bon vu que je t'ai donné l'erreur je ne sais pas si ca te sert a quelque chose

if  (!empty($_POST['envoi'])) {
$hote = '127.0.0.1';
$base = 'clownrobsql';
$user = 'root';
$pass = '';
$link = mysqli_connect($hote, $user, $pass, $base);
mysqli_set_charset($link, "utf8");
if (!$link) {
    die('Erreur de connexion : ' . mysqli_connect_errno());
};
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  };

    $pseudo = strip_tags(mysqli_real_escape_string($link, $_POST['pseudo'])); 
    $message = strip_tags(mysqli_real_escape_string($link, $_POST['message']));  
    $date = date('Y-m-d') ."\n";
    $interdit ="href=(.*)|href|http(.*)|www(.*)|\bcon\b|\bconnard\b|\bsalope\b|\bmerde\b|\bchier\b|\babrutit\b|\benfoiré\b|\bputain\b|\bempafé\b|\bcouille\b|\bbite\b|\bpute\b|\benculé\b|\bprêt\b|\bargent\b|\bcialis\b|\bviagra\b|\bporn\b|\bpharmacy\b|\bbuy\b|\bpenis\b|\bporno\b|\bsuck\b|\bdick\b";


    if((!empty($_POST['pseudo']))  && (!empty($_POST['message'])) && ($_POST['surname']=="") && !preg_match('#'.$interdit.'#i', $_POST["message"]) && !preg_match('#'.$interdit.'#i', $_POST["pseudo"]))
    {   
        mysqli_query($link, "INSERT INTO livre_or VALUES('', '" . $pseudo . "','" . $date . "', '" . $message . "')");
        echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Votre message a été posté</h2><p>Pour voir votre message</p><a href="avisclient10.php#avis">Cliquez ici</a><br><br></div>';

 print_r($_POST['pseudo']);
 print_r($_POST['message']);
    }
	 if((!empty($_POST['pseudo']))  && (!empty($_POST['message'])) && ($_POST['surname']=="") && !preg_match('#'.$interdit.'#i', $_POST["message"]) && !preg_match('#'.$interdit.'#i', $_POST["pseudo"]))
    {   
 if (!mysqli_query($link, "INSERT INTO livre_or VALUES('', '" . $pseudo . "','" . $date . "', '" . $message . "')"))
  {
  echo("Error description: " . mysqli_error($link));
  }
    }

    else if ($_POST['surname']!="") { echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Les robots sont interdits !</h2><p><button class="fermeravis">Recommencer</button></p></div>';}

    else if ( preg_match('#'.$interdit.'#i', $_POST["message"]) || preg_match('#'.$interdit.'#i', $_POST["pseudo"])) {echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Votre message n\'a pas été posté</h2><p>Vous avez posté un lien</p><p>Ou bien</p><p>Votre message ou pseudo contient une injure</p><p><button class="fermeravis">Recommencer</button></p></div>';}


	
	else {
        echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Votre message n\'a pas été posté</h2><p>Un champ du formulaire n\'a pas été rempli</p><p><button class="fermeravis">Recommencer</button></p></div>';

    }
	
    mysqli_close($link);
}

0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
21 mars 2019 à 13:56
Donc maintenant que nous avons la structure de ta table.. nous allons pouvoir écrire correctement la requête.
Il faut éviter de faire comme tu le fais et bien indiquer dans la requête les CHAMPS dans lesquels doivent être enregistrées les données...

Et comme l'ID est AUTOINCREMENTE .. il ne faut pas l'indiquer dans une requête INSERT

Donc :
$sql = "INSERT INTO livre_or (`pseudo`,`date`,`message`) 
            VALUES('". $pseudo . "','" . $date . "', '" . $message . "')";
if (! mysqli_query($link, $sql) ){
   echo "Erreur dans la requête ". $sql . "<br> Error: " . mysqli_error($link);
 }
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
21 mars 2019 à 14:34
Merci ca fonctionne !

je ne comprend pas pourquoi le meme code était en erreur sur local et OK sur ovh
ca vient peut être de la version mysql différente

je testerais ton code en distant pour voir

Merci Jordane


0