Id = 0 ; insertion mysql PHP

victoires Messages postés 141 Statut Membre -  
victoires Messages postés 141 Statut Membre -
Bonjour,

Depuis certains temps, je rencontre un problème aléatoire avec mon formulaire d'inscription. chaque fois le client remplit ce formulaire et valide, ses données vont êtres insérer dans la base de données et il recoit un email avec ses identifiants et moi aussi en tant qu'admin je recois un mail de confirmation comme quoi il y a quelqu'un qui vient de s'incrire.

Mon problème est qu'il y a des fois et de façon aléatoire je reçois l'email de confirmation même le client il reçoit ses identifiants mais l'insertion dans la base de données échoue je ne peux pas le trouver dans la base de données, il lui associe un id = 0 c'est pour ça l'insertion échoue. Le problème est vraiment aléatoire des fois ça marche des fois ça ne marche pas.

Est ce que quelqu'un à une idée sur ce problème ou à déjà rencontre quelque chose pareil ? Merci d'avance

Bonne journée

5 réponses

  1. Guiver Messages postés 270 Statut Membre 88
     
    Salut,

    Sans un bout de code c'est compliqué.
    Comme est géré cette id ?
    Il est unique et auto incrémenté par mysql ou c'est toi qui le gère ?
    0
  2. victoires Messages postés 141 Statut Membre
     
    il est unique et auto incrémenté

    CODE :
    en fait quand l'utilisateur valide le formulaire, j'exécute le code suivant :
    $entreprise = new entreprise();
    echo $entreprise->saveentreprise($_POST);
    Header("Location: formulaire_fin.php");

    fonction saveentreprise () :
    function saveentreprise($data) {
    		// Enregistrement gratuit via le formulaire front-office
       		global $db,$http_root;
    		
    		$data["table"] = "table_formulaire";
    		$data["id"] = 0;
    		$data["a_valider"] = 1;
    
    		$id_entreprise = savedata($data);
                    // traitement des données
    	}


    la fonction savedata($data);
    //-------------------------------------------------------------------------------------
    function savedata($data) {
    		// sauvegarde du contenu d'un formulaire nouveau ou existant
    		// et traitement des données si nécessaire
    		include("inc/data_description.php");
    		
    		while (list($field,$tab)=each($data_description[$data["table"]])) {
    			switch ($tab["type"]) {
    				case "date":
    					$data[$field] = $data[$field]["Y"]."-".$data[$field]["M"]."-".$data[$field]["d"];
    					break;
    				case "embed":
    					$data[$field] = addslashes($data[$field]);
    					break;
    			}
    			//$data[$field] = convertCharset($data[$field],0);
    			$data[$field] = str_replace("'","'",$data[$field]);
    			$data[$field] = str_replace("...","...",$data[$field]);
    			//$data[$field] = addslashes($data[$field]);
    			
    		}
    		//conserver la veleur d'identifiant username = Email_contact
    		if ($data["table"]=="Base_EnvEnt") {
    			$data["username"] = $data["Email_contact"];
    			if($data["username"] == "")
    			{
    				$data["username"] = $data["Email"];
    			}
    			$data["Telephone"] = $data["Tel_contact"];
    			$data["Fax"] = $data["Fax_contact"];
    		}
    		//print_r($data);
    		if ($data["id"]>0) {
    			return updatedata($data);
    		}
    		else {
    			return createdata($data); // cas de création
    		}
    	}


    function createdata() :
    	function createdata($data) {
    		// creation d'un enregistrement dans la table $data["table"]
    		// cf updatedata()
    		include("inc/data_description.php");
    		global $db,$http_root,$_SESSION;
    		unset($data['id']);
    		// création du password si création d'une nouvelle fiche entreprise
    		if ($data["table"]=="Base_EnvEnt") {
    			//$data["username"] = $data["Email_contact"];
    			$data["password"] = randomString(8);
          /**
           * NC (2009-11-25) : a quoi sert la ligne suivante? si le mot de passe
           * généré correspond à un login existant, alors on change le mot de passe??
    			*/
    			//while (loginExiste($data["password"], "Base_EnvEnt")) { $data["password"] = randomString(8); }
    			//if(loginExiste($data["password"], "Base_EnvEnt")) { $data["password"] = randomString(8); }
    		}
    		//$data["password"] = '';
    		//$data["username"] = '';
    		//tester si le mode de passe est vide, alors on génère une autre
    		if($data["password"] == '') {
    			$data["password"] = randomString(8);
    		}
    		//tester si le nom d'utilisateur est vide
    		if($data["username"] == '') {
    			$data["username"] = $data["Email_contact"];
    			if($data["username"] == '') {
    				$data["username"] = $data["Email"];
    			}
    		}
    		while (list($field,$tab)=each($data_description[$data["table"]])) {
    			$tab_fields[] = "'".$field."'";
    			$tab_values[]= "\"".$data[$field]."\"";
    		}
    		//print_r($data);
    		//print_r($tab_fields);
    		//print_r($tab_values);
    		$query = convertCharset("INSERT INTO ".$data["table"]." (".join(",",$tab_fields).",'date_crea','date_modif') VALUES (".join(",",$tab_values).",\"".date("Y-m-d H:i:s")."\",\"".date("Y-m-d H:i:s")."\")",0); 
    		$res =& $db->query($query);
    		//echo $query;
    		if (PEAR::isError($res)) { error_log($res->getMessage()." ".$query); }
    		
    		$new_id = $db->lastInsertId();
    		
    		if ($data["table"]=="Base_EnvEnt") {
    			$_SESSION["sess_guideenv_id_entreprise"]=$new_id;
    			$raison_sociale = ($data["Raison_sociale"] != '') ? $data["Raison_sociale"] : '(vide)';
    			$body = "<p>Nouvelle fiche entreprise :</p><ul>";
          $body .= "<li>Raison sociale : <a href='" . $http_root . "entreprise.php?id=" . $new_id . "'>" . $raison_sociale . "</a></li>";
    			$body .= "<li>Login : " . $data["username"] . "</li>";
          $body .= "<li>Mot de passe : " . $data["password"] . "</li>";
          $body .= "</ul>";
    			//error_log("client@enviroguide.fr"."eddie.lorsold@orange.fr"."Enviroguide: Ajout [".$data["Raison_sociale"]."] par Administrateur".$body);
    			if ($_SESSION["sess_guideenv_SU"]==1)
    				$who = "par Administrateur";
    			else 
    				$who = "";
    			envoiEmail("client@enviroguide.fr","pub@enviroguide.fr","Enviroguide: Ajout [".$data["Raison_sociale"]."] ".$who,$body);
    			envoiEmail("client@enviroguide.fr","client@enviroguide.fr","Enviroguide: Ajout [".$data["Raison_sociale"]."] ".$who,$body);
    		}
    		return $new_id;
    	}
    0
  3. Guiver Messages postés 270 Statut Membre 88
     
    Arf, je suis désolé, à ma naissance mes parents ne m'ont pas donné l'option POO...
    Je code sans objet excepté pour le PDO.

    Je ne peux pas t'aider, j'espère que quelqu'un d'autre passera par là.

    Bon courage.
    0
  4. victoires Messages postés 141 Statut Membre
     
    LOL, il faut apprendre le POO :P

    Bon aprèm
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jeremy.s Messages postés 1248 Statut Membre 79
     
    Salut !

    Pour voir les éventuelles erreurs quand tu fais une requete, prepare ta requete au lieu de faire $db->query($query);
    $db->prepare($query);
    $db->execute() or die(print($db->perror()));

    Il t'affichera alors les erreurs si jamais t'as requete à quelque chose qui foire !
    0
    1. victoires Messages postés 141 Statut Membre
       
      salut

      merci je veux essayer ça
      0