Id = 0 ; insertion mysql PHP

Fermé
victoires Messages postés 118 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 3 juin 2016 - 22 avril 2013 à 13:05
victoires Messages postés 118 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 3 juin 2016 - 22 avril 2013 à 15:13
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 mardi 30 novembre 2010 Statut Membre Dernière intervention 20 mai 2021 87
22 avril 2013 à 13:08
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 118 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 3 juin 2016
22 avril 2013 à 14:30
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 mardi 30 novembre 2010 Statut Membre Dernière intervention 20 mai 2021 87
22 avril 2013 à 14:46
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 118 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 3 juin 2016
22 avril 2013 à 14:57
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
22 avril 2013 à 15:10
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 118 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 3 juin 2016
22 avril 2013 à 15:13
salut

merci je veux essayer ça
0