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 :

Rajouter référence aléatoire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Par défaut Rajouter référence aléatoire
    Bonjour,

    J'ai un champ référence dans une bdd. J'aimerai que celle-ci s'inscrive aléatoirement avec un nom devant.

    Exemple :

    LUX-0001
    LUX-1068
    LUX-9860
    etc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function ref() 
    {
      $chrs = 6 ;
      $rf = "LUX-"  ;
      mt_srand ((double) microtime() * 1000000);
      while (strlen($rf)<$chrs)
      {
        $chr = chr(mt_rand (0,255));
        if (eregi("^[a-hj-km-np-z2-9]$", $chr))
          $rf = $rf.$chr;
      };
      return $rf;
    }

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Oui mais c'est quoi le réel problème ? Ca renvoit quoi ? Ca fait pas quoi ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Par défaut
    En fait, ça n'enregistre rien dans le champ référence de la BDD

    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
     
    function ref() 
    {
      $chrs = 6 ;
      $rf = "LUX-"  ;
      mt_srand ((double) microtime() * 1000000);
      while (strlen($rf)<$chrs)
      {
        $chr = chr(mt_rand (0,255));
        if (eregi("^[a-hj-km-np-z2-9]$", $chr))
          $rf = $rf.$chr;
      };
      return $rf;
    }
     
    function insere_annonce($id, $rf) {
    INSERT INTO annonces (
    titre
    , reference
    VALUES (
    '$titre'
    , '$rf'
    ");

  4. #4
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut
    Salut, avant de soumettre une requete à une BDD, il faut s'y connecter


    http://php.developpez.com/faq/?page=...mysqlconnecter

    ++
    JC

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Par défaut
    C'est très gentil comme remarque, mais je ne post que le bout de code qui est primordial...

  6. #6
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut
    PEux tu envoyer ton vrai code alors car je ne sais pas si le code suivant marche ...


    INSERT INTO annonces (
    titre
    , reference
    VALUES (
    '$titre'
    , '$rf'
    ");

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO annonces (
    titre
    , reference
    VALUES (
    '$titre'
    , '$rf'
    ");
    ne fonctionne certainement pas :
    il manque la parenthèse de fermeture dans tes champs
    il manque la requête mysql
    il y a fermeture des guillemets sans ouverture
    et n'oublie pas de fermer ta fonction ...

    Et pour savoir si une requête fonctionne correctement, exécute directement ta requête dans ton panneau d'administration de ta base de données (par exemple phpmyadmin). Petit truc que j'utilise : mon script simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req = "INSERT INTO annonces (titre,reference) VALUES ('$titre','$rf')";
    echo $req;
    mysql_query($req);
    je récupère le echo dans ma page html et je le copie dans phpmyadmin.
    s'il y a erreur, phpmyadmin t'indique laquelle

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Aussi je complète la réponse de francis_m :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query($req) or die('Erreur SQL : ' . mysql_error());
    Te permettra de voir s'il y a une erreur coté exécution php

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Par défaut
    Voici exactement ce que j'ai fais

    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
     
    function ref() 
    {
      $chrs = 6 ;
      $rf = "LUX-"  ;
      mt_srand ((double) microtime() * 1000000);
      while (strlen($rf)<$chrs)
      {
        $chr = chr(mt_rand (0,255));
        if (eregi("^[a-hj-km-np-z2-9]$", $chr))
          $reference = $rf.$chr;
      };
     return $reference;
    }
     
    function insere_annonce($id, $img1, $pdf, $frm, $reference) {
    valide($frm['on_special']);
    valide($frm['etat']);
    $reference = ref();
    $qid = mysql_query("
    INSERT INTO annonces (
    reference
    , image1
    , pdf
    , etat
    , on_special)
    VALUES (
    '$reference'	
    , '$img1'
    , '$pdf'
    , '$frm[etat]'
    , '$frm[on_special]')
    ");
    }
    J'ai fais plusieurs test en rajoutant un champ comme 'nom' et il s'enregistre normalement. J'ai meme tenté de rajouter cela $reference = ref(); dans la fonction d'insere mais sans succès

    J'ai testé la requete dans phpmyadmin comme suit et je n'ai aucune erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO annonces( titre, reference ) 
    VALUES (
    '$titre', '$reference'
    )
    Je pense qu'il y'a une erreur dans la fonction ref()...

    Sinon, y'aurait il une autre solution pour un enregistrement aléatoire derrière un nom?

  10. #10
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Dans ce cas fais un echo de ref() pour voir ce que ca te renvoi. Au moins tu sauras ce qu'il se passe de ce coté

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Par défaut
    J'ai fais un echo dans la fonction insere et sous la fonction ref() et rien ne se passe, pas d'affichage

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Par défaut
    Je dois forcement boire

    Cela m'affiche $reference

  13. #13
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Si tu fais ca affiche $reference ??

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Par défaut
    Non mais lorque je fais cela dans la fonction insere, il n'enregistre plus rien dans la bdd...

    C'est galère

  15. #15
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Le but est de trouver d'où vient l'erreur donc si ca n'enregistre pas tampis...

    Donc deux solutions : ca vient de la fonction ou de la requete.
    Donc il faudrait soit faire un echo de la requete ou faire un echo du résultat de reference

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Par défaut
    J'ai trouvé une solution qui n'est peut être pas la meilleur mais bon au moins ça fonctionne à moitier...

    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
     
    function ref($long_max=15) {
     
    $titre = "LUX-";
    $separateur = "1234567890";
     
    $liste_mots = "ABCEFGHIJKLMNOPQRSTUVWXYZ";
     
    $mot1 = trim($liste_mots[rand(0, count($liste_mots) - 1)]);
     
    $separateur1 = $separateur[rand(0, strlen($separateur) - 1)];
     
    return substr($titre . $mot1 . $separateur1, 0, $long_max);
    }
     
    function insere_annonce($frm) {
     
    $reference = ref();
     
    $sql = "
    INSERT INTO annonces (
    titre
    ,reference
    ) VALUES (
    '$frm[titre]'
    ,'$reference'
    )";
    $qid = mysql_query($sql);
    }
    La référence s'ajoute dans la bdd mais pas entièrement. Il n'inscrit que le nom plus deux chiffres ou lettres derrieres, pas plus

    J'aimerai qu'il entre aléatoirement une série de 7 chiffres et/ou lettre derriere "LUX-"

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Par défaut
    Problème résolu

    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
     
    function numero()
    {
      $chrs = 15 ; 
      $ref = "LUX-"  ;
      mt_srand ((double) microtime() * 1000000);
      while (strlen($ref)<$chrs)
      {
        $chr = chr(mt_rand (0,255));
        if (eregi("^[a-hj-km-np-z2-9]$", $chr))
          $ref = $ref.$chr;
      };
      return $ref;
    }
     
    function insere_annonce($frm) {
     
    $reference = numero();
     
    $sql = "
    INSERT INTO annonces (
    titre
    ,reference
    ) VALUES (
    '$frm[titre]'
    ,'$reference'
    )";
    $qid = mysql_query($sql);
    }
    Il ne me reste plus qu'à verifier la référence si elle n'existe pas déjà dans la bdd...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment rajouter des références (Library) dans VBA
    Par apnw7931 dans le forum Apple
    Réponses: 3
    Dernier message: 01/03/2012, 09h18
  2. [AC-2003] Référence manquante - erreur après rajout
    Par Fredo67 dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/04/2010, 15h58
  3. Obtenir un nombre aléatoire à partir d'un nombre référence ?
    Par supergrey dans le forum Mathématiques
    Réponses: 10
    Dernier message: 08/11/2008, 19h47
  4. [MySQL] enregistement d'une référence aléatoire
    Par djinko dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 11/12/2006, 15h50
  5. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 03h35

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