PHP Object instanciation en double

PHP Object instanciation en double - PHP - Programmation

Marsh Posté le 25-11-2011 à 15:55:55    

Bonjour

 

Gros soucis sur mon application intranet que je suis entrain de créer pour ma boite (gestion dynamique de sondage).
J'ai fait le développement en PHP Objet comme d'habitude
En local aucun soucis mais une fois sur le serveur intranet il se passe des choses bizarre.

 

Le principe de foncitonne je clique sur le bouton "ajouter" il m'instancie la classe sondage, il me créer ensuite un objet sondage (vide) (ajout en bdd sans aucune information sauf la date de création, l'id, et le tri.

 

Cette action est appeler via un bouton et une action GET. que voici

 


Code :
  1. if (isset($_GET['add']) != "" ){
  2.    // Paramètre d'ajout d'un sondage
  3.     $tmpSondage = new sondage;
  4.     $tmpId = $tmpSondage->ajouter();
  5.     $tmpSondage = new sondage($tmpId);
  6.     $tmpSondage->update('sondage_auteur', $_SESSION['email']);
  7.     ob_clean();
  8.     header('location:mysondage.php?admin=1');
  9.  }
 


et voici le code du bouton

 
Code :
  1. echo '<p align="right"><a href="'.$urlModule.'&add=1"><input class="blueTxt" type="button" value="Créer un sondage"></a></p>';


La méthode ajouter comme je l'ai dit insert en bdd un sondage vide, et on lui rajoute ensuite l'auteur via la méthode update puis on redirige vers la page pour un raffraichissement (mais sans la variable GET)

 


voici le code de methode "ajouter"

Code :
  1. function ajouter()
  2. {
  3.  $maxTri = $this->getmaxorder() +1;
  4.  $requete = "INSERT INTO ".$this->_options['tablename'];
  5.  $requete .= "(".$this->_options['activefield'].",".$this->_options['datecreatedfield'].",".$this->_options['datemodifiedfield'].",".$this->_options['trifield']." )";
  6.  $requete .= "VALUE('0','".date("Y-m-d H:i:s", time())."','".date("Y-m-d H:i:s", time())."','".$maxTri."')";
  7.  $rs = mysql_query($requete);
  8.  if (!$rs) {
  9.   echo 'Impossible d\'exécuter la requête : ' . mysql_error();
  10.   exit;
  11.  }
  12.  return mysql_insert_id();
  13. }
 

En local aucun soucis il me créer bien l'objet et le sondage.

 

Sur le serveur intranet il me créer pas un sondage, mais il m'en créer deux, idem meme chose quand je veux créer une question (c'est la meme méthode) il me créer deux question, idem pour les réponses, alors que en local aucun soucis.

 

j'ai toujours fonctionner comme cela j'ai toujours utiliser les mêmes classes pour mes différentes applications et jamais je n'ai rencontrer ce soucis

 

Autre précision quand je met l'url directement donc avec la variable Get pour la création &act=1 donc, aucun soucis il me créer bien 1 seul objet

 

une idée ?

 

merci d'avance car la je galère sérieusement depuis 1h à comprendre ce qu'il se passe :'(

 


Message édité par hyptnos le 25-11-2011 à 15:56:13
Reply

Marsh Posté le 25-11-2011 à 15:55:55   

Reply

Marsh Posté le 25-11-2011 à 16:37:57    

J'ai un debut de solution mais c'est de la bidouille :-s cela permettra peut etre de comprendre le soucis.
 
 
je remplace le <a href>...</a> qui entoure le bouton
par une action onclick="window.location.href='....'"
Et la c'est bon cela fonctionne
 
Donc question pourquoi un <a href> m'exécute deux fois les actions alors qu'en passant par un onclick cela fonctionne

Reply

Marsh Posté le 25-11-2011 à 17:29:42    

Je pense que le problème ne vient pas des lignes de code qui sont montrées là, mais que ça viendrait de la définition du formulaire HTML qui, par exemple, contiendrait un bouton submit, et aussi une action onClick, ou d'autres choses de ce genre. Cela aurait pour effet d'envoyer deux fois le formulaire au serveur. Bref, ce serait intéressant de regarder la ligne <form...> et les lignes <input...>.
 
Sinon, petite remarque, pour if (isset($_GET['add']) != "" ),
il me semble qu'il serait plus simple d'écrire : if (isset($_GET['add']))

Reply

Marsh Posté le 26-11-2011 à 15:06:41    

Merci pour l'info sur l'isset
concernant le soucis pas de pb avec Firefox 7 et Firefox 8 mais seulement avec 3.2
Après une petite recherche c'est un bug Firefox et histoire de balisage html du genre SRC non renseigner même si on l'utilise pas il faut mettre =""
Mais bon ma page est immense je verrais lundi mais cela me rassure que mon système de classe soit pas en cause

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed