Titre: Insertion de fichier XML et incrément mysql
Posté par: aldo72 le le 06-03-2014 a 19:54:40
Bonjour a tous,
Je me permet de poster sur ce forum, pour obtenir de l'aide sur un soucis d'incrémente de table mysql.
Mon site : Site de petites annonces gratuites, avec ou sans inscription (compte membre/pro)
Mes manipulations : insertion de petite annonce via l'administration par fichier XML (manipulation qui fonctionne très bien, annonce enregistrer dans la bdd, et présente sur le site)
Problème : Les annonces ensuite enregistrer dans le formulaire prévu a cet effet depuis le site, ne s'enregistre pas dans la BDD, mais le lien d'activation et bien reçu par Email.
Ce lien est constituer comme cela :
http://www.url_de_mon_site.fr/confirmer_ann.php?code=136&email=mon_adresse@url.fr
Le 136 correspondant à l'id de l'annonce dans la BDD, jusqu'à c'est logique, mais lorsque je fais un import XML (qui je le rappel fonctionne très bien) et que je soumet une nouvelle annonce dans le formulaire classique, le lien reçu en email de confirmation est le suivant :
http://www.url_de_mon_site.fr/confirmer_ann.php?code=0&email=mon_adresse@url.fr
Un 0 au lieu de l'id qui devrais correspondre.
Donc je présume que lorsque l'import XML est réaliser, sa doit bloquer quelque pars au niveau de l'incrémente.
Mais impossible de voir ou ce situe le soucis.
Je tiens a préciser, que je suis pas non plus un grand spécialiste de programmation.
Merci d'avance de vos lumières, qui pourrons m'éclairer sur le problème.
Amicalement |
Titre: Re:Insertion de fichier XML et incrément mysql
Posté par: jean-f le le 07-03-2014 a 15:19:41
salut,
si tu pouvais mettre un bout de code ou tu crée ton lien recu par mail ca serait peu etre plus facile pour trouver le problème
@+ |
Titre: Re:Insertion de fichier XML et incrément mysql
Posté par: Soundboy39 le le 08-03-2014 a 22:04:46
| Cela vient du script chargé du stockage en BDD... va falloir mettre les mains dans le cambouis... |
Titre: Re:Insertion de fichier XML et incrément mysql
Posté par: aldo72 le le 09-03-2014 a 18:24:15
C'est bien ce que je pensais, mais j'arrive pas a voir comment modifier sa. Le code d'insertion du xml dans la bdd, est comme sa :
Code:
/////////////////////////////////// //Insertion des annonces XML //////////////////////////////////
function insert_ann_xml($xml) { global $language_adm; $str = ''; $id_ann = ''; $array_donnees = array('id_reg', 'id_dep', 'id_cat', 'email', 'password', 'code_pos', 'ville', 'statut', 'societe', 'siret', 'type', 'nom', 'tel', 'titre', 'texte', 'prix', 'tel_cache', 'xml_key'); $count = 0; foreach($xml->annonces as $row) { $i = 0; // Vérification des données foreach($array_donnees as $key) { $error = (!isset($row->$key)) ? 1 : 0; if($error == 1) break; $i++; } // Insertion des annonces if($error == 0) { $id_reg = (int) $row->id_reg; $id_dep = (int) $row->id_dep; $id_cat = (int) $row->id_cat; $email = mysql_real_escape_string($row->email); $password = mysql_real_escape_string($row->password); $code_pos = mysql_real_escape_string($row->code_pos); $ville = mysql_real_escape_string($row->ville); $statut = (int) $row->statut; $societe = mysql_real_escape_string($row->societe); $siret = mysql_real_escape_string($row->siret); $type = (int) $row->type; $nom = mysql_real_escape_string($row->nom); $tel = mysql_real_escape_string($row->tel); $titre = mysql_real_escape_string($row->titre); $texte = mysql_real_escape_string($row->texte); $prix = (float) $row->prix; $time = time(); $tel_cache = mysql_real_escape_string($row->tel_cache); $ip = $_SERVER['REMOTE_ADDR']; $xml_key = mysql_real_escape_string($row->xml_key); $photo1 = (!empty($row->photo1)) ? mysql_real_escape_string($row->photo1) : ''; $photo2 = (!empty($row->photo2)) ? mysql_real_escape_string($row->photo2) : ''; $photo3 = (!empty($row->photo3)) ? mysql_real_escape_string($row->photo3) : ''; $photo4 = (!empty($row->photo4)) ? mysql_real_escape_string($row->photo4) : ''; $photo5 = (!empty($row->photo5)) ? mysql_real_escape_string($row->photo5) : ''; $photo6 = (!empty($row->photo6)) ? mysql_real_escape_string($row->photo6) : ''; $photo7 = (!empty($row->photo7)) ? mysql_real_escape_string($row->photo7) : ''; $photo8 = (!empty($row->photo8)) ? mysql_real_escape_string($row->photo8) : ''; $photo9 = (!empty($row->photo9)) ? mysql_real_escape_string($row->photo9) : ''; $photo10 = (!empty($row->photo10)) ? mysql_real_escape_string($row->photo10) : ''; $sql = "INSERT INTO ". PREFIX ."annonces (id_reg, id_dep, id_cat, email, password, code_pos, ville, status, type, nom, tel, titre, ann, prix, etat, date, tel_cache, ip, xml_key) VALUES"; $sql .= "('$id_reg', '$id_dep', '$id_cat', '$email', '$password', '$code_pos', '$ville', '$statut', '$type', '$nom', '$tel', '$titre', '$texte', '$prix', '2', '$time', '$tel_cache', '$ip', '$xml_key')"; $sql .= " ON DUPLICATE KEY UPDATE id_reg = VALUES(id_reg), id_dep = VALUES(id_dep), id_cat = VALUES(id_cat), email = VALUES(email), code_pos = VALUES(code_pos), ville = VALUES(ville), nom = VALUES(nom), tel = VALUES(tel), titre = VALUES(titre), ann = VALUES(ann), prix = VALUES(prix), tel_cache = VALUES(tel_cache)"; mysql_query($sql); $id_ann = mysql_insert_id(); if(!empty($id_ann)) { $sql_soc = "INSERT INTO ". PREFIX ."annonces_societe (id_ann, nom_societe, siret) VALUES"; $sql_soc .= "('$id_ann', '$societe', '$siret')"; mysql_query($sql_soc); for($i = 1; $i <= 10; $i++) { $nom =''; if(!empty($photo1) && $i == 1) $nom = $photo1; elseif(!empty($photo2) && $i == 2) $nom = $photo2; elseif(!empty($photo3) && $i == 3) $nom = $photo3; elseif(!empty($photo4) && $i == 4) $nom = $photo4; elseif(!empty($photo5) && $i == 5) $nom = $photo5; elseif(!empty($photo6) && $i == 6) $nom = $photo6; elseif(!empty($photo7) && $i == 7) $nom = $photo7; elseif(!empty($photo8) && $i == 8) $nom = $photo8; elseif(!empty($photo9) && $i == 9) $nom = $photo9; elseif(!empty($photo10) && $i == 10) $nom = $photo10; if(!empty($nom)) { $sql_img = "INSERT INTO ". PREFIX ."annonces_images (id_ann, nom) VALUES ('$id_ann', '$nom')"; mysql_query($sql_img); } } } $count++; } else { $error = 4; break; } } if(!empty($id_ann)) creat_flux($id_ann); return $error; }
|
|
|
Titre: Re:Insertion de fichier XML et incrément mysql
Posté par: Soundboy39 le le 10-03-2014 a 08:38:45
re
Tu analyse la partie qui fonctionne... mais nous on veut voire la partie qui ne fonctionne pas, en l’occurrence la méthode qui permet le stockage des annonces par le biais du formulaire. |
Titre: Re:Insertion de fichier XML et incrément mysql
Posté par: jean-f le le 10-03-2014 a 12:55:55
par contre vu que le champ id_reg est théoriquement de genre auto_incremente, pourquoi le remplir manuellement et ne pas laisser faire mysql en laissant le champ id_reg vide lors de l'INSERT ?
INSERT INTO ". PREFIX ."annonces (id_reg, id_dep, .......
INSERT INTO ". PREFIX ."annonces (' ', id_dep, ....... |
Titre: Re:Insertion de fichier XML et incrément mysql
Posté par: aldo72 le le 11-03-2014 a 10:09:00
Bonjour,
Alors voici la partie qui enregistre depuis le formulaire :
Code:
//////////////////////////////// //Enregistrement de l'annonce dans la base de données ////////////////////////////////
function register($array, $pass, $etat) { global $cache_form, $cache_champs, $cache_options_visuelles; foreach ($array as $k => $v) { $array[$k] = mysql_real_escape_string($v); } $ip = $array['ip']; $reg = (int) $array['reg']; $dep = (isset($array['dep'])) ? (int) $array['dep'] : ''; $cat = (int) $array['cat']; $ema = $array['ema']; $cod = (isset($array['cod'])) ? $array['cod'] : ''; $vil = (isset($array['vil'])) ? $array['vil'] : ''; $sta = (int) $array['sta']; $typ = (int) $array['typ']; $nom = $array['nom']; $tel = (isset($array['tel'])) ? $array['tel'] : ''; $tit = $array['tit']; $ann = $array['ann']; if(isset($array['pri'])) { $pri = str_replace(',' ,'.', $array['pri']); $pri = (float) $pri; } else $pri = 0; $tel_cache = (!empty($array['tel_cache'])) ? $array['tel_cache'] : 'N'; $id_compte = (!empty($array['id_compte'])) ? (int) $array['id_compte'] : 0; $password = mysql_real_escape_string($pass); $time = time(); $etat = (int) $etat;
$sql = "INSERT INTO ". PREFIX ."annonces VALUES('', '$reg', '$dep', '$cat', '$ema', '$password', '$cod', '$vil', '$sta', '$typ', '$nom', '$tel', '$tit', '$ann', '$pri', '$etat', '$time', '$tel_cache', '$ip', '$id_compte', '')"; mysql_query($sql); $id = mysql_insert_id(); //Modification de la clé xml $sql = "UPDATE ". PREFIX ."annonces SET xml_key = '$id' WHERE id_ann = '$id'"; mysql_query($sql); //Enregistrement des photos if(isset($_SESSION['photo']['count']) AND $_SESSION['photo']['count'] > 0) { $sql = "INSERT INTO ". PREFIX ."annonces_images (id_ima, id_ann, nom) VALUES"; for($i = 1; $i <= 10; $i++) { if(isset($_SESSION['photo'][$i])) $name = $_SESSION['photo'][$i]; $sql .= ($i != 1 && isset($_SESSION['photo'][$i])) ? ',' : ''; if(isset($_SESSION['photo'][$i])) $sql .= " ('' , '$id', '$name')"; } $sql .= " ON DUPLICATE KEY UPDATE id_ann = VALUES(id_ann)"; mysql_query($sql); } |
|
jean-f => Non le champ "id-reg" et "id_dep", ne peuvent pas être en auto incrément, car il correspondent a une autres tables, en faites "id_reg" correspondant aux régions (bretagne, normandie ect...) et chaque rrégion est enregistrer dans une tables avec chacune leur ID, et pareil pour "id_dep" qui correspond aux département ;) |
Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.
|