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 :

Méthode de récupération de plusieurs valeurs en fonctions du nombre de lignes d'un tableau.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 58
    Par défaut Méthode de récupération de plusieurs valeurs en fonctions du nombre de lignes d'un tableau.
    Bien le bonjours/bonsoir à tous !
    Alors je m'explique, j'ai un tableau comme suit :

    Nom : Sans titre.png
Affichages : 261
Taille : 27,1 Ko


    L'ors ce que je clique sur le "+" du deuxième tableau, une nouvelle ligne s'ajoute avec 5 inputs, que j'ai encadrés en rouge allant de la droite vers la gauche, je précise que cela s'effectue grâce à un code Jquery.
    Le but étant donc de récupérer les valeurs de touts ces inputs et ensuite d'insérer les valeurs dans la base de données.

    J'arrive à faire cela avec la toute première ligne qui est toujours présente par défaut.
    Or si l'utilisateur décide de rajouter 4 ligne supplémentaires ( par exemple) il fraudrais récupérer les données non seulement de la première ligne mais aussi des 4 autres, et s'il en ajoute 6, même opération etc...

    Je n'est absolument aucune idées de comment faire ceci, je vous met mon bout de code avec le quelle je récupère les valeurs de la première ligne et les insères dans la BDD :
    Je suis plutôt débutant en PHP et il est vrai qu’après 3 jours de recherche j'en vient a bout !

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <?php
    if( (!empty($_POST['nom'])) && (!empty($_POST['id'])) && (!empty($_POST['type'])) && (!empty($_POST['table']))  ){
     
     
     
    // On commence par récupérer les champs 
    if(isset($_POST['index'])) $index=$_POST['index'];
    else    $index=""; 
     
    if(isset($_POST['nom']))      $nom=$_POST['nom']; 
    else      $nom="nom";
     
    if(isset($_POST['id']))      $id=$_POST['id']; 
    else     $id="id";
     
    if(isset($_POST['type']))     $type=$_POST['type']; 
    else   $type="type";
     
    if(isset($_POST['table']))     $table=$_POST['table']; 
    else     $table="table";
     
     
    // connexion
    $mysql_user="admin";
    $mysql_password="admin";
    $reqco = mysql_connect("localhost",$mysql_user,$mysql_password) or die('Erreur de connexion '.mysql_error());
     
    //sélection de la BDD
    $reqse = mysql_select_db("tp_arexx",$reqco) or die('Erreur de connexion '.mysql_error());
     
        // on écrit la requête sql 
         $sql="INSERT INTO `tp_arexx_capteurs` (`Arexx_index`, `Arexx_Id`, `Arexx_Type`, `Arexx_Table`, `Arexx_Name`)
          VALUES('$_POST[index]','$_POST[id]','$_POST[type]','$_POST[table]','$_POST[nom]')";
     
        // on insère les informations du formulaire dans la table 
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
    	//sélection de la BDD
    $reqse = mysql_select_db("tp_arexx",$reqco);
     
     $sql_query = "CREATE TABLE `$_POST[table]` ( `Arexx_index` BIGINT(4) AUTO_INCREMENT NOT NULL, `marqueur_temps` VARCHAR(16) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL, `mesure` VARCHAR(20) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
     `rssi` VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL, `jour` DATE NOT NULL, `heure` TIME NOT NULL, PRIMARY KEY (`Arexx_index`))";   // Requête 
          $result_query=mysql_query($sql_query);
    	  mysql_query($sql_query);     // Exécution de la requête 
          $Erreur = mysql_error(); 
     
     } 
    	  else {
    	  }
    ?>
    Un très grand merci à vous tous d'avance !
    Bonne soirée/journée.

  2. #2
    Membre éprouvé Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Par défaut Une réponse un peu vague, mais la marche à suivre est là
    Bonsoir,

    Je peux certes voir que tu réceptionnes tes variables, mais j'aimerais surtout savoir comment elles s'envoient, tu incrémentes tes variables 'name' sur tes inputs ?

    Quoi qu'il arrive tu devras déjà faire une boucle pour récupérer toutes tes variables jusqu'à ce que tu arrives à la fin de tes inputs

    À chaque fois tu devras également vérifier les variables de ton input.

    Jisig

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 58
    Par défaut
    Merci d'avoir répondu !
    Alors voilà mes inputs si je comprend bien mes inputs je met deux crochets [] comme suit pour faire un tableau donc, jusqu'ici tout va bien.
    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
     <tr class="headingTr" id="headingTr">
     <td><center>&nbsp;Index du capteur&nbsp;</center></td> 
    <td><center>&nbsp;Nom du capteur&nbsp;</center></td> 
    <td><center>&nbsp;Identifiant du capteur&nbsp;</center></td> 
    <td><center>&nbsp;Type du capteur&nbsp;</center></td> 
    <td><center>&nbsp;Table correspondant au capteur&nbsp;</center></td>
        <td></td>
      </tr>
     
     
     <tr id="sformadd">
    <td><center><input type="text" name="index[]" id="text" size="15" value=""  maxlength="20"></center> </td> 
    <td><input type="text" name="nom[]" size="15" id="text0" value="" class="remplit" maxlength="20"><br></td> 
    <td><input type="text" name="id[]" size="15" id="text1"  value="" class="remplit" maxlength="20"> </td> 
    <td><input type="text"  size="15" name="type[]" id="text2" value="" class="remplit" maxlength="20"><br></td> 
    <td><input type="text" name="table[]" size="15" id="text3" value="" class="remplit" maxlength="20"> </td> 
    </tr>
    Le début de mon code PHP est donc bon ?
    Ce que je ne comprend c'est l'emploies du foreach :/ qui pourrait très bien s'appliquer au miens pour faire une boucle ?

    Ceci est un éxemple :
    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
    <?php foreach($BX_NAME as $a => $b){ ?>
    	<tr>
    	<p>
    		<td>
    			<?php echo $a+1; ?>
    		</td>
    		<td>
    			<label>Name</label>
    			<input type="text" readonly="readonly" name="BX_NAME[$a]" value="<?php echo $BX_NAME[$a]; ?>">
    		</td>
    		<td>
    			<label for="BX_age">Age</label>
    			<input type="text" readonly="readonly" class="small"  name="BX_age[]" value="<?php echo $BX_age[$a]; ?>">
    		</td>
    		<td>
    			<label for="BX_gender">Gender</label>
    			<input type="text" readonly="readonly" name="BX_gender[]" value="<?php echo $BX_gender[$a]; ?>">
    		</td>
    		<td>
    			<label for="BX_birth">Berth Pre</label>
    			<input type="text" readonly="readonly" name="BX_birth[]" value="<?php echo $BX_birth[$a]; ?>">
    		</td>
    	</p>
    	</tr>
    <?php } ?>
    Par éxemple sa pourrait donner quoi ? Car j'en est essayer plusieurs mais sans succès ...
    Merci !

  4. #4
    Membre éprouvé Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <td><center><input type="text" name="index[]" id="text" size="15" value=""  maxlength="20"></center> </td> 
    <td><input type="text" name="nom[]" size="15" id="text0" value="" class="remplit" maxlength="20"><br></td> 
    <td><input type="text" name="id[]" size="15" id="text1"  value="" class="remplit" maxlength="20"> </td> 
    <td><input type="text"  size="15" name="type[]" id="text2" value="" class="remplit" maxlength="20"><br></td> 
    <td><input type="text" name="table[]" size="15" id="text3" value="" class="remplit" maxlength="20"> </td> 
    </tr>
    Les crochets comme valeur pour ton attribut name me semblent pas un choix très judicieux.

    Normalement, tu crées tes noms de variables depuis jquery si j'ai bien compris, donc quand tu ajoutes cinq inputs, il doit vérifier ceux qui existent afin d'incrémenter tes valeurs de l'attribut name.

    Ce que je ne comprend c'est l'emploies du foreach :/ qui pourrait très bien s'appliquer au miens pour faire une boucle ?
    On utilise foreach pour parcourir un array, mais là normalement tu dois juste tester des noms de variables, je ferais ça avec une boucle while pour tester tes variables. et j'utiliserais un input en display:none (pour pas qu'on le voit qui me servirait à savoir combien de input tu as pour justement tester tes variables après.

    J'espère que je parviens à me faire comprendre.

    ps : Il y a probablement un peu plus court mais je ne vois pas sur le moment.

    Jisig.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 58
    Par défaut
    Je suis vraiment désoler mais je ne voit pas du tout comment faire ça !
    Aurait tu un éxemple a me proposer ? Merci beaucoup !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <td><center><input type="text" name="index[]" id="text" size="15" value=""  maxlength="20"></center> </td> 
    <td><input type="text" name="nom[]" size="15" id="text0" value="" class="remplit" maxlength="20"><br></td> 
    <td><input type="text" name="id[]" size="15" id="text1"  value="" class="remplit" maxlength="20"> </td> 
    <td><input type="text"  size="15" name="type[]" id="text2" value="" class="remplit" maxlength="20"><br></td> 
    <td><input type="text" name="table[]" size="15" id="text3" value="" class="remplit" maxlength="20"> </td>
    CONTRAIREMENT à ce que dit Jisig, il FAUT mettre des crochets aux name.

    Lors du traitement du formulaire, tu récupères alors des tableaux (array()) de valeurs pour chaque name :
    $_POST['index'], $_POST['nom'], $_POST['id'],... sont des array().
    Pour traiter ligne par ligne ton tableau (<table>) :
    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
    foreach( $_POST['index'] as $ii => $val )
    {
       // récupération des valeurs de la ligne
       $val_index = $val; // = $_POST['index'][$ii]
       $val_nom = $_POST['nom'][$ii];
       $val_id = $_POST['id'][$ii];
       $val_type = $_POST['type'][$ii];
       $val_table = $_POST['table'][$ii];
     
       // gestion d'erreur
       // ...
     
       // insertion en BdD
       // ...
     
    }
    N.B. tu devrais mettre des noms de variables moins... banals/simplistes ("id", "nom", "table", "type",...) pour éviter des confusions (mots réservés,...).
    par exemple : "capteur_id", "capteur_nom", "capteur_table",...
    Dernière modification par Invité ; 01/03/2015 à 21h56.

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

Discussions similaires

  1. récupération de plusieurs valeur sous jquery
    Par aymen8219 dans le forum jQuery
    Réponses: 2
    Dernier message: 20/12/2011, 14h09
  2. Récupération d'une valeur en fonction d'une autre
    Par Rem5962 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/01/2011, 20h28
  3. Réponses: 1
    Dernier message: 11/06/2010, 12h14
  4. [SQL2005] requete en fonction du nombre de ligne d'une table
    Par tehes dans le forum Développement
    Réponses: 2
    Dernier message: 21/11/2007, 14h10

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