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

Langage PHP Discussion :

Boucle et 1 seul INSERT Into pour SQL


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut Boucle et 1 seul INSERT Into pour SQL
    Bonjour,

    J'ai pour le travail une petite mission, j'ai réalisé un formulaire pour l'enregistrement de données, il fonctionne mais je pense que ca peut être améliorés ou optimiser notamment avec les enregistrements multiple input[] et un while peut être ?
    De plus je ne comprend pas comment faire un seul INSERT INTO avec une boucle ?


    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
    $reference = fPost((!isset($_POST['reference']))?(''):($_POST['reference']));
    $valeur1 = fPost((!isset($_POST['valeur1']))?(''):($_POST['valeur1']));
    $valeur2 = fPost((!isset($_POST['valeur2']))?(''):($_POST['valeur2']));
    $valeur3 = fPost((!isset($_POST['valeur3']))?(''):($_POST['valeur3']));
    $valeur4 = fPost((!isset($_POST['valeur4']))?(''):($_POST['valeur4']));
    $valeur5 = fPost((!isset($_POST['valeur5']))?(''):($_POST['valeur5']));
     
    $limite = 60;
    if($valeur1 > $limite ) {$x1=1;} else {$x1=0;}
    if($valeur2 > $limite ) {$x2=1;} else {$x2=0;}
    if($valeur3 > $limite ) {$x3=1;} else {$x3=0;}
    if($valeur4 > $limite ) {$x4=1;} else {$x4=0;}
    if($valeur5 > $limite ) {$x5=1;} else {$x5=0;}
     
     
    $xt = $x1+$x2+$x3+$x4+$x5;
    if($xt > 0)
    { 
    echo "<div class=\"alert-box error\"><span>ATTENTION: </span>Le relevés de valeur est effectué mais Attention il y a des valeurs non conforme !</div>";
    } else {
    echo '<div class="alert-box success"><span>Succés: </span>Le relevés de valeur est effectué</div>';	
    }
     
    $sql = mysql_query(" INSERT INTO valeur SET date = '$date', equipe = '$equipe', equipier = '$nomequipier', reference = '$reference',valeur1 = '$valeur1',valeur2 = '$valeur2',valeur3 = '$valeur3', valeur4  = '$valeur4' , valeur5  = '$valeur5'  ") or die( mysql_error());


    Merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je n'ai pas compris ton problème : tu veux essayer d'optimiser ce script ? ou tu veux le modifier pour pouvoir insérer plusieurs lignes de références ?
    Au passage, il faudrait aussi donner le code du formulaire
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Bonjour Celira,

    Oui, en faite j'aimerai plutôt traiter les valeur du formulaires d'une manière plus optimisée en metant dans mon formulaire cela name="valeur[]"

    Dans le traitement (comme dans le code non optimisé qui fonctionne bien)

    Il faut controler chaque valeur a une limite, si une limite depasse alors j'affiche un message d'erreur.

    Ensuite j'enregistre toutes les valeurs dans le meme INSERT INTO

    le code du formulaire actuel est :
    Code html : 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
    <dl class="curved">
    <dt>Relevé de valeur</dt>
    <dd>
     
      <label>
            <span>valeur 1</span>
            <input id="name" type="text" name="valeur1" placeholder="Noter ici la valeur" />
        </label>
     
      <label>
            <span>valeur 2</span>
            <input id="name" type="text" name="valeur2" placeholder="Noter ici la valeur" />
        </label>
    	  <label>
            <span>valeur 3</span>
            <input id="name" type="text" name="valeur3" placeholder="Noter ici la valeur" />
        </label>
    	  <label>
            <span>valeur 4</span>
            <input id="name" type="text" name="valeur4" placeholder="Noter ici la valeur" />
        </label>
    	  <label>
            <span>valeur 5</span>
            <input id="name" type="text" name="valeur5" placeholder="Noter ici la valeur" />
        </label>
     
    	    <label>
            <span>Commentaire :</span>
            <textarea id="message" name="message" placeholder="Commentaires ? notez les ici"></textarea>
        </label>
     
         <label>
            <input type="submit" class="button" value=" Envoyer " name="releve" />
        </label>

    J'aimerai mettre plutot comme cela :

    Code html : 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
    <dl class="curved">
    <dt>Relevé de valeur</dt>
    <dd>
     
      <label>
            <span>valeur 1</span>
            <input id="name" type="text" name="valeur[]" placeholder="Noter ici la valeur" />
        </label>
     
      <label>
            <span>valeur 2</span>
            <input id="name" type="text" name="valeur[]" placeholder="Noter ici la valeur" />
        </label>
    	  <label>
            <span>valeur 3</span>
            <input id="name" type="text" name="valeur[]" placeholder="Noter ici la valeur" />
        </label>
    	  <label>
            <span>valeur 4</span>
            <input id="name" type="text" name="valeur[]" placeholder="Noter ici la valeur" />
        </label>
    	  <label>
            <span>valeur 5</span>
            <input id="name" type="text" name="valeur[]" placeholder="Noter ici la valeur" />
        </label>
     
    	    <label>
            <span>Commentaire :</span>
            <textarea id="message" name="message" placeholder="Commentaires ? notez les ici"></textarea>
        </label>
     
         <label>
            <input type="submit" class="button" value=" Envoyer " name="releve" />
        </label>

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si chaque valeur était enregistrée dans une ligne différente, tu pourrais faire une boucle pour faire les insertions. Mais là, dans la mesure où chaque valeur va dans une colonne différente de la même table, je ne vois pas trop l'intérêt.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    C'est une demande de l'audit, les données de l'enregistrement doivent être sur la même ligne.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton premier traitement est un peu fou-fou.
    Puisque tu veux seulement savoir si une valeur dépasse la limite, utilise max() au lieu de faire des additions du nombre de fois ou ça dépasse.
    Pour la requête il n'y a rien de jolie à faire malheureusement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (isset($_POST['reference'], $_POST['value'][0], $_POST['value'][1], $_POST['value'][2], $_POST['value'][3], $_POST['value'][4], $_POST['value'][5]) {
    $limite = 60;
    $valeur = array_map($_POST['valeur']), 'intval');
    if (max($valeur) > $limite)  {
        $msg = "<div class=\"alert-box error\"><span>ATTENTION: </span>Le relevés de valeur est effectué mais Attention il y a des valeurs non conforme !</div>";
    } else {
         $msg = '<div class="alert-box success"><span>Succés: </span>Le relevés de valeur est effectué</div>';	
    }
    $sql = mysql_query(" INSERT INTO valeur (date_releve, equipe, equipier, reference, valeur1, valeur2, valeur3, valeur4, valeur5)
    VALUES ('$date', '$equipe', '$nomequipier', '" . mysql_real_escape_string($_POST['reference']) . "', $valeur[1], $valeur[2], $valeur[3], $valeur[4], $valeur[5]));
     
    echo $msg;
    Pour la partie requête, il n'y a pas grand chose à faire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [AC-2010] insert into pour envoyer les donnees d'une table Access vers une table Mysql
    Par jj4822 dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 01/12/2014, 11h12
  2. Horaire de l'INSERT INTO dans SQL
    Par lounou dans le forum Langage
    Réponses: 4
    Dernier message: 09/05/2014, 23h55
  3. [AC-2003] INSERT INTO de SQL SERVER vers ACCESS en ADO
    Par FMJ dans le forum VBA Access
    Réponses: 6
    Dernier message: 05/11/2009, 17h31
  4. PROBLEME INSERT INTO PL/SQL
    Par Bizoo dans le forum PL/SQL
    Réponses: 7
    Dernier message: 22/04/2008, 14h07
  5. Syntaxe d'une variable boolean dans INSERT INTO en SQL
    Par frevale dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 13/05/2006, 19h26

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