Générer un code client avec le code postal...
                    
        
     
             
                    maxireussite
    
        
    
                    Messages postés
            
                
     
             
            405
        
            
                                    Statut
            Membre
                    
                -
                                     
maxireussite Messages postés 405 Statut Membre -
        maxireussite Messages postés 405 Statut Membre -
        Bjr,
Comment pourrais-je m'y prendre pour qu'après avoir rempli un formulaire d'inscription un client reçoive automatiquement un mail de confirmation (après ttes les vérifications d'usage) qui aura généré automatiquement un code client du genre :
765-102 = trois 1er chiffre du code postal - increment ID
Ici 76500 (Elbeuf sur seine) et 102e inscription.
je précise qu'il faut me prendre par la main. :)
Merci d'avance en tous cas.
                
            
                
    
    
    
        Comment pourrais-je m'y prendre pour qu'après avoir rempli un formulaire d'inscription un client reçoive automatiquement un mail de confirmation (après ttes les vérifications d'usage) qui aura généré automatiquement un code client du genre :
765-102 = trois 1er chiffre du code postal - increment ID
Ici 76500 (Elbeuf sur seine) et 102e inscription.
je précise qu'il faut me prendre par la main. :)
Merci d'avance en tous cas.
        A voir également:         
- Générer un code client avec le code postal...
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code postal - Télécharger - Vie quotidienne
- Code activation windows 10 - Guide
16 réponses
                        
                    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;
                        
                    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.
                        
                    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 :)
                        
                    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
                        
                    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.
                        
                    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
                        
                    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.
                        
                    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
                        
                    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
