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 :

Tableau dynamique PHP et injections multiples MySQL


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Petit Webmaster Amateur
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Petit Webmaster Amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Tableau dynamique PHP et injections multiples MySQL
    Bonjour,

    tout d'abord j'espère bien être au bon endroit. et que mon titre reflète assez bien ma demande.

    Je vous expose mon problème. Je suis un amateur débutant dans le développement de site, je fais juste parti d'une association pour laquelle j'ai créé un petit site internet sans grosse prétention.

    J'ai d'habitude mon prof particulier quand j'ai des questions ou un petit besoin d'aide (c'est lui qui m'a conseillé votre forum) mais il a actuellement bien d'autres soucis.. c'est pourquoi je me permets de faire appel à votre savoir faire.

    J'en viens à ma demande.
    Mon site est géré grâce à un logiciel mais je voudrais au maximum le gérer sans avoir à passer par ce logiciel. Je suis donc actuellement sur la création d'un calendrier sous forme de tableau (celui ci exactement) qui serait modifiable via une page d'administration.

    Je sais que j'ai besoin de 3 scripts.
    - celui qui affiche le tableau sur mon site en récupérant les données de la BDD, pour celui ci c'est ok.
    - celui qui affiche le formulaire pour modifier la BDD, avec les valeurs actuelles dans les champs texte, pour celui ci j'ai peiné mais j'ai trouvé.
    - enfin ce qui me pose problème c'est celui qui exécute l'action du formulaire ci dessus. Ce que je ne sais pas faire (et que je ne trouve pas malgré de multiples recherches) c'est coder la mise à jour de plusieurs entrées ayant le même nom. En effet, pour ce tableau j'ai X (suivant le nombre de journées) champs nommés 'journée', X champs nommés 'rencontre' etc..
    Je sais bien entendu faire pour une entrée par champs mais je ne vois pas comment faire pour plusieurs entrées par champs.

    Merci d'avance pour votre aide et votre indulgence.
    Je rappel que je n'ai pas de grosses connaissances en la matières, j'apprends au fur et à mesure que je parcours le web et n'y connaissais absolument rien il y a quelques mois ..

    PS: si besoin des 2 codes qui sont ok je peux bien sûr les poster.

    Edit: je mets le code du formulaire qui sera lié à cette fameuse action qu'il me manque (le formmail_modif_calendrier.php comme indiqué dans le code), je pense que cela peut vous être utile..

    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
    <form method="post" action="../scripts_laurents/formmail_modif_calendrier.php">
    <table align=center>
    <tr><td align=center>Journée</td><td colspan="3" align=center>Rencontres</td><td align=center>Terrain (nature)</td><td align=center>Date (report)</td><td align=center>Heure</td></tr>
    <?php
    $host = '...';$user = '...';$pass = '...';
    $db = '...';
    $link = mysql_connect($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // Connexion à MySQL
    mysql_select_db($db);
    $select = "SELECT * FROM calendrier_rencontres";
    mysql_query("SET NAMES 'utf8'");
    $result = mysql_query($select,$link);
    $total = mysql_num_rows($result);
    /* Il manque une distinction des noms des cellules des tableaux, l'utilisation d'index s'impose */
    $i=0;//on initialise l'index
    while ($row = mysql_fetch_array($result)){
    $journee = $row['journee'];
    $score_locaux = $row['score_locaux'];
    $rencontre = $row['rencontre'];
    $score_visiteurs = $row['score_visiteurs'];
    $terrain = $row['terrain'];
    $date = $row['date'];
    $heure = $row['heure'];
     
    echo "<tr>";
    echo "<td align=center><input type='text' name='journee[$i]' value='$journee' size=2 /></td>";
    echo "<td align=center><input type='text' name='score_locaux[$i]' value='$score_locaux' size=2 /></td>";
    echo "<td align=center><input type='text' name='rencontre[$i]' value='$rencontre' size=45 /></td>";
    echo "<td align=center><input type='text' name='score_visiteurs[$i]' value='$score_visiteurs' size=2 /></td>";
    echo "<td align=center><input type='text' name='terrain[$i]' value='$terrain' size=25 /></td>";
    echo "<td align=center><input type='text' name='date[$i]' value='$date' size=7 /></td>";
    echo "<td align=center><input type='text' name='heure[$i]' value='$heure' size=5 /></td>";
    echo "</tr>\n";
    $i++;// on incrémente l'index
    }
    // on libère le résultat
    mysql_free_result($result);
    mysql_close(); // Déconnexion de MySQL
    ?>
    </table>
    <input type="submit" name="valid_modif" value="Enregistrer les modifications" >
    </form>

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Je ne suis pas sur du tout, j'ai pas le temps de tester
    mais lorsque tu récupères la valeur de ton input: essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $journees = $_POST['journee']; //on récupère le tableau de journées
    foreach($journees as $journee){  //pour chaque ligne de ce tableau
      var_dump($journee); // on affiche la valeur (juste pour debuguer)
    }

  3. #3
    Membre à l'essai
    Homme Profil pro
    Petit Webmaster Amateur
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Petit Webmaster Amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci pour la réponse gototog

    Je vais tester cela dès que possible.

    Je dois faire ça pour chaque valeur je suppose ?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    si ca fonctionne, on peut penser a la mise en place pour chaque valeur. dans ce cas la, ce serait une boucle qui pourrait se présenter comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $nombre_de_journees= count($_POST['journee']);
    $journees = $_POST['journee']; //on récupère le tableau de journées
    $scores_locaux= $_POST['score_locaux'];
    //etc 
     
    for($i =0; $i< $nombre_de_journees; $i++){  //pour chaque journée
       $la_journee= $journees [$i];
       $le_score= $scores_locaux[$i];
       //traitements des autres variables [...]
      //traitement métier [enregistrement etc...]
    }

  5. #5
    Membre à l'essai
    Homme Profil pro
    Petit Webmaster Amateur
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Petit Webmaster Amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Ca se complique là ...

    Il faut donc créer 3 variables pour chaque valeur ?

    Ta 3ème ligne ce ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $scores_locaux= count($_POST['score_locaux']);
    Sinon je ne comprends pas trop le cheminement ..

    Edit: non c'est bon je viens de comprendre, c'est juste pour la boucle: le comptage ne se fait qu'une fois, sur la première valeur, c'est inutile sur les autres

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    pardon de ne pas avoir expliqué d'avantage. Le count ne sert qu'une fois, en comptant le nombre de journée, on sait combien de ligne on a remplit non? ca ne sert donc qu'une fois, pour savoir combien de fois on rentre dans la boucle. Il me semble que s'il y'a 14 journées, il y'aura 14 score et 14 rencontres etc...

    Je peux me tromper, je ne connais pas du tout le contexte fonctionnel de ton code

  7. #7
    Membre à l'essai
    Homme Profil pro
    Petit Webmaster Amateur
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Petit Webmaster Amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Ok ok, j'ai compris juste après avoir posté, d'où mon édit

    Oui c'est cela, il y a forcement autant de lignes dans la table qu'il y a de journées. Je vais essayer de tester ta méthode dès que j'aurais un petit moment.

    En attendant merci à toi pour ces explications

  8. #8
    Membre à l'essai
    Homme Profil pro
    Petit Webmaster Amateur
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Petit Webmaster Amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Désolé pour cette longue absence mais j'avais d'autres priorités ces temps ci.

    D'après le cheminement de gototog j'arriverais à ça dans un premier temps :
    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
     
    <php
     
    $id_conni = mysqli_connect (...) // connexion à la base de données
     
    $nombre_de_journees= count($_POST['journee']);
    $journees= $_POST['journee']; //on récupère le tableau de journées
    $scores_locaux= $_POST['score_locaux'];
    $rencontres= $_POST['rencontre'];
    $scores_visiteurs= $_POST['score_visiteur'];
    $terrains= $_POST['terrain'];
    $dates= $_POST['date'];
    $heures= $_POST['heure'];
     
     
    for($i=0; $i< $nombre_de_journees; $i++)     //pour chaque journée
     {
       $la_journee= $journees[$i];
       $le_score_locaux= $scores_locaux[$i];
       $la_rencontre= $rencontres[$i];
       $le_score_visiteurs= $scores_visiteurs[$i];
       $le_terrain= $terrains[$i];
       $la_date= $dates[$i];
       $l_heure= $heures[$i];
     }
     
    ?>
    Est ce un bon début ?

    Pour l'enregistrement de chaque ligne dans la table que me conseillez vous ? Un Update ?

Discussions similaires

  1. tableau dynamique php
    Par totot dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/01/2014, 18h52
  2. Tableau Dynamique Php
    Par vass75 dans le forum Langage
    Réponses: 11
    Dernier message: 07/02/2013, 15h41
  3. [MySQL] Enregistrements simultanné des données d'un tableau dynamique PHP
    Par abablex dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 02/05/2012, 19h02
  4. [Joomla!] Tableau dynamique (php)
    Par bugs_budy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 19/03/2008, 21h00
  5. [SQL] Recupération Requete SQL dans un tableau dynamique PHP
    Par victor.jbju dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/09/2006, 16h48

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