Id = 0 ; insertion mysql PHP

victoires Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   -  
victoires Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   -
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


A voir également:

5 réponses

Guiver Messages postés 262 Date d'inscription   Statut Membre Dernière intervention   87
 
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
victoires Messages postés 119 Date d'inscription   Statut Membre Dernière intervention  
 
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
Guiver Messages postés 262 Date d'inscription   Statut Membre Dernière intervention   87
 
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
victoires Messages postés 119 Date d'inscription   Statut Membre Dernière intervention  
 
LOL, il faut apprendre le POO :P

Bon aprèm
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   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
victoires Messages postés 119 Date d'inscription   Statut Membre Dernière intervention  
 
salut

merci je veux essayer ça
0