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 :

Empecher de creer des doublons dans un fichier


Sujet :

Langage PHP

  1. #41
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['MesArmees'][] = $armee;
    on ajoute un élément de valeur $armee à l'array $_SESSION['MesArmees'].
    [] : l'indexation est alors automatique.

    C'est équivalent (mais préférable ici) à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_push($_SESSION['MesArmees'], $armee);
    voir:

  2. #42
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 245
    Points : 52
    Points
    52
    Par défaut
    Merci Jreaux.

    J'ai essayé de le faire pour les fichiers, ca n'empeche pas de l'ecrire sur le fichier, malgres les doublon,
    j'ai cherché depuis longtemps pour avoir un code avec l'array qui contiendrait les données du joueur, mais n'ayant jamais vu ce genre de code, pas moyen, de faire mieux pour le moment, j'espere qu'avec vos conseils j'y parviendrais:


    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
    ?php
     //On verifie s'il y a des doublons dans le fichier
    if(isset($_POST['armeesdiv']))
     {
    //On recupere la liste d'armée et ses valeurs
    foreach($_POST['armeesdiv'] as $valeur)  // On recupere toutes les cases armees, et toutes les cle dans $valeur grace a foreach
    {
    $recup4 = $valeur;
     
      $armeesdoublon = fopen("nomdoublonside2.txt", "r");//On lit dans le fichier avec r
     if($armeesdoublon){
     //On boucle pour lire toutes les lignes
    while(($buffer = fgets($armeesdoublon, 4096)) !==false){
     
     echo $buffer;
     }
    if (!feof($armeesdoublon)){//On lit jusqu' a la fin
     
    echo "Erreur: fgets a echoué\n";
     }
      if($recup4 != $buffer);
     
    	$ecriture = fopen("nomdoublonside2.txt", "a");//On ecrit dans le fichier avec le mode a
    fputs($ecriture, "\r\n");
    fputs($ecriture, $recup3);
     
    fclose($ecriture);
     
     if($recup4 == $buffer);
    	{
    	echo 'Vous avez des doublons';
    	}
     
      fclose($armeesdoublon);
     }
     }
     }
     
    ?>

  3. #43
    Invité
    Invité(e)
    Par défaut
    Je te parle de $_SESSION['MesArmees'], et toi, tu continues à vouloir comparer avec ton fichier !!

    Va prendre l'air ! Tu en as besoin !

  4. #44
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 245
    Points : 52
    Points
    52
    Par défaut
    Bonjour Jreaux,

    Voila le code que jai fait:

    rectifié...

    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
    <?php
    if(isset($_POST['armeesdiv']) && !empty($_POST['armeesdiv'])){//On verifie si c'est initialisé et vide 
    {
     
    //Initialisation en début de tour :
     $_SESSION['Mesarmees'] = array();
     
    //à chaque armée sélectionnée, on vérifie si elle est déjà dans l'array. Sinon, on l'ajoute 
    $armeediv = $_POST['armeediv'];
    if( !in_array($armeediv, $_SESSION['Mesarmees']) )
    {
       // on l'ajoute
       $_SESSION['Mesarmees'][] = $armeediv;
    } else {
      echo 'cette armée est déjà en action pour ce tour de jeu!';
    } 
     
    //enregistrer dans un fichier ou en BdD les armées sélectionnées pour le tour de jeu.
    foreach($_SESSION['Mesarmees'] as $armee)
    {
    $recup = $armee;
     
    $fp = fopen("nomdoublonside2.txt","a"); // si le fichier n'existe pas on le crée avec le mode de lecture a, et on l'ouvre, ici on cree un nouveau fichier du nom de rapport.txt a l'aide du mode a
     fputs($fp, "\r\n"); //On ecris dans le fichier crée avec retour a la ligne
     fputs($fp, "$recup"); //On ecris dans les deux fichiers
     
    fclose($fp); //On ferme le fichier
    }
     }
     }
    ?>
    Mais j'ai des erreurs:
    Warning: htmlspecialchars() expects parameter 1 to be string, array given in C:\wamp\www\code_pour_campagne_essais\stylepositionside2armeenumero.php on line 4

    Notice: Undefined index: armeediv in C:\wamp\www\code_pour_campagne_essais\stylepositionside2armeenumero.php on line 10

    Notice: Undefined index: MesArmees in C:\wamp\www\code_pour_campagne_essais\stylepositionside2armeenumero.php on line 20

    Warning: Invalid argument supplied for foreach() in C:\wamp\www\code_pour_campagne_essais\stylepositionside2armeenumero.php on line 20

  5. #45
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['armeesdiv'] = htmlspecialchars($_POST['armeesdiv']);
    $_POST['armeesdiv'] est un array. On ne peut pas lui appliqué de cette manière htmlspecialchars().
    Il faut utiliser array_map().

    Pour les autres erreurs, fais attention aux majuscules !

  6. #46
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 245
    Points : 52
    Points
    52
    Par défaut
    J'ai rectifié, merci Jreaux.

    Mais maintenant j'ai cela:

    Notice: Undefined index: armeediv in C:\wamp\www\code_pour_campagne_essais\stylepositionside2armeenumero.php on line 9

    D'apres ce que j'ai lu, ce serait un probleme avec isset, mais je ne vois pas ou se ce probleme, dans mon code, puisque j'ai deja utilisé isset pour la premiere ligne,
    or ici c'est la 9 e ligne:

    $armeediv = $_POST['armeediv'];

  7. #47
    Invité
    Invité(e)
    Par défaut
    Hello,
    il va falloir apprendre à lire et comprendre les messages d'erreur !... et être plus attentif et rigoureux !
    "undefined index : ..."

    "l'index n'est pas défini"
    Or, c'est :

  8. #48
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 245
    Points : 52
    Points
    52
    Par défaut
    Merci Jreaux,
    en fait j'aurais besoin aussi de lunette.

    Plus d'erreur, mais dans le fichier qui reçoit l'ecriture, j'ai :

    Array
    Array
    Array
    Array
    Array

    a la place du nom voulu.

    Et je peux envoyer plusieurs fois la meme armées par formulaire, sans que les doublon soit empeché.

  9. #49
    Invité
    Invité(e)
    Par défaut
    1/ Montre le résultat de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_POST['armeesdiv']);
    2/ Montre la dernière version de ton code !

  10. #50
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 245
    Points : 52
    Points
    52
    Par défaut
    Le code sans var_dump:

    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
    <?php
    if(isset($_POST['armeesdiv']) && !empty($_POST['armeesdiv'])){//On verifie si c'est initialisé et vide 
    {
     
    //Initialisation en début de tour :
     $_SESSION['Mesarmees'] = array();
     
    //à chaque armée sélectionnée, on vérifie si elle est déjà dans l'array. Sinon, on l'ajoute 
    $armeediv = $_POST['armeesdiv'];
    if( !in_array($armeediv, $_SESSION['Mesarmees']) )//On utilise la fonction in array pour voir ce qu'il y a dans le tableau
    {
       // on l'ajoute
       $_SESSION['Mesarmees'][] = $armeediv;
    } else {
      echo 'cette armée est déjà en action pour ce tour de jeu!';
    } 
     
    //enregistrer dans un fichier ou en BdD les armées sélectionnées pour le tour de jeu.
    foreach($_SESSION['Mesarmees'] as $armee)
    {
    $recup = $armee;//On recupere le resultat dans la variable $recup
     
    $fp = fopen("nomdoublonside2.txt","a"); // si le fichier n'existe pas on le crée avec le mode de lecture a, et on l'ouvre, ici on cree un nouveau fichier du nom de rapport.txt a l'aide du mode a
     fputs($fp, "\r\n"); //On ecris dans le fichier crée avec retour a la ligne
     fputs($fp, "$recup"); //On ecris dans les deux fichiers
     
    fclose($fp); //On ferme le fichier
    }
     }
    }
     
    ?>

  11. #51
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 245
    Points : 52
    Points
    52
    Par défaut
    [QUOTE=jreaux62;8209543]1/ Montre le résultat de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_POST['armeesdiv']);

    A quelle ligne dois je le mettre ?

    sinon apres essais j'ai fait ça :

    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
    <?php
    if(isset($_POST['armeesdiv']) && !empty($_POST['armeesdiv'])){//On verifie si c'est initialisé et vide 
    {
     
    //Initialisation en début de tour :
     $_SESSION['Mesarmees'] = array();
     
    //à chaque armée sélectionnée, on vérifie si elle est déjà dans l'array. Sinon, on l'ajoute 
    $armeediv = $_POST['armeesdiv'];
    if( !in_array($armeediv, $_SESSION['Mesarmees']) )//On utilise la fonction in array pour voir ce qu'il y a dans le tableau
    {
       // on l'ajoute
       $_SESSION['Mesarmees'][] = $armeediv;
    } else {
      echo 'cette armée est déjà en action pour ce tour de jeu!';
    } 
     
    //enregistrer dans un fichier ou en BdD les armées sélectionnées pour le tour de jeu.
    foreach($_SESSION['Mesarmees'] as $armee)
    {
    var_dump($_POST['armeesdiv']);
    }
     }
    }
     
    ?>
    Et ca m'a donné ceci:
    array (size=1)
    0 => string 'All' (length=3)

  12. #52
    Invité
    Invité(e)
    Par défaut
    J'ai bien envie de te répondre... LOL !!

    Peu importe ! C'est pour afficher le contenu de la variable reçue !

  13. #53
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 245
    Points : 52
    Points
    52
    Par défaut
    Quand j'en connaitrais suffisamment, je pourrais faire pareil.

  14. #54
    Invité
    Invité(e)
    Par défaut
    Que diable fait-il dans un foreach ??

    Et d'où vient-il, au fait ?

    A quoi ressemble ton formulaire pour sélectionner les armées ?


    N.B. Prétendre programmer un jeu, et en savoir aussi peu sur la programmation... (echo et var_dump font partie du débogage de base !)
    ...il y a encore BEAUCOUP de boulot PERSO à faire !

    Je ne peux que te conseiller de lire des tutos, et te perfectionner.

    Ne le prend pas mal : on a tous débuté un jour.

  15. #55
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 245
    Points : 52
    Points
    52
    Par défaut
    Alors, mon formulaire:
    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
    35
    36
    37
     <form action="stylepositionside1armeenumero.php" method="post"> 
                    <p align="center"><select size="1" name="armeesdiv"><!--Si ajout de [ ] a armeesdiv cela donne array dans la bdd--->
              <option selected="selected">All</option>
    		  <option value="#div1"> 1-----Napoleon</option>
             		  <option value="#div2">2-----Ney </option>      
          		  <option value="#div3">3-----Oudinot</option>
             		  <option value="#div4">4-----Murat</option>     <!--Value peut etre nommé autrement que pour la partie visible, et est placé dans le $_POST pour servir de #div numeroté dans le fichier css--->   
    		  <option value="#div5"> 5-----Ie Corps - Vandamme</option>
             		  <option value="#div6">6-----IIe Corps - Victor</option>      
          		  <option value="#div7"> 7-----IIIe Corps - Souham</option>
             		  <option value="#div8">8-----IVe Corps - Bertrand</option>     
    		  <option value="#div9">9-----Ve Corps - Lauriston</option>
             		  <option value="#div10">10-----VIe Corps - Marmont</option>      
          		  <option value="#div11">11-----VIIe Corps - Reynier</option>
             		  <option value="#div12"> 12-----VIIIe Corps - Poniatowski</option>        
    		  <option value="#div13">13-----IXe Corps - Augereau</option>
             		  <option value="#div14">14-----XIe Corps - macdonald</option>      
          		  <option value="#div15">15-----XIIe Corps - Lobau</option>
             		  <option value="#div16">16-----XIIIe Corps - Davout</option>
    		  <option value="#div17"> 17-----XIVe Corps - Gouvion St-Cyr</option>
             		  <option value="#div18">18-----2e Div VG - Curial</option>      
          		  <option value="#div19">19-----10e Div - Girard</option>
             		  <option value="#div27"> 27-----Cav. Garde - Nansouty</option>        
    		  <option value="#div28"> 28-----I CC - Lt Maubourg</option>
             		  <option value="#div29">29-----II CC - Sebastiani</option>      
          		  <option value="#div30"> 30-----III CC - Arrighi</option>
             		  <option value="#div31">31-----V CC - Pajol</option>     
    		  <option value="#div32">32-----Garde Imp. - Mortier</option>
             		  <option value="#div33"> 33-----37 Div - Hammerstein</option>      
          		  <option value="#div34">34-----Corps observ - Lemoine</option>
            </select></p>
     
    		 <p>
     <input type="submit" value="Valider l'armee" />
     <input type="reset" value="Annuler" />
     </p>
      </form>

    Comme je debute beaucoup dans le php, et que je connais a peine Var_dump,
    J'avais mis le var dump pensant que c'etait sa place, a vrai dire j'ai pas beaucoup reflechi, sachant que j'ai pas mal de chose a apprendre en php.
    Et pour bien te repondre il aurait fallu que je cherche dans la doc et j'aurais mis + de 1/4 d'heure avant de revenir sur le forum...

  16. #56
    Invité
    Invité(e)
    Par défaut
    Peut-être devrais-tu REPENSER à une autre façon de sélectionner les armées durant le tour.

    Peut-être des cases à cocher (une case par armée) ?
    En en limitant le nombre cochable durant le tour (pas très difficile à faire en JavaScript) ?

    De cette manière, aucun risque qu'une armée soit sélectionnée 2 fois !
    + on sélectionne (et visualise) toutes les armées en même temps (et pas une après l'autre).

    Tout est question de CONCEPTION (et ici d'ERGONOMIE = simplicité d'utilisation)


    A vrai dire, il existe un tas de SOLUTIONS SIMPLES à ton problème, mais chacune demande des connaissances variées (ex. AJAX, jQuery)
    Dernière modification par Invité ; 14/04/2015 à 20h10.

  17. #57
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 245
    Points : 52
    Points
    52
    Par défaut
    Je ne connais pas java script, et je suis nouveau dans le monde de la programation .

    Quel type de case, checkbox ?
    j'avais choisie select pour avoir la tranquilité qu'on ne peut pas choisir n'importe quoi, d'une part, et aussi parce c'est mieux visuellement dans le formulaire.

    C'est dommage, de pas pouvoir le faire en php, il y a t'il aucune possibilitée de faire cela en php ?

  18. #58
    Invité
    Invité(e)
    Par défaut
    VOICI UNE SOLUTION AVEC TON SELECT :
    avec une modif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select multiple="multiple" name="armeesdiv[]" >
    Pour limiter les nombre à 5 (par exemple), on peut utiliser jQuery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      $("select").change(function () {
          if($("select option:selected").length > 5) {
              // action : 
             alert('Nombre maxi de 5 armées atteint ! Cliquez sur Valider');
          }
      });
    tu remarqueras que j'ai mis armeesdiv[]

    De fait, tu récupères $_POST['armeesdiv'], qui est un array().

  19. #59
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 245
    Points : 52
    Points
    52
    Par défaut
    Je vais essayer cela,
    grand merci a toi.

  20. #60
    Invité
    Invité(e)
    Par défaut
    Pour bénéficier de la librairie jQuery, il faut mettre dans le <head> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
    N.B. 1.8 est la version.

    Renseigne-toi sur jQuery.
    La syntaxe est plus facile à aborder que le JavaScript pur (même si c'est mieux de connaitre JavaScript !).
    Dernière modification par E.Bzz ; 04/06/2015 à 09h19. Motif: LE

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

Discussions similaires

  1. [Batch] .bat pour éliminer des doublons dans 2 fichiers
    Par Nono Sto dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 04/05/2014, 05h42
  2. Supprimer des doublons dans un fichier
    Par lawrenz23 dans le forum C++
    Réponses: 6
    Dernier message: 27/10/2013, 15h27
  3. Eliminer des doublons dans un fichier
    Par fennec62 dans le forum Général Python
    Réponses: 13
    Dernier message: 11/01/2009, 11h40
  4. Rechercher des doublons dans un fichier de type csv
    Par phoenixatareva dans le forum C++
    Réponses: 6
    Dernier message: 12/08/2008, 20h02
  5. Prbleme de liaison avec des doublons dans le fichier lié.
    Par krak70 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/10/2005, 11h03

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