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 for pour éviter la redondance de code


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
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut Boucle for pour éviter la redondance de code
    Bonjour,
    je suis actuellement en train de créer un site web pour un club de foot qui permettra de créer des équipes des championnat et enregistrer les résultat d' un weekend et bien sur un classement. J'ai un souci au niveau de l'insertion des équipes dans ma base avec une boucle. Quant je récupère les données de mon formulaire pas de problème avec la méthode $_POST mais le problème c'est que j'aimerais que de faire 14 requêtes INSERT INTO je voudrai en faire une avec une variable, je vous mets mes deux script.
    Merci d'avance.

    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
    //MON FORMULAIRE
    <form method="post" action="postEquipe.php">
    <?php
    echo 'Equipe a initialiser dans votre championnat:'.'<br>'.'<br>';
    $query='SELECT nom FROM communes';
    echo form_selectQuery('equipe1',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe2',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe3',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe4',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe5',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe6',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe7',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe8',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe9',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe10',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe11',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe12',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe13',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe14',$query).''.'<br>'.'<br>';
    ?>
    <input type="submit" value="Ok" name="ok"/>
    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
     
    //L'INSERTION DES DONNEES
    <?
    include 'fonction.php';
    include 'connexion.inc.php'; 
    	error_reporting(E_ALL);
     
    		if(isset($_POST['equipe1']))      $equipe1=$_POST['equipe1'];
    		else      $equipe1="";
    		if(isset($_POST['equipe2']))      $equipe2=$_POST['equipe2'];
    		else      $equipe2="";
    		if(isset($_POST['equipe3']))      $equipe3=$_POST['equipe3'];
    		else      $equipe3="";
    		if(isset($_POST['equipe4']))      $equipe4=$_POST['equipe4'];
    		else      $equipe4="";
    		if(isset($_POST['equipe5']))      $equipe5=$_POST['equipe5'];
    		else      $equipe5="";
    		if(isset($_POST['equipe6']))      $equipe6=$_POST['equipe6'];
    		else      $equipe6="";
    		if(isset($_POST['equipe7']))      $equipe7=$_POST['equipe7'];
    		else      $equipe7="";
    		if(isset($_POST['equipe8']))      $equipe8=$_POST['equipe8'];
    		else      $equipe8="";
    		if(isset($_POST['equipe9']))      $equipe9=$_POST['equipe9'];
    		else      $equipe9="";
    		if(isset($_POST['equipe10']))      $equipe10=$_POST['equipe10'];
    		else      $equipe10="";
    		if(isset($_POST['equipe11']))      $equipe11=$_POST['equipe11'];
    		else      $equipe11="";
    		if(isset($_POST['equipe12']))      $equipe12=$_POST['equipe12'];
    		else      $equipe13="";
    		if(isset($_POST['equipe14']))      $equipe14=$_POST['equipe14'];
    		else      $equipe14="";
     
    		$i=0;
    		FOR ($i=1; $i=2; $i++){
     
    		$equipe=$_POST['equipe'] . $i;
     
     
    			$sql = "INSERT INTO classement(Idclassement,Equipe,Victoire,Defaite,Nul,Points) 
    					VALUES('','".$equipe."','','','','')";
    		}
     
    		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

  2. #2
    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
    Par défaut
    Ca serait beaucoup plus simple d'utiliser des table'au :

    En ayant des champs nommés "equipe[xxx]" Cela te permet de faire par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(isset($_POST['equipe'])) {
       foreach  ($_POST['equipe'] as $equipe)  {
     
           $sql = "INSERT INTO classement(Idclassement,Equipe,Victoire,Defaite,Nul,Points) 
    					VALUES('','".mysql_real_escape_string($equipe)."','','','','')";
    }
    }
    En dehors de ca, je ne vois pas l'interet de mentionner des champs dans ton INSERT si tu ne leur donnes pas de valeur dans la requete - on n'oublie pas par contre de protéger ses requetes avec, ici pour mysql, mysql_real_escape_string()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Merci de votre réponse j'ai essayé votre solution mais j'ai des erreurs
    Warning: Invalid argument supplied for foreach() in F:\BTS\ZMWS\_web.zmwsc\Football\postEquipe.php on line 38

    Notice: Undefined variable: sql in F:\BTS\ZMWS\_web.zmwsc\Football\postEquipe.php on line 50

    Notice: Undefined variable: sql in F:\BTS\ZMWS\_web.zmwsc\Football\postEquipe.php on line 50
    Erreur SQL !
    Query was empty
    Merci de me répondre

  4. #4
    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
    Par défaut
    Est-ce qu'on pourrait voir le code ?

    D'apres les erreurs je devine toutefois :
    - le mysql_query($sql) doit evidemment etre executé dans la bouche foreach apres chaque définition de $sql;
    - les champs du formulaire qui s'appellaient autrefois equipe1 doivent s'appeller equipe[1]
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    J'ai plus d'erreur mais maintenant il n'enregistre rien dans mysql. Voici mon code

    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
    // Le formulaire
    echo 'Equipe a initialiser dans votre championnat:'.'<br>'.'<br>';
    $query='SELECT nom FROM communes';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    ?>
     
    et le code d'insertion
    if(isset($_POST['equipe'])) {
    					foreach  ($_POST['equipe'] as $equipe)  {
     
           $sql = "INSERT INTO classement(Idclassement,Equipe,Victoire,Defaite,Nul,Points) 
    					VALUES('','".mysql_real_escape_string($equipe)."','0','0','0','0')";
     
    					mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    }
    }

  6. #6
    Membre éprouvé Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Par défaut
    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
    // Le formulaire
    echo 'Equipe a initialiser dans votre championnat:'.'<br>'.'<br>';
    $query='SELECT nom FROM communes';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    ?>
    J'avoue ne pas comprendre ce que tu essais de faire, toute fois:

    pourrait-on avoir la fonction form_selectQuery() ?

    pourquoi ne pas utiliser une structure itérative pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo form_selectQuery('equipe[]',$query).''.'<br>'.'<br>';
    ce segment de code qui est redondant et qui ne me parait pas bon...

Discussions similaires

  1. boucle for pour trier les doublons
    Par gerald57 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/05/2008, 15h40
  2. Réponses: 1
    Dernier message: 18/02/2008, 19h21
  3. création d'une boucle for pour interrogation requête sql
    Par philder62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/12/2007, 15h14
  4. Réponses: 7
    Dernier message: 10/10/2007, 19h23
  5. Réponses: 2
    Dernier message: 29/08/2006, 13h59

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