Générer un code client avec le code postal...
Fermé
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
-
19 juin 2013 à 16:58
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 23 juin 2013 à 05:58
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 23 juin 2013 à 05:58
A voir également:
- Générer un code client avec le code postal...
- Le code ascii - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Comment générer un qr code - Guide
16 réponses
alexdu17200
Messages postés
1302
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
7 mars 2016
835
Modifié par alexdu17200 le 19/06/2013 à 17:14
Modifié par alexdu17200 le 19/06/2013 à 17:14
Salut, je m'y connais un petit peu en php, pour récupérer les 3 premiers caractères du code postal, tu as cette fonction substr, essaye çà:
$cp = le code postal
Ca devrait te renvoyer les 3 premiers caractères techniquement, mais je peux pas la tester actuellement
Je ne sais pas comment récupérer l'increment ID.
Après pour ajouter 2 chaînes à la suite:
$cp = le code postal
$code=substr($cp, 0, 3);
Ca devrait te renvoyer les 3 premiers caractères techniquement, mais je peux pas la tester actuellement
Je ne sais pas comment récupérer l'increment ID.
Après pour ajouter 2 chaînes à la suite:
$codefinal = $code.$incrementid;
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
19 juin 2013 à 17:21
19 juin 2013 à 17:21
Bjr,
merci pour la piste, mais il me faut des scripts complet car je ne fais qu'adapter, suis pas assez balaise pour les construire de a à z.
Cdlt.
merci pour la piste, mais il me faut des scripts complet car je ne fais qu'adapter, suis pas assez balaise pour les construire de a à z.
Cdlt.
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
19 juin 2013 à 17:22
19 juin 2013 à 17:22
Salut !
Alex t'as donné la solution pour la première partie de ce que tu veux faire.
Par contre, pour récupérer l'id il y a un petit soucis :
Ton champ id dans ta table est autoincrémenté, mais ce que tu veux y insérer à la place de l'id n'est pas un nombre, tu auras donc une erreur.
Il te faut alors un champ code_client en plus de l'id.
Tu feras alors ton insert into client où tu laisseras le champ code client vide pour le moment.
Si tu utilise PDO, il existe la fonction last_insert_id qui te retourne le dernier id :)
Tu as donc plus qu'a généré ton code client avec le substring du code postal, la concaténation du caractère - et l'id récupéré juste avant.
Si je n'ai pas été assez clair, dis le moi :)
Alex t'as donné la solution pour la première partie de ce que tu veux faire.
Par contre, pour récupérer l'id il y a un petit soucis :
Ton champ id dans ta table est autoincrémenté, mais ce que tu veux y insérer à la place de l'id n'est pas un nombre, tu auras donc une erreur.
Il te faut alors un champ code_client en plus de l'id.
Tu feras alors ton insert into client où tu laisseras le champ code client vide pour le moment.
Si tu utilise PDO, il existe la fonction last_insert_id qui te retourne le dernier id :)
Tu as donc plus qu'a généré ton code client avec le substring du code postal, la concaténation du caractère - et l'id récupéré juste avant.
Si je n'ai pas été assez clair, dis le moi :)
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par maxireussite le 19/06/2013 à 17:34
Modifié par maxireussite le 19/06/2013 à 17:34
Merci les amis.
J'ai compris le principe d'une requête avec des champs qui récupère les 3 1er chiffre du CP, un autre qui récupère l'ID client et un troisième pour concaténer les deux autres. Je connais le principe, mais comment Mettre cela en exergue dans le script ci-dessous qui existe déjà, d'ailleurs est-ce la bonne solution ?
<?php
if(isset($_POST['type_reexpedition'])) $type_reexpedition=$_POST['type_reexpedition'];
else $type_reexpedition="";
if(isset($_POST['emballage'])) $emballage=$_POST['emballage'];
else $emballage="";
if(isset($_POST['titre'])) $titre=$_POST['titre'];
else $titre="";
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";
if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";
if(isset($_POST['adresse1'])) $adresse1=$_POST['adresse1'];
else $adresse1="";
if(isset($_POST['adresse2'])) $adresse2=$_POST['adresse2'];
else $adresse2="";
if(isset($_POST['cp'])) $cp=$_POST['cp'];
else $cp="";
if(isset($_POST['ville'])) $ville=$_POST['ville'];
else $ville="";
if(isset($_POST['telephone'])) $telephone=$_POST['telephone'];
else $telephone="";
if(isset($_POST['email'])) $email=$_POST['email'];
else $email="";
// On vérifie si les champs sont vides
if(empty($titre) OR empty($nom) OR empty($prenom) OR empty($adresse1) OR empty($cp) OR empty($ville) OR empty($telephone) OR empty($email))
{
echo '<font color="red">Attention, seul le champs <b>Adresse suite</b> peut rester vide !</font>';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
$db = mysql_connect('localhost', 'root', ''); // connexion à la base
mysql_select_db('outremercolis',$db); // sélection de la base
// on regarde si l'url existe déjà
$sql = "SELECT client_id FROM oc_clients WHERE email='$email'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on compte le nombre de résultats
$res = mysql_num_rows($req);
if($res!=0) // l'url existe déjà, on affiche un message d'erreur
{
echo '<font color="red">l\'email existe déjà dans nos bases !';
}
else // L'url n'existe pas, on insère d'abord les infos dans oc_clients
{
$sql = "INSERT INTO oc_clients(client_id, titre, nom, prenom, adresse1, adresse2, cp, ville, telephone, email) VALUES('','$titre','$nom','$prenom','$adresse1','$adresse2','$cp','$ville','$telephone','$email')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on récupère l'id_site qui vient d'être généré
$client_id = mysql_insert_id();
// ci-dessous on insère les infos dans oc_choix
$sql = "INSERT INTO oc_choix(choix_id, type_reexpedition, emballage, client_id) VALUES('','$type_reexpedition','$emballage','$client_id')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}
{
echo '<font color="Green">Votre demande a bien eté prise en compte, vous allez recevoir un mail avec votre numéro d expédition et des instructions à suivre avant de passer commande.</font>';
}
{
}
mysql_close(); // on ferme la connexion
}
?>
J'ai compris le principe d'une requête avec des champs qui récupère les 3 1er chiffre du CP, un autre qui récupère l'ID client et un troisième pour concaténer les deux autres. Je connais le principe, mais comment Mettre cela en exergue dans le script ci-dessous qui existe déjà, d'ailleurs est-ce la bonne solution ?
<?php
if(isset($_POST['type_reexpedition'])) $type_reexpedition=$_POST['type_reexpedition'];
else $type_reexpedition="";
if(isset($_POST['emballage'])) $emballage=$_POST['emballage'];
else $emballage="";
if(isset($_POST['titre'])) $titre=$_POST['titre'];
else $titre="";
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";
if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";
if(isset($_POST['adresse1'])) $adresse1=$_POST['adresse1'];
else $adresse1="";
if(isset($_POST['adresse2'])) $adresse2=$_POST['adresse2'];
else $adresse2="";
if(isset($_POST['cp'])) $cp=$_POST['cp'];
else $cp="";
if(isset($_POST['ville'])) $ville=$_POST['ville'];
else $ville="";
if(isset($_POST['telephone'])) $telephone=$_POST['telephone'];
else $telephone="";
if(isset($_POST['email'])) $email=$_POST['email'];
else $email="";
// On vérifie si les champs sont vides
if(empty($titre) OR empty($nom) OR empty($prenom) OR empty($adresse1) OR empty($cp) OR empty($ville) OR empty($telephone) OR empty($email))
{
echo '<font color="red">Attention, seul le champs <b>Adresse suite</b> peut rester vide !</font>';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
$db = mysql_connect('localhost', 'root', ''); // connexion à la base
mysql_select_db('outremercolis',$db); // sélection de la base
// on regarde si l'url existe déjà
$sql = "SELECT client_id FROM oc_clients WHERE email='$email'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on compte le nombre de résultats
$res = mysql_num_rows($req);
if($res!=0) // l'url existe déjà, on affiche un message d'erreur
{
echo '<font color="red">l\'email existe déjà dans nos bases !';
}
else // L'url n'existe pas, on insère d'abord les infos dans oc_clients
{
$sql = "INSERT INTO oc_clients(client_id, titre, nom, prenom, adresse1, adresse2, cp, ville, telephone, email) VALUES('','$titre','$nom','$prenom','$adresse1','$adresse2','$cp','$ville','$telephone','$email')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on récupère l'id_site qui vient d'être généré
$client_id = mysql_insert_id();
// ci-dessous on insère les infos dans oc_choix
$sql = "INSERT INTO oc_choix(choix_id, type_reexpedition, emballage, client_id) VALUES('','$type_reexpedition','$emballage','$client_id')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}
{
echo '<font color="Green">Votre demande a bien eté prise en compte, vous allez recevoir un mail avec votre numéro d expédition et des instructions à suivre avant de passer commande.</font>';
}
{
}
mysql_close(); // on ferme la connexion
}
?>
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
19 juin 2013 à 17:41
19 juin 2013 à 17:41
As tu vu ce que j'ai écrit juste avant ?
Ton champ id dans ta table est autoincrémenté, mais ce que tu veux y insérer à la place de l'id n'est pas un nombre, tu auras donc une erreur.
Il te faut alors un champ code_client en plus de l'id.
Ton champ id dans ta table est autoincrémenté, mais ce que tu veux y insérer à la place de l'id n'est pas un nombre, tu auras donc une erreur.
Il te faut alors un champ code_client en plus de l'id.
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
19 juin 2013 à 17:44
19 juin 2013 à 17:44
Oui, oui, j'ai bien vu et compris qu'il faut un champs qui reprenne l'ID.
MErci.
MErci.
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
19 juin 2013 à 17:49
19 juin 2013 à 17:49
D'accord !
Tu n'as même pas besoin de le faire en PHP enfaite, tu peux tout faire en SQL ;-)
1.
INSERT INTO oc_clients(client_id, titre, nom, prenom, adresse1, adresse2, cp, ville, telephone, email) VALUES('','$titre','$nom','$prenom','$adresse1','$adresse2','$cp','$ville','$telephone','$email')
2.
$id = last_insert_id();
3.
UPDATE oc_clients
SET code_client = (select cp concat '-' concat client_id from oc_clients where client_id = $id)
WHERE client_id = $id
Tu n'as même pas besoin de le faire en PHP enfaite, tu peux tout faire en SQL ;-)
1.
INSERT INTO oc_clients(client_id, titre, nom, prenom, adresse1, adresse2, cp, ville, telephone, email) VALUES('','$titre','$nom','$prenom','$adresse1','$adresse2','$cp','$ville','$telephone','$email')
2.
$id = last_insert_id();
3.
UPDATE oc_clients
SET code_client = (select cp concat '-' concat client_id from oc_clients where client_id = $id)
WHERE client_id = $id
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
19 juin 2013 à 17:53
19 juin 2013 à 17:53
Ouah ! "... tout faire en sql...", tu veux dire sur la base directement ?
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
19 juin 2013 à 17:59
19 juin 2013 à 17:59
Tout est dans le code que j'ai mis ;-)
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
19 juin 2013 à 18:02
19 juin 2013 à 18:02
Merci bcp.
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par maxireussite le 19/06/2013 à 18:55
Modifié par maxireussite le 19/06/2013 à 18:55
Bon, ben après réflexion ton message ne m'est pas clair quand tu dis je peux tout faire en sql ça veut dire quoi ? J'ai tenté de remplacer la fin du code à partir de INSERT INTO, j'ai plein de messages d'erreurs !
Qqu'un pourrait-il m'expliquer pas à pas svp ?
Merci de vot' bon coeur !!
PS : noter que j'ai créé le champs code_client dans OC_CLIENTS.
Qqu'un pourrait-il m'expliquer pas à pas svp ?
Merci de vot' bon coeur !!
PS : noter que j'ai créé le champs code_client dans OC_CLIENTS.
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
19 juin 2013 à 20:06
19 juin 2013 à 20:06
Le faire en sql veut dire que c'est sql qui va générer ton code_client, et non php.
Les deux sont faisable et tout à fait correct.
Je m'explique :
En php, tu fais une variable $code_client = substr($cp, 0, 3) . '-';
Et un insert into oc_clients ...
Etu fais un update où tu renseigne le code client = $code_client . last_insert _id()
En sql, tu fais un insert into avec le code client à nul
Puis tu fais un update du code client avec un select substr(cp, 0, 3) concat '-' concat id_client from oc_clients where id_client = last_insert_id()
Cela reviens au même dans les deux cas.
Peux tu mettre ton code pour voir où se trouve les erreurs
Les deux sont faisable et tout à fait correct.
Je m'explique :
En php, tu fais une variable $code_client = substr($cp, 0, 3) . '-';
Et un insert into oc_clients ...
Etu fais un update où tu renseigne le code client = $code_client . last_insert _id()
En sql, tu fais un insert into avec le code client à nul
Puis tu fais un update du code client avec un select substr(cp, 0, 3) concat '-' concat id_client from oc_clients where id_client = last_insert_id()
Cela reviens au même dans les deux cas.
Peux tu mettre ton code pour voir où se trouve les erreurs
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
19 juin 2013 à 20:26
19 juin 2013 à 20:26
MErci pour ton aide :
Je t'en prie adresse toi à moi comme à un demeuré : ))
Bon j'ai collé ton code dans sql, après avoir ajouté un champs code à oc_clients, voici le message d'erreur :
Requête SQL:
1. INSERT INTO oc_clients( client_id, titre, nom, prenom, adresse1, adresse2, cp, ville, telephone, email )
VALUES (
'', '$titre', '$nom', '$prenom', '$adresse1', '$adresse2', '$cp', '$ville', '$telephone', '$email'
)2.$id = last_insert_id( ) ;
MySQL a répondu: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1.
INSERT INTO oc_clients(client_id, titre, nom, prenom, adresse1, adresse2, cp' at line 1
Je t'en prie adresse toi à moi comme à un demeuré : ))
Bon j'ai collé ton code dans sql, après avoir ajouté un champs code à oc_clients, voici le message d'erreur :
Requête SQL:
1. INSERT INTO oc_clients( client_id, titre, nom, prenom, adresse1, adresse2, cp, ville, telephone, email )
VALUES (
'', '$titre', '$nom', '$prenom', '$adresse1', '$adresse2', '$cp', '$ville', '$telephone', '$email'
)2.$id = last_insert_id( ) ;
MySQL a répondu: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1.
INSERT INTO oc_clients(client_id, titre, nom, prenom, adresse1, adresse2, cp' at line 1
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
20 juin 2013 à 01:30
20 juin 2013 à 01:30
C'était une démarche à suivre ce que je t'ai dit :)
Il ne fallait pas copier/coller :p
Il faut le traduire en PHP ;-)
Il ne fallait pas copier/coller :p
Il faut le traduire en PHP ;-)
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
20 juin 2013 à 01:50
20 juin 2013 à 01:50
lol !
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
23 juin 2013 à 05:58
23 juin 2013 à 05:58
Alors, personne pour me prendre par la main ?