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 :

Récupérer des infos d'une table et en ajouter d'en une autre


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2018
    Messages : 17
    Par défaut Récupérer des infos d'une table et en ajouter d'en une autre
    Bonjour,

    Dans le cadre d'une simplification d'un process, j'ai besoin de récupérer des infos d'une base SQL dans une table
    et ensuite d'en ajouter ces éléments récupérés + d'autres fixes dans une autre table.

    A la base, j'ai un formulaire qui doit simplement scanner un barcode, en appuyant sur un bouton valider, cela doit rechercher :
    1. une quantité correspondante au barcode
    2. la référence liée au barcode
    Ensuite :
    1. prendre la quantité + la référence correspondante
    2. insérer ces 2 éléments dans une autre table + des éléments fixes comme l'heure et quelques données fixes.
    Le tout en un seul clic.

    Mon formulaire simple :
    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
    <div class="container center">
    <form action="insertandselect.php" method="POST">
        <div class="row">
          <div class="col-25">
            <label for="codebar"><b>Code Barre</b></label>
          </div>
          <div class="col-75">
            <input type="text" name="name" placeholder="Scannez le code barre" autofocus>
    		<input type="hidden" id="quantite" name="quantite">
          </div>
        </div>
        <div class="row">
    	<center>
          <input type="submit" name="submit">
        </center>
    	</div>
      </form>
    Mon code qui ne fonctionne pas :
    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
    <?php
     
    $link = @mysql_connect("localhost", "root", "") or die(mysql_error());
    $codebar = isset($_POST['codebar']) ? $_POST['codebar'] : NULL;
     
    // Check connection
     
      @mysql_query("USE labelprod",$link);
      $query = "SELECT quantity FROM table1 WHERE Barcod = '%$codebar%'";
      $result = @mysql_query($query);
     
      while ($data = @mysql_fetch_object($result)){
          $codebar = $data->Barcod;
     
          @mysql_query("USE labelprod",$link);
          $sql = "INSERT INTO table2 SET
              conso_Barcod = '$codebar',
    	 conso_user = 'donneefixe1',
              quantity = '$quantite'";
     
           if (!@mysql_query($sql)) {
           echo '<p>Erreur ajout dans la base: ' . @mysql_error() . '</p>';
          }
     
      }
     
    // Close connection
    mysql_close($link);
    ?>
    Pouvez vous m'aider svp ?
    Je suis pas un expert, je bidouille en php Mysql et en général je m'en sort... pas cette fois lol
    J'ai fouillé bien évidemment sur Google et ici sans réellement trouver ce que je cherche.
    A noter, que je n'ai pas d'erreurs retournées, j'ai une page blanche qui s'affiche après validation du formulaire.

    Cordialement,
    Merci

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Quelque chose m'échappe peut être, mais là, je ne vois pas l'intérêt de ton formulaire ni même de PHP.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    insert into table2
    select distinct barcod,now(),"donnee_fixe",quantity
    from table 1
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2018
    Messages : 17
    Par défaut
    Merci pour la piste.
    Pour le formulaire, c'est simple, il faut penser «utilisateur».

    La personne a un lecteur de code barres dans les mains, elle choisit son action qui est de scanner une étiquette (un clic sur un bouton, ça déclenche l'ouverture d'une page web).
    Il faut bien qu'un «endroit» (le formulaire) via un champ
    Qui soit défini pour que 1. Je récupère l'info et 2. La personne puisse cliquer pour faire son action.
    C'est le clic après scan qui doit effectuer les requêtes de selection et d'ajout en base.

    A moins que je me complique trop la tâche?..

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    insert into table2
    select distinct barcod,now(),"donnee_fixe",quantity
    from table1
    where barcod="123456"

    Je ne sais pas... Est-ce que tu peux travailler ce genre de requête dans ton phpmyadmin pour voir celle qui marche ?
    Ou bien nous donner la structure de table 1 et table 2...
    Le mieux est de partir d'une requête SQL qui fonctionne, et d'introduire tes variables PHP ensuite... et de passer à PDO par la même occasion...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Généralement les douchettes et autres scanner peuvent être paramétrés afin d'insérer automatiquement des caractères lors de la lecture d'un code à barre.
    Il est donc possible d'ajouter par exemple un ENTER et de ce fait de faire sans bouton (même s'il faut le mettre car on ne sait jamais).

    L'exemple ci-dessous appelle la fonction sauvegarde dès qu'on appuie sur la touche Entrée ou qu'on clique sur le bouton. En remplaçant 13 par 109 le caractère "d'envoi" devient le signe moins.

    Le fichier test9445b.php permet d'enregistrer le code à barre et d'afficher en retour la valeur de la dernière entrée.

    Code php : 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <!DOCTYPE html>
    <html>
    <head>
    <title>Untitled</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script language="JavaScript" type="text/javascript">
    <!--
    var stopChar = 13;
    function sauvegarde() {
      $(function() {
        res = document.getElementById('bc').value;
           $.get('test9445b.php?bc='+res, function(data2) {
      $('#log').html(data2);   
        });
        document.getElementById('bc').value = '';
        donneFocus();
      });
    }
    function donneFocus()
    {
     document.getElementById('bc').focus();
    }
    function onLoad()
    {
     document.getElementById('bc').value = '';
     donneFocus();
     
     document.getElementById('bc').onkeydown = function (e){
      console.log(e.which);
      if (e.which === stopChar) {
       e.preventDefault();
       sauvegarde();
      }
     }
    }
    //-->
    </script>
     
    </head>
    <body  onload="onLoad()">
    Input :
    <input type="text" id="bc" value="" size="30"/>
    <input type="button" id="bok" value="Ok" onclick="sauvegarde()"/><br/>
    Dernière entrée :
    <div id="log"></div>
    </body>
    </html>


    test9445b.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php 
    //---- ajout du code de connexion à la BDD et enregistrement des données.
     
    //---- Retour pour affichage de la dernière entrée.
    print $_GET['bc'];
    ?>

  6. #6
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    JQuery permet de se passer d'un formulaire html.

    Code php : 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    <!DOCTYPE html>
    <html>
    <head>
    <title>Untitled</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script language="JavaScript" type="text/javascript">
    <!--
    var stopChar = 13;
    function sauvegarde() {
      $(function() {
        res = document.getElementById('bc').value;
            $.get('test9445b.php?bc='+res, function(data2) {
      var liste = data2.split('|');
      //console.log(liste);
      if (liste[0] == '0')
      {
        $('#log').html(liste[1]);
      } else
      {
        $('#log').html(liste[1] + ' - ' + liste[2] + ' - Qté=' + liste[3]);
      }
        });
        document.getElementById('bc').value = '';
        donneFocus();
      });
    }
    function donneFocus()
    {
     document.getElementById('bc').focus();
    }
    function onLoad()
    {
     document.getElementById('bc').value = '';
     donneFocus();
     
     document.getElementById('bc').onkeydown = function (e){
      //console.log(e.which);
      if (e.which === stopChar) {
       e.preventDefault();
       sauvegarde();
      }
     }
    }
    //-->
    </script>
     
    </head>
    <body  onload="onLoad()">
    Input :
    <input type="text" id="bc" value="" size="30"/>
    <input type="button" id="bok" value="Ok" onclick="sauvegarde()"/><br/>
    Dernière entrée :
    <div id="log"></div>
    </body>
    </html>

    test9445b.php on peut aussi imaginer un message en retour qui indique que le code à barre a déjà été traité.
    Code php : 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
    36
    37
    38
     
     
    <?php 
    //---- Simulation de la recherche dans une table
    function recherche($cb)
    {
     $table  = array();
     //----- données de la table
     $table[] = array('cb'=>'1234','lib'=>'toto','qte'=>10);
     $table[] = array('cb'=>'12345','lib'=>'titi','qte'=>20);
     $table[] = array('cb'=>'123456','lib'=>'tata','qte'=>30);
     $table[] = array('cb'=>'1234567','lib'=>'tutu','qte'=>40);
     $table[] = array('cb'=>'12345678','lib'=>'tete','qte'=>50);
     foreach($table as $article)
     {
      if ($article['cb'] == $cb)
      {
       return $article;
      }
     }
     return false;
    }
    //---- ajout du code de connexion à la BDD et enregistrement des données
    $article = recherche($_GET['bc']);
    if ($article !== false)
    {
     //---- code pour insérer les données dans la table
     
     //---- Retour pour affichage des données
     print '1|'.implode('|',$article); 
    }
    else
    {
     //---- Retour pour affichage de l'erreur
     print '0|'.$_GET['bc']." est inconnu"; 
    }
     
    ?>

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/10/2011, 13h48
  2. [MySQL] Insérer des données dans une table, mais ce n'est pas une table USER
    Par amerex dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/08/2008, 00h01
  3. Accéder à une table dont le nom est dans une table
    Par claralavraie dans le forum Oracle
    Réponses: 7
    Dernier message: 26/12/2006, 15h51
  4. UPDATER le champ d'une table 1 avec le champ d'une table 2
    Par alain.dissoir dans le forum Oracle
    Réponses: 2
    Dernier message: 08/06/2005, 13h07

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