8791 sujets

Développement web côté serveur, CMS

BOnjour à tous,

J'aimerai votre lumière sur un problème complètement incompréhensible pour moi...

J'ai une simple requête "INSERT INTO" qui fonctionne très bien sur tout les navigateurs SAUF Google Chrome qui me fait 2 entrées dans la base : Une entrée correcte et une seconde avec les mêmes infos et l'ID qui s'est incrémenté de 1 (comme si la page avait été chargée deux fois...).
Alors oui je sais, la requete se passe coté serveur et pourtant c'est le navigateur coté client qui à l'air d'être en cause...

La clé primaire de ma table est en AUTO_INCREMENT.

J'ai simplifié mon code au maximum pour être sur de n'avoir aucun conflit, et tjrs le même soucis...

index.php :

<?php
require('includes/manager.class.php');
    require('includes/vehicule.class.php');
    
    $db = new PDO('mysql:host=localhost;dbname=hacquart', 'root', 'root');
    
    $manager = new Manager($db);

$vehicule_test = new Vehicule(array('id_vh'=>"","designation"=>"Inserer avec test", "immat"=>"GJ1337GG", "kilometre"=>"23789","categorie"=>"1","commentaire"=>"350cv"));
$manager->addVehicule($vehicule_test);
?>


Je ne vous met pas la class Vehicule, elle est correcte.

manager.class.php :

<?php
class Manager
{
    private $_db; // Instance de PDO
    
    public function __construct($db)
    {
         $this->setDb($db);
    }
    
    public function setDb(PDO $db)
    {
        $this->_db = $db;
    }
    public function addVehicule(Vehicule $vh){
        $q = $this->_db->prepare("INSERT INTO hertz_planning_charleville_vh (id_vh,designation,immat,kilometre,categorie,commentaire) VALUES ('', :designation, :immat, :km, :cat, :comment)");
        try {
            $q->execute(array(':designation' => $vh->getDesignation(), ':immat' => $vh->getImmat(), ':km' => $vh->getKilometre(), ':cat' => $vh->getCategorie(), ':comment' => $vh->getCommentaire()));
        } catch (PDOException $e){
            echo $e->getMessage();
        }
    }
}
?>


J'ai également trouvé qu'en mettant une valeur en brut à mon champ clé primaire lors de mon insertion, tout rentre dans l'ordre et le doublon ne se crée pas...

EDIT :
Voici les insertions effectuées avec UN seul chargement de la page pour chaque navigateur, on voit bien deux entrées pour Chrome..
upload/40255-Capture.PNG

Merci d'avance..

Apo.
Modifié par Apoooo (23 Dec 2012 - 15:31)
En y réflechissant, j'ai du me gourer de section de forum... Si un modo pouvait me mettre dans la section développement coté serveur.. Merci bien
Effectivement, tellement tordu que mes connaissances (aussi mince qu'elles sont) ne me permettent meme pas de savoir où je peux trouver une solution...

Tu parles de plugins jquery etc ? je n'en ai aucun, je n'ai pas un poil de code de plus que ce que j'ai posté (c'est le code que j'ai isolé pour justement ne pas avoir de comportement bizarre à cause de quelque chose d'autre...)

Je trouve des problèmes similaires sur google, la plupart suite à un envoi de formulaire avec un chargement de page doublé donc 2 requetes... mais moi c'est du code en brut...
Hello,

ça n'a probablement pas rapport, mais tu peux te passer de mentionner ton champ id_vh dans ton insertion (surtout que tu lui passes une string alors que je présume que la structure de ta table attend un entier). Vu que id_vh est en clé primaire + auto-increment il va se populer comme un grand Smiley smile

Sinon pas de proxy, vpn ou autres joyeusetés (genre Charles web proxy) qui crashe et te duplique tes requêtes http ?
Modifié par beyriem (21 Dec 2012 - 21:38)
En fait ma requete n'était pas du tout sous cette forme au départ, elle était comme ceci :
INSERT INTO table SET designaton='blabla' etc...

Je l'ai modifié pour etre sûr que le problème viennent pas de là... Idem pour le champ id_vh qui été renseigné.

Merci également à toi jo_link_noir car tu as trouvé l'origine je pense, en tout cas, c'est dû à la configuration de mon Google Chrome au boulo. Je viens de tester chez moi, et l'insertion est unique... J'ai que ColorPicker et AdBlock Plus sur Chrome en plugins... Je verrais demain.

Merci pour la piste Smiley cligne