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 :

Formulaire et fichier XML


Sujet :

Langage PHP

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Par défaut Formulaire et fichier XML
    Bonjour tout le monde,

    Je débute en php et j'essaye de créer un site internet qui nécessite une récupération de données d'un fichier XML.

    J'ai fait un formulaire qui permet à l'utilisateur d'entrer sa recherche, et j'aimerai que celle-ci soit comparée aux valeurs présentes dans le fichier et qu'il s'affiche toutes les solutions, mais je bloque un peu, je sais qu'il faudrait surement utiliser la fonction "strstr" mais je l'ai pas très bien comprise.. Quelqu'un pourrait m'aider ? Merci :-)

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Si tu as écrit du code poste le.

  3. #3
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Bonjour,

    une petit code vite fait pour comprendre les principes :

    Code XML : 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
     
    <?xml version='1.0' standalone='yes'?>
    <top>
      <balMere>
      	<balFille>test</balFille>
      	<balFille>test1</balFille>
      	<balFille>test2</balFille>
      	<balFille>test3</balFille>
      	<balFille>test4</balFille>
      	<balFille>5test</balFille>
      	<balFille>6test</balFille>
      	<balFille>7test</balFille>
      	<balFille>8test</balFille>
      	<balFille>9test9</balFille>
      	<balFille>10test10</balFille>
      	<balFille>toto</balFille>
      	<balFille>toto1</balFille>
      	<balFille>titi</balFille>
      	<balFille>titi1</balFille>
      </balMere>
    </top>


    Code PHP : 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
     
    <?php
    function rechXml($fname, $val="") {
     
    	$toReturn = array();
     
    	if(file_exists($fname) && !empty($val)) {
     
    		// chargement du fichier xml	
    		$xml = simplexml_load_file($fname);
     
    		// definition de l'attribut iterable
    		$toParse = $xml->balMere->balFille;
     
    		// iteration
    		foreach($toParse as $key => $item) {
     
    			// recuperation de la valeur xml
    			$valXml = strval($item);
     
    			// test
    			if(strstr($valXml, $val)) $toReturn[] = $valXml;
     
    		}
    	}
     
    	return $toReturn;
     
    }
     
     
    // initialisation variables
    $rech = isset($_POST['rech'])?($_POST['rech']):("");
     
     
    // appel a la fonction de recherche
    $resultats = rechXml("test.xml", $rech);
     
    // resultats
    if(count($resultats)) echo "<pre>".print_r($resultats, true)."</pre>";
    else echo "<h5>pas de résultat</h5>";
     
    ?>
     
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    	<input type="text" name="rech" value="<?php echo $rech; ?>" />
    	<input type="submit" name="sub" value="rechercher" />
    </form>
    évidemment, il faut comprendre/adapter/améliorer

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Par défaut
    le fichier xml est du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <item><numero> 0606060606 </numero> <nom> Machin </nom> <prenom> JP </prenom> </item>
    Avec d'autres info comme l'adresse etc et chaque item correspond à un contact.

    Mon code html/php c'est :

    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
      <section class="accueil">
     
                    <?php
                    $fichier = '../document/contact.xml';
                    $xml = simplexml_load_file($fichier);
     
                    foreach($xml as $contact){
     
                        $tableau= array(
                          "numero" => $contact->numero,
                          "nom" =>$contact->nom,
                          "prenom"=>$contact->prenom,
     
                          );
     
     
                      }
     
                      function recherche(){
                        ?>
                        <form method="post" action="contact.php">
                              <input type="text" name="recherche" />.
                              <input type="submit" value="Valider" />
                              </form>
     
     
                  <?php    }
     
     
                            recherche();
                            ?>
     
     
                  </section>
    Et du coup j'aimerai faire une recherche par critère, c'est à dire que si l'utilisateur recherche le contact grâce à son nom (par exemple) que toutes les informations de ce contact s'affichent.

  5. #5
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Tu peux essayer comme ça.

    Code php : 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
     
    <!DOCTYPE html>
    <html>
    <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script language="JavaScript" type="text/javascript">
    <!--
    function recherche() {
     $.ajax({
          url  : 'test9220b.php',
          type : 'POST',
          data : 'recherche=' + document.getElementById("rech").value, 
       dataType : 'json',
       success:function(data){
      document.getElementById('resultat').innerHTML = '';
      var codeHTML = '<table><tr align="center"><td>N°</td><td>Nom</td><td>Prénom</td></tr>';
      for(var i=0;i<data.length;i++) {
       //var un = data[i];
       //alert(un);
       var unElement = '<tr align="center"><td>'+data[i].numero+'</td><td>'+data[i].nom+'</td><td>'+data[i].prenom+'</td></tr>';
       codeHTML = codeHTML+unElement;
      }
      codeHTML = codeHTML+'</table>';
      document.getElementById('resultat').innerHTML = codeHTML;
          },
       error:function(message){
            alert( "Erreur: " + message );
          }
        });
    }
    //-->
    </script>
    </head>
    <body>
        Recherche : <input type="text" name="recherche" id="rech" />
        <input type="button" value="Valider" onclick="recherche()"/>
     <div id="resultat">
     
     </div>
    </body>
    </html>

    'test9220b.php'
    Code php : 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
     
    <?php
    header('Content-type: application/json');
    $recherche = $_POST['recherche'];
    $fichier   = 'contacts.xml';
    $xml       = simplexml_load_file($fichier);
    $resultat  = array();
    foreach($xml as $contact){
        $numero = trim($contact->numero);
        $nom    = trim($contact->nom);
        $prenom = trim($contact->prenom);
     if ($numero == $recherche || $nom == $recherche || $prenom == $recherche) {
      $resultat[] = array("numero"=>$numero,"nom"=>$nom,"prenom"=>$prenom);
     }
    }
    print json_encode($resultat);


    'contacts.xml'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <items>
     <item><numero> 0606060606 </numero> <nom> Machine </nom> <prenom> JP </prenom> </item>
     <item><numero> 1234567890 </numero> <nom> Machinal </nom> <prenom> JF </prenom> </item>
     <item><numero> 4512012558 </numero> <nom> Machin </nom> <prenom> JP </prenom> </item>
     <item><numero> 7811518185 </numero> <nom> Machiniste </nom> <prenom> ME </prenom> </item>
     <item><numero> 1594844184 </numero> <nom> Machination </nom> <prenom> CH </prenom> </item>
     <item><numero> 5621541515 </numero> <nom> Machin </nom> <prenom> JF </prenom> </item>
    </items>

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Par défaut
    Citation Envoyé par badaze Voir le message
    Tu peux essayer comme ça.

    Code php : 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
     
    <!DOCTYPE html>
    <html>
    <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script language="JavaScript" type="text/javascript">
    <!--
    function recherche() {
     $.ajax({
          url  : 'test9220b.php',
          type : 'POST',
          data : 'recherche=' + document.getElementById("rech").value, 
       dataType : 'json',
       success:function(data){
      document.getElementById('resultat').innerHTML = '';
      var codeHTML = '<table><tr align="center"><td>N°</td><td>Nom</td><td>Prénom</td></tr>';
      for(var i=0;i<data.length;i++) {
       //var un = data[i];
       //alert(un);
       var unElement = '<tr align="center"><td>'+data[i].numero+'</td><td>'+data[i].nom+'</td><td>'+data[i].prenom+'</td></tr>';
       codeHTML = codeHTML+unElement;
      }
      codeHTML = codeHTML+'</table>';
      document.getElementById('resultat').innerHTML = codeHTML;
          },
       error:function(message){
            alert( "Erreur: " + message );
          }
        });
    }
    //-->
    </script>
    </head>
    <body>
        Recherche : <input type="text" name="recherche" id="rech" />
        <input type="button" value="Valider" onclick="recherche()"/>
     <div id="resultat">
     
     </div>
    </body>
    </html>
    Merci pour ta réponse, mais je ne connais pas du tout le JavaScript, j'aurais préféré ne pas l'utiliser si possible.. Y aurait-il une autre solution selon toi ?

  7. #7
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Si tu veux avoir le résultat sans recharger la page non.

  8. #8
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Si ça ne te dérange pas de la recharger tu peux faire comme ça.

    test9221.php
    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
     
    <?php
    $recherche = "";
    $codeHTML  = "";
    if (isset($_POST['recherche'])) {
     $recherche = $_POST['recherche'];
     
     $fichier   = 'contacts.xml';
     $xml       = simplexml_load_file($fichier);
     $trouve    = false;
     $codeHTML  = '<table><tr align="center"><td>N°</td><td>Nom</td><td>Prénom</td></tr>';
     foreach($xml as $contact){
      $numero = trim($contact->numero);
      $nom    = trim($contact->nom);
      $prenom = trim($contact->prenom);
      if ($numero == $recherche || $nom == $recherche || $prenom == $recherche) {
     
       $unElement = '<tr align="center"><td>'.$numero.'</td><td>'.$nom.'</td><td>'.$prenom.'</td></tr>';
       $codeHTML  = $codeHTML.$unElement;
       $trouve    = true;
      }
     }
     if (! $trouve) {
      $codeHTML  = "Rien trouvé !!!";
     } else {
      $codeHTML  .= "</table>";
     }
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    </head>
    <body>
    <form method="post" action="test9221.php">
          Recherche : <input type="text" name="recherche" value="<?php print $recherche; ?>"/>
          <input type="submit" value="Valider" />
    </form> 
     <div id="resultat">
      <?php print $codeHTML;?>
     </div>
    </body>
    </html>

  9. #9
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Salut !

    tu peux essayer ceci :

    Code XML : 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
    51
    52
    53
    54
     
    <?xml version="1.0" encoding="UTF-8"?>
    <contacts>
    	<item>
    		<numero>0606060606</numero> 
    		<nom>Machin</nom> 
    		<prenom>JP</prenom> 
    	</item>
    	<item>
    		<numero>0606060607</numero> 
    		<nom>Do</nom> 
    		<prenom>John</prenom> 
    	</item>
    	<item>
    		<numero>0606060608</numero> 
    		<nom>Truc</nom> 
    		<prenom>Fred</prenom> 
    	</item>
    	<item>
    		<numero>0606060609</numero> 
    		<nom>Joncté</nom> 
    		<prenom>Teddy</prenom> 
    	</item>
    	<item>
    		<numero>0606060610</numero> 
    		<nom>Coussi</nom> 
    		<prenom>Marc</prenom> 
    	</item>
    	<item>
    		<numero>0606060611</numero> 
    		<nom>Devos</nom> 
    		<prenom>Marc</prenom> 
    	</item>
    	<item>
    		<numero>0606060612</numero> 
    		<nom>Do</nom> 
    		<prenom>Jeannine</prenom> 
    	</item>
    	<item>
    		<numero>0606060613</numero> 
    		<nom>Boufducode</nom> 
    		<prenom>Jean</prenom> 
    	</item>
    	<item>
    		<numero>0606060614</numero> 
    		<nom>Nemar</nom> 
    		<prenom>Jean</prenom> 
    	</item>
    	<item>
    		<numero>0606060615</numero> 
    		<nom>Acoudre</nom> 
    		<prenom>Phil</prenom> 
    	</item>
    </contacts>

    Code PHP : 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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?php
     
    	$tableau = array();
    	$fichier = 'test.xml';
     
    	// initialisation variable requete
    	$recherche = (isset($_POST['recherche']))?($_POST['recherche']):("");
    	$filtre = (isset($_POST['filtre']))?($_POST['filtre']):(1);
     
    	// si fichier et recherche existe
       	if(file_exists($fichier) && !empty($recherche)) {
     
       		// chargement xml
       		$xml = simplexml_load_file($fichier);
       		$toParse = $xml->item;
     
       		// iteration sur les donnees
       		foreach($toParse as $contact) {
     
       			$done = false;
       			$nom = 		strval($contact->nom);
       			$prenom =	strval($contact->prenom);
       			$numero = 	strval($contact->numero);
     
       			// filtre
       			switch($filtre) {
       				case 2:
       					if(strstr(strtolower($prenom), strtolower($recherche))) $done = true; break;
       				case 3:
       					if(strstr(strtolower($numero), strtolower($recherche))) $done = true; break;
       				default:
       					if(strstr(strtolower($nom), strtolower($recherche))) $done = true; break;
       			}
     
       			// si resultat on ajoute au tableau
       			if($done) {
       				$tableau[] = array(
       					"numero" => $numero,
       					"nom" => $nom,
       					"prenom" => $prenom	
       				);
       			}
       		}
     
     
     
       	}
     
     
       	// affichage résultats
    	if(count($tableau)) {
    		echo "<h5>Résultats</h5><pre>".print_r($tableau, true)."</pre><hr/>";
    	}
     
    ?>	
    	<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    		<select name="filtre">
    			<option value="1"<?php if($filtre == 1) echo " selected=\"selected\""?>>par nom</option>
    			<option value="2"<?php if($filtre == 2) echo " selected=\"selected\""?>>par prénom</option>
    			<option value="3"<?php if($filtre == 3) echo " selected=\"selected\""?>>par numéro</option>
    		</select>
        	<input type="text" name="recherche" value="<?php echo $recherche; ?>"/>
            <input type="submit" name="sub" value="Valider" />
        </form>

    bon WE

  10. #10
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Par défaut
    Mercii beaucoup pour vos réponses, je vais essayer vos propositions, celle de ska_root se rapproche plus de ce que je voulais faire, mais je ne savais comment xD
    En tout cas, merci à vous deux :-)

  11. #11
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Par défaut
    J'ai bien réutilisé ton code (ska_root) avec quelques modifications et ajouts, et ca fonctionne comme il se doit, merci beaucoup !
    J'ai encore une ou deux questions, j'aimerai compter (et afficher) le nombre de contact féminin et masculin (le sexe est dans le fichier xml sous balise, de la meme forme que le reste), est-ce qu'il est juste de seulement ajouter une variable (lors du parcours du tableau) qui sera indentée à chaque fois que '$sexe="feminin"' et du coup faire de même pour les hommes ?

    Et enfin, j'aimerai aussi faire une sorte de "Top Recherche" qui m'afficherai un certain nombre de contacts les plus recherchés, dois-je utiliser les cookies ou je peux faire autrement ? Parce que sincèrement, les cookies en soit je sais ce que s'est, mais leur utilisation est un peu complexe pour moi..

  12. #12
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    pour compter les genres, c'est exactement ce qu'il faut faire.

    quant aux recherches fréquentes, l'idéal serait d'utiliser une base de données, mais tu peux également le gérer avec un fichier texte dans lequel tu stockerais les données recherche/nombre.
    Si tu veux que ces données soient affichées à tous les utilisateurs, les cookies ne te seront d'aucune utilité car ils sont stockés sur le poste client...
    Si tu veux mémoriser ces informations que pour l'utilisateur, dans ce cas, la gestion des cookies (qui sont aussi des fichiers texte au final) semble indiquée.

    En terme de difficulté, gérer la persistance sur un fichier ou sur un cookie, c'est kif-kif, la doc php est claire et y'a même des exemples...

  13. #13
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Par défaut
    Citation Envoyé par ska_root Voir le message
    quant aux recherches fréquentes, l'idéal serait d'utiliser une base de données, mais tu peux également le gérer avec un fichier texte dans lequel tu stockerais les données recherche/nombre.
    Si tu veux que ces données soient affichées à tous les utilisateurs, les cookies ne te seront d'aucune utilité car ils sont stockés sur le poste client...
    Si tu veux mémoriser ces informations que pour l'utilisateur, dans ce cas, la gestion des cookies (qui sont aussi des fichiers texte au final) semble indiquée.

    En terme de difficulté, gérer la persistance sur un fichier ou sur un cookie, c'est kif-kif, la doc php est claire et y'a même des exemples...
    Okay super, je vais me documenter dessus alors, j'avais aussi pensé à stocker dans un fichier mais je m'étais dis qu'il y avait sûrement plus simple, mais au final je pense que c'est le plus approprié !

    Ahh et j'avais aussi pensé à un truc, pour les recherches en général, j'aimerai qu'au lieu d'afficher le détail de tous les contacts correspondant à la recherche j'aimerai afficher seulement le nom qui serait un lien vers la fiche du contact qui elle détiendrai le reste, mais je vois pas du comment je pourrais faire ca..

  14. #14
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    en admettant que l'attribut "numero" de ton fichier xml soit unique, et que ta page s'appelle détail.php :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // affichage résultats
    	echo '<h5>Résultats</h5><table border="1">';
    	foreach ($tableau as $value) {
    		echo '<tr><td style="background-color:#CCC;">';
                      écho '<a href="detail.php?numero='.$value["numero"].'">'.$value["nom"].' '.$value["prenom"].'</a>';
                    echo '</td></tr>';
    	}
    	echo '</table>';

    dans la page détail.php, il suffit alors de récupérer le paramètre http "numéro", de le rechercher dans le fichier xml et d'en afficher le tuple correspondant.

  15. #15
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Par défaut
    C'est justement ce que j'ai fait, le numéro est bien apparent dans l'url, j'arrive à le récupérer dans la nouvelle page, mais pas moyen d'afficher une autre "case" du tableau et pourtant j'ai bien reparcouru le tableau

    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
     
                        $_GET["num"];
                        echo $_GET["num"];
     
     
                            $fichier = '../document/contact.xml';
                            $xml = simplexml_load_file($fichier);
                            $toParse = $xml->contact;
     
                          if(file_exists($fichier) && !empty($recherche)){
                            foreach($xml as $item){
     
                                $tableau = array(
                                  "numero" => $item->numero,
                                  "nom" =>$item->nom,
                                  "adresse" => $item->adresse,
                                  "telephone"=>$item->telephone,
     
                                  );
     
                        if(strstr(strtolower($tableau["numero"]),strtolower($_GET["num"]))) {
     
                               echo $tableau["adresse"];
                                }
                        }
                      }
     
     
     
                     ?>

  16. #16
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Je viens de tester et ça fonctionne si $recherche est renseignée.

    Si chez toi ça ne fonctionne pas bien que $recherche soit renseigné, c'est sûrement parce que tu n'as pas "adresse" dans ton fichier xml.

  17. #17
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Par défaut
    Citation Envoyé par badaze Voir le message
    Je viens de tester et ça fonctionne si $recherche est renseignée.

    Si chez toi ça ne fonctionne pas bien que $recherche soit renseigné, c'est sûrement parce que tu n'as pas "adresse" dans ton fichier xml.
    Olalalalala quelle erreur ! Elle était sûrement dûe à la fatigue Merci !
    Comme j'avais repris le parcours de tableau de la fonction recherche, j'ai juste omis de remplacer le "$recherche" par "$_GET["num"] Tout simplement ! Merci encore

  18. #18
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 52
    Par défaut
    Heyy, c'est encore moi

    J'aimerai faire un graphe du nombre de contact par département par exemple, (il est bien sûr renseigner dans le fichier xml) je pensais faire un tableau qui contiendrai toutes les villes dedans, mais je sais si le simple fait de parcourir le fichier et d'insérer dans chaque "case" le nom contenu dans la balise "département" est correct, puisque le tableau contiendra plusieurs fois les mêmes départements.. Je sais pas si je suis claire, mais en gros si le contact 1 vient du 95, le 2ème du 92 et le 3ème de nouveau du 95, "tableau_dep[0]" contiendra uniquement le premier 95 alors que le 3 sera dans tableau_dep[2].. non ? J'aimerai que ca incrémente directement tableau_dep[0] à chaque fois que le département est 95 par exemple..
    La seule manière que je pense utiliser est de faire une boucle for qui irait de 1 à 95 (les numéros de département) puis d'imbriquer une boucle if qui incrémenterai le tableau à chaque fois qu'il tomberait sur une certaine valeur de département.. Mais je pense qu'il y a une manière plus "propre" de faire, non ?

Discussions similaires

  1. Validation formulaire via fichier XML
    Par VinceCBA dans le forum Struts 2
    Réponses: 4
    Dernier message: 12/10/2011, 14h53
  2. Réponses: 5
    Dernier message: 03/07/2009, 12h55
  3. [PHP 5.2] Formulaire générant fichier xml
    Par knebhi dans le forum Langage
    Réponses: 0
    Dernier message: 23/03/2009, 16h35
  4. Formulaire PDF --> Fichier XML
    Par orke22 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/04/2008, 12h19
  5. intégrer un fichier XML dans un formulaire access
    Par lilibrik dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 17/06/2005, 12h49

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