IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Créer une variable avec plusieurs champs


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Points : 11
    Points
    11
    Par défaut Créer une variable avec plusieurs champs
    Bonjour à tous,

    Voilà j'ai un formulaire tout bête avec différents champs.

    Je boss sur un site où la table est constituer de données membre dont un code client et un code fournisseur est présent :

    Le code client/fournisseur est formulé de la sorte :
    Exemple : 135016

    Le 1 correspond donc à Caviste/grossiste :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <label for="denomination">Dénomination:</label><select name="denomination" style="width:145px">
              <option value="1">Caviste/grossiste</option>
              <option value="3">Entreprise</option>
    <option value="5">Caves hôtels/restaurants</option>
    <option value="7">Particulier</option>
           </select><br /><br />

    Le 35 correspond au 2 premiers chiffre du code postal :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <label for="code_postal">Code Postal:</label><input type="text" name="code_postal" id="code_postal" /><br /><br />
    Et le reste à savoir 016 correspond à 3 chiffre générer aléatoirement (d'ailleurs mettre une securité pour verifier que le code n'existe pas déjà dans la bdd, si il existe alors en générer 1 nouveau automatiquement en prenant compte donc de la denomination + 2 premiers chiffre du cp),

    Ce que je veux faire, lors de l'insertion du nouveau membre, le code soit stoker dans un champs donc en recupeant la dénomination + les 2 preiers chiffre !

    Donc dans pour faire ma requête après je veux avoir une variable de cette forme :

    $code => dénomination + 2 premiers chiffre du code postal.

    Comment faire ?
    merci

    EDIT : J'ai essayé quelque chose de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    cp = mysql_real_escape_string($_POST['cp']);
    $denomination = mysql_real_escape_string($_POST['denomination']);
    $nb_min = 100;
    $nb_max = 999;
     
    // Après je fais quelque chose de ce style ?
     
    $nombre = mt_rand($nb_min,$nb_max);
     
    $code_client = $denomination.$substr($cp,0,2).$nombre
     
    //Il faut que le code client n'ait jamais été utilisée
     
    $nombrecodeclient = mysql_result(mysql_query('SELECT COUNT(*) FROM arc_membres WHERE code_client = "'.$code_client.'"'), 0);
     
    if ($nombrecodeclient != 0)
    {
            $code_erreur1 = "Le code client est déjà utilisée par un de nos membre.";
            $i++;
    }
     
    //On balance le tout dans notre table
            mysql_query('
            INSERT INTO arc_membres (membre_email, code_client)
     
            VALUES ("'.$email.'" , "'.$code_client.'" ) ') or die(mysql_error());
    Il faut absolument que le code fasse 6 caractères (et UNIQUEMENT DES CHIFFRES) et ne soient pas utilisé actuellement dans la bdd

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Points : 11
    Points
    11
    Par défaut
    Re =)

    J'ai essayé comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    $cp = mysql_real_escape_string($_POST['cp']);
    $denomination = mysql_real_escape_string($_POST['denomination']);
    $nb_min = 100;
    $nb_max = 999;
     
    // Après je fais quelque chose de ce style ?
     
    $nombre = mt_rand($nb_min,$nb_max);
     
    $code_client = $denomination.$substr($cp,0,2).$nombre
     
    //Il faut que le code client n'ait jamais été utilisée
     
    $nombrecodeclient = mysql_result(mysql_query('SELECT COUNT(*) FROM arc_membres WHERE code_client = "'.$code_client.'"'), 0);
     
    if ($nombrecodeclient != 0)
    {
            $code_erreur1 = "Le code client est déjà utilisée par un de nos membre.";
            $i++;
    }
     
    //On balance le tout dans notre table
            mysql_query('
            INSERT INTO arc_membres (membre_email, code_client)
     
            VALUES ("'.$email.'" , "'.$code_client.'" ) ') or die(mysql_error());
    Quel est mon erreur ?
    merci

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    je vois pas pourquoi tu génère une valeur aléatoire alors moi je ferais comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    $cp = 37;
    $denomination = 3;
    $nb_min = 100;
    $email = 'test@mondomaine.fr';
     
    $test_code_client = $denomination.$cp;
    $query = " SELECT code_client FROM arc_membres WHERE code_client LIKE '$test_code_client%' ORDER BY code_client DESC LIMIT 1";
     
    $log = mysql_connect('localhost', 'root', '');
    mysql_selectdb('test',$log );
    $result = mysql_query($query);
     
    if (!$result) {
        $message  = 'Requête invalide : ' . mysql_error() . "\n";
        $message .= 'Requête complète : ' . $query;
        die($message);
    }
    $total=mysql_num_rows($result);
     
    if($total==0){	
    	$code_client = $test_code_client.$nb_min;
    	mysql_query("INSERT INTO arc_membres   VALUES ('$email' , '$code_client' ) ") or die(mysql_error());
    	echo "création d'un ID pour le code de référence ".$test_code_client;	
    }else{
    	$code_client = mysql_result($result, 0);
    	$code_client = $code_client+1;
    	if (strlen($code_client)>6){		
    	echo "cota dépassé pour le code de référence ".$test_code_client;
     
    	}else{
    	mysql_query("INSERT INTO arc_membres   VALUES ('$email' , '$code_client' ) ") or die(mysql_error());
     
    	echo "ajout d'un ID pour le code de référence ".$test_code_client;
    	}	
    }

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    @ascito
    Tu pars avec un $nb_min = 100 alors que dans l'exemple il utilise 016.
    Ensuite, tu n'as aucune garantie de disponibilité sur la série $code_client +1, il se peut très bien qu'entre le moment où le script est exécuté et celui où l'insertion a lieu, il y ait une insertion qui utilise ton n° $code_client +1.
    Pour que cela fonctionne et vu qu'il n'y a pas possibilité de gérer des suites avec MySQL, ce travail d'insertion devrait être réalisé avec une procédure stockée.

    Ou, composer le $code_client avec à la fin une valeur provenant d'un champ autonum.
    Par exemple, sans procédure stockée :
    Tu insères l'enregistrement sans définir le code_client et tu rattaches un trigger après l'insertion qui complètera le code_client ainsi : groupe.cp.id(autonum généré)

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Bonsoir,

    @ascito
    Tu pars avec un $nb_min = 100 alors que dans l'exemple il utilise 016.
    Ensuite, tu n'as aucune garantie de disponibilité sur la série $code_client +1, il se peut très bien qu'entre le moment où le script est exécuté et celui où l'insertion a lieu, il y ait une insertion qui utilise ton n° $code_client +1.
    Pour que cela fonctionne et vu qu'il n'y a pas possibilité de gérer des suites avec MySQL, ce travail d'insertion devrait être réalisé avec une procédure stockée.

    Ou, composer le $code_client avec à la fin une valeur provenant d'un champ autonum.
    Par exemple, sans procédure stockée :
    Tu insères l'enregistrement sans définir le code_client et tu rattaches un trigger après l'insertion qui complètera le code_client ainsi : groupe.cp.id(autonum généré)
    Salut,

    Merci des informations ^^
    J'ai été aidé sur un autre forum, j'ai quasiment réussis le résultat voulu au niveau de la structure du code client :

    Voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    cp_code_client = strtolower(substr($_POST['code_postal'], 0, 2));
     
     //On balance le tout dans notre table
           mysql_query("
    	INSERT INTO vinicom_clients (
    		code_client, 
    		email, 
    		password, 
    		raison_sociale, 
    		denomination, 
    		nom_responsable, 
    		activite, 
    		fax, 
    		tel, 
    		pays, 
    		code_postal, 
    		rue, 
    		ville
    	)
    	VALUES (
    		CONCAT('".$denomination.$cp_code_client."',LAST_INSERT_ID()), 
    		'".$email."' , 
    		'".$password."' , 
    		'".$raison_sociale."' , 
    		'".$denomination."' , 
    		'".$nom_responsable."' , 
    		'".$activite."' , 
    		'".$fax."' , 
    		'".$tel."' , 
    		'".$pays."' , 
    		'".$code_postal."', 
    		'".$rue."' , 
    		'".$ville."'
    	)
    	") or die(mysql_error());
    Mais LAST INSERT_ID retourne 0... ^^

    Exemple :

    Je récupère bien la dénomination (en faisant mon test j'ai choisis Particulier qui vaut ==> 7)
    En code postal j'ai mis 35260

    Au niveau du code client stoker j'ai dans la table :

    7350

    7 => OK
    35 => OK
    0 ??? (NUL !)

    MYSQL :


    Nom de l'index Type Unique Compressé Colonne Cardinalité Interclassement Null Commentaire
    PRIMARY BTREE Oui Non id 3 A

    id int(11) Non Aucune AUTO_INCREMEN

    Et Code client

    code_client int(11) Non Aucune

    Après viens email etc...

    Merci !!!

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    C'est normal que LAST_INSERT_ID() te renvoie 0 vu que l'enregistrement n'a pas encore été inséré. Pour avoir une valeur, il faut laisser le moteur insérer d'abord l'enregistrement -> regardes du côté des triggers

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Points : 11
    Points
    11
    Par défaut
    Salut, merci de ton intervention

    Je m'en doutais effectivement ^^
    Mais pas sur car pour moi l'id est la première chose qui s'insert (enfin je croyais) et comme l’exécution du code_client est après l'id du coup je pensais que ça pouvais fonctionner

    Enfin bref je veux que le code client soit structurer de cette manière (denomination + 2 premiers chiffre du cp + numéro de l'id) ^^

    Triggers ? connait pas ^^

    Merci

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Allez je te file une autre piste simple et infaillible : simuler la gestion d'une série sur MySQL.
    Tu crées une table t_serial (très simple) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE `t_serial` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 PACK_KEYS=0;
    Ensuite tu créés une fonction stockée :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE DEFINER = 'root'@'localhost' FUNCTION `f_id_new`()
        RETURNS INTEGER(11) UNSIGNED
        NOT DETERMINISTIC
        CONTAINS SQL
        SQL SECURITY DEFINER
        COMMENT ''
    BEGIN
       INSERT INTO `t_serial` (id) VALUES (NULL);
       RETURN LAST_INSERT_ID();
    END;
    A chaque appel, cette fonction te renverra un id autonum qui sera toujours unique.

    Ton code devient avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
     
    $groupe = 3;
    $cp     = 37;
    $email  = 'test@mondomaine.fr';
     
    // récupération d'un id autonum absolument unique
    $sql    = 'SELECT f_id_new()';
    $qry    = mysql_query($sql);
    $new_id = mysql_result($qry, 0);
    $code_client = $groupe.$cp.$new_id;
     
    $sql = "INSERT INTO arc_membres   VALUES ('$email' , '$code_client' )";
    $exec =  mysql_query($sql) or die();
    echo 'code client : '.$code_client
     
    ?>
    Attends j'ai oublié la contrainte de la longueur de 3 digits.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Points : 11
    Points
    11
    Par défaut
    D'accord je vois le principe ^^

    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE DEFINER = 'root'@'localhost' FUNCTION `f_id_new`()
        RETURNS INTEGER(11) UNSIGNED
        NOT DETERMINISTIC
        CONTAINS SQL
        SQL SECURITY DEFINER
        COMMENT ''
    BEGIN
       INSERT INTO `t_serial` (id) VALUES (NULL);
       RETURN LAST_INSERT_ID();
    END;
    Je l'insert bien dans SQL si oui j'ai ce message :

    #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 'REATE DEFINER = 'root'@'localhost' FUNCTION `f_id_new`()
    RETURNS INTEGER(11)' at line 1

    Merci

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Quelle version de MySQL ?

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Points : 11
    Points
    11
    Par défaut
    MYSQL

    Serveur: Localhost via UNIX socket
    Version du serveur: 5.0.95-community
    Version du protocole: 10
    Utilisateur: projecth@localhost
    Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)

    PHPMYADMIN

    Version: 3.4.10.1


  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Essaies avec ça car chez moi ça gaze :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $sql = <<<SQL
    CREATE DEFINER = 'root'@'localhost' FUNCTION `f_id_new`()
        RETURNS INTEGER(11) UNSIGNED
        NOT DETERMINISTIC
        CONTAINS SQL
        SQL SECURITY DEFINER
        COMMENT ''
    BEGIN
       INSERT INTO `t_serial` (id) VALUES (NULL);
       RETURN LAST_INSERT_ID();
    END;
    SQL;
    $exec = mysql_query($sql) or die(mysql_error());

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Points : 11
    Points
    11
    Par défaut
    Pas chez moi ^^ xD !

    Il semble qu'il y ait une erreur dans votre requête SQL. Le message ci-bas peut vous aider à en trouver la cause.

    ERROR: Ponctuation invalide @ 8
    STR: <<<
    SQL: $sql = <<<SQL
    CREATE DEFINER = 'root'@'localhost' FUNCTION `f_id_new`()
    RETURNS INTEGER(11) UNSIGNED
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
    BEGIN
    INSERT INTO `t_serial` (id) VALUES (NULL);


    Requête SQL:

    $sql = <<<SQL CREATE DEFINER = 'root'@'localhost' FUNCTION `f_id_new`() RETURNS INTEGER(11) UNSIGNED NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN INSERT INTO `t_serial` (id) VALUES (NULL);

    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 '$sql = <<<SQL
    CREATE DEFINER = 'root'@'localhost' FUNCTION `f_id_new`()
    RETU' at line 1

  14. #14
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Dans ce cas adaptes le DEFINER à ton environnement (c'est le compte MySQL qui a été utilisé pour créer la fonction)

    Ensuite pour ta contrainte sur les 3 digits, le code devient ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
     
    $groupe = 3;
    $cp     = 37;
    $email  = 'test@mondomaine.fr';
     
    // récupération d'un id autonum absolument unique
    $sql    = 'SELECT f_id_new()';
    $qry    = mysql_query($sql);
    $new_id = mysql_result($qry, 0);
     
    if ($new_id > 999) {
       echo 'Codes clients épuisés';
    }
    else {
       $code_client = $groupe.$id.sprintf('%03d', $new_id);
       $sql = "INSERT INTO arc_membres   VALUES ('$email' , '$code_client' )";
       $exec =  mysql_query($sql) or die();
       echo 'code client : '.$code_client;
    }
     
    ?>

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Points : 11
    Points
    11
    Par défaut
    Ok

    Cependant je ne sais pas du tout comment faire pour le DEFINER... ^^

    En tout cas ça résoudrait mon plus gros problème ^^

  16. #16
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Le serveur est distant ? Si oui, utilises ton compte ainsi : 'Brian35'@'%'
    Tu peux aussi essayer de créer la fonction via ton interface d'administration.

  17. #17
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Je viens de regarder la doc pour MySQL 5.0.x ici et il semblerait que tu puisses ignorer cette clause.

  18. #18
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    Bon sinon tu peu aussi séparer la colonne code_client en 2 :

    code_client_groupe ( int (3) )
    code_client_id ( int (3) UNSIGNED ZEROFIL auto_increment)

    comme cela quand tu insère ca donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	$cp = 38;
    	$denomination = 3;
    	//$nb_min = 100;
    	//$nb_max = 999;
    	$email = 'test@mondomaine.fr';
    	$code_client_groupe = $denomination.$cp;
    	$code_client_id ='';
    	mysql_query("INSERT INTO arc_membres   VALUES ('$email' , '$code_client_groupe', '$code_client_id' ) ") or die(mysql_error());

  19. #19
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Je viens de regarder la doc pour MySQL 5.0.x ici et il semblerait que tu puisses ignorer cette clause.
    Quel clause ?

    Au niveau de la fonction plus haut ?

  20. #20
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $sql = <<<SQL
    CREATE FUNCTION `f_id_new`()
        RETURNS INTEGER(11) UNSIGNED
        NOT DETERMINISTIC
        CONTAINS SQL
        SQL SECURITY DEFINER
        COMMENT ''
    BEGIN
       INSERT INTO `t_serial` (id) VALUES (NULL);
       RETURN LAST_INSERT_ID();
    END;
    SQL;
    $exec = mysql_query($sql) or die(mysql_error());

Discussions similaires

  1. Créer une expression avec un champ existant
    Par kissmytoe dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 16/06/2009, 23h59
  2. créer une fonction avec plusieurs paramètres
    Par SHERPAE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/01/2009, 17h41
  3. Pb Count dans une requete avec plusieurs champ retournés
    Par maxos75 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 13/06/2008, 14h01
  4. Créer une vue avec un champ Blob
    Par Taoueret dans le forum SQL
    Réponses: 4
    Dernier message: 16/05/2008, 16h18
  5. Impossible de créer une vue avec un champ spatial
    Par M Roncheau dans le forum SQL
    Réponses: 2
    Dernier message: 24/08/2007, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo