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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 ?

Discussions similaires

  1. Validation formulaire via fichier XML
    Par VinceCBA dans le forum Struts 2
    Réponses: 4
    Dernier message: 12/10/2011, 13h53
  2. Réponses: 5
    Dernier message: 03/07/2009, 11h55
  3. [PHP 5.2] Formulaire générant fichier xml
    Par knebhi dans le forum Langage
    Réponses: 0
    Dernier message: 23/03/2009, 15h35
  4. Formulaire PDF --> Fichier XML
    Par orke22 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/04/2008, 11h19
  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, 11h49

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