Php xml et xslt

stefanie_u2 Messages postés 54 Statut Membre -  
stefanie_u2 Messages postés 54 Statut Membre -
Bonjour,

Besoin d'aide, je réalise un agenda électronique
Les données sont rangées sous format xml de manière à
Pouvoir effectuer les opérations tel que : modification,
Interrogation, recherche....
L'affichage est en xslt et le stockage avec php

Classes

Contact (Nom_Prenom, Sexe, Civilité, Tel)
Agenda (N°rdv, date, heure)

J ai téléchargé le manuel php,
Mais cela n est pas évident comment utiliser le Dom.

Voila une classe.

<?php

$mon_contact= new Contact('','');
$mon_contact->affiche();

class Contact{

private $Nom_Prenom;
private $Sexe;

public function __construct($Nom_Prenom ,$Sexe){
$this->Nom_Prenom = $Nom_Prenom;
$this->Sexe = $Sexe;
}

public function Nom_Prenom(){
return $this->Nom_Prenom ;
}
public function Sexe(){
return $this->Sexe ;
}

function affiche(){
//echo 'Il s\'agit de quelle personne ' ;
//echo $this->Nom_Prenom, '<br>';
//echo 'Le modèle est ', $this->modele, '<br>';
//echo 'Le sexe est ', $this->Sexe, '<br>';

}
}
?>

<?php
$doc = new DOMDocument('1.0', 'iso-8859-1');
$carnet = $doc->createElement( "carnet" );
$personne = $doc->createElement( "personne" );
$personne->setAttribute( "id", "2" );
$personne->setAttribute( "nom", "fogg" );
$personne->setAttribute( "prenom", "phileas" );
$carnet->appendChild( $personne );
$doc->appendChild( $carnet );
$doc->save( "test2.xml" );
?>

merci, au moins la partie enregistrement(stockage) et le reste je pense pouvoir suivre la demarche.

merci encore.

A voir également:

6 réponses

Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Je pense que Gremy87 n'a pas bien saisi l'utilisation de DOM dans ce script.
Ce n'est pas du tout côté client, c'est bel et bien utilisé côté serveur. Le DOM est certes une norme utilisée par les navigateurs pour la représentation des données XHTML reçues, mais c'est avant tout une norme générale à la représentation de tout document XML, dont le XHTML n'est qu'un cas particulier.

Donc, contrairement à ce qu'il te dit, ne t'embête pas avec du javascript.

Voici ce que je te propose :
<?php

class Contact{

  private $Nom_Prenom;
  private $Sexe;

  public function __construct($Nom_Prenom ,$Sexe){
    $this->Nom_Prenom = $Nom_Prenom;
    $this->Sexe = $Sexe;
  }

  public function Nom_Prenom(){
    return $this->Nom_Prenom ;
  }
  public function Sexe(){
    return $this->Sexe ;
  }

  function affiche(){
    //echo 'Il s\'agit de quelle personne ' ;
    //echo $this->Nom_Prenom, '<br>';
    //echo 'Le modèle est ', $this->modele, '<br>';
    //echo 'Le sexe est ', $this->Sexe, '<br>';
  }
}

// Les opérations relatives à l'annuaire entier se passent dans cette classe Annuaire
class Annuaire{

  // La liste des contacts (un tableau instancié par le constructeur)
  private $Contacts;

  public function __construct(){
    $this->Contacts = new Array();
  }

  public function sauvegarder($nomFichier){
    // Création du document DOM
    $doc = new DOMDocument('1.0', 'iso-8859-1');
    $carnet = $doc->createElement( "carnet" );

    // Boucle sur chacun des contacts
    foreach($this->Contacts as $unContact){
      $personne = $doc->createElement( "personne" );
      $personne->setAttribute( "nom_prenom", $unContact->Nom_Prenom() );
      $personne->setAttribute( "sexe", $unContact->Sexe() );
      $carnet->appendChild( $personne );
    }

    // Clôture et sauvegarde du document DOM
    $doc->appendChild( $carnet );
    $doc->save( $nomFichier );
  }

  // Cette fonction ajoute un contact à la liste (à utiliser au chargement, ainsi
  // qu'à l'ajout d'un nouveau contact)
  public function ajouteContact($unContact){
    $this->Contacts[] = $unContact;
  }

  public function charger($nomFichier){
    // À toi de jouer :)
  }
}
?>


Pour faire un essai, tu peux rajouter en dessous ce code :
<?php
  $unAnnuaire = new Annuaire();
  $mon_contact= new Contact('Jean Bon','Homme');
  $unAnnuaire->ajouteContact($mon_contact);
  $unAnnuaire->sauvegarder("textAnnuaire.xml");
?>

Ça devrait te créer un fichier textAnnuaire.xml qui contient grosso-modo ceci :
<carnet>
  <personne nom_prenom="Jean Bon" sexe="Homme" />
</carnet>


Voilà !

Bon courage pour la suite.

Xavier
1
Gremy87 Messages postés 360 Statut Membre 38
 
Bonjour,

oula attend, dis nous au moins ce qui ne va pas^^

qu'est ce qui ne marche pas? ton code m'as l'air correct à première vue.

0
stefanie_u2
 
bonjour,

lol, merci Gremy87
effectivement le code est bon, mais mon soucis est tout autre je souhaite ecrire avec le DOM, et récupérer du fichier xml , comment ???

comment meler du php et Dom ???
0
Gremy87 Messages postés 360 Statut Membre 38
 
Bonjour,

c'est assez simple, tu ne peux pas^^

le DOM est la structure de ton document pour ton navigateur, coté client, donc trop tard pour du php

il te faut du JS.

récupérer du xml en php, tu as l'air de savoir déjà le faire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stefanie_u2 Messages postés 54 Statut Membre
 
bonjour,

c 'est exactement le résultat un fichier XML avec phpDom, merci bcp 'Reivax962' de votre aide .
tout au long du développement du mini projet j aviserai en cas de couac...
merci encore a vous, 'Reivax962', 'Gremy87'.
0
stefanie_u2 Messages postés 54 Statut Membre
 
bonjour ,

puis je avoir de l aide je vous prie.
je souhaite récupérer les valeurs des champs d' un formulaire avec phpdom et faire un submit pour écrire sur un fichier xml plutot que d'écrire en dur.

exemple:

sexe : <input type="radio" name="T" value="Masculin" />
Nom_Prenom : <input type="text" name="Nom_Prenom" value="" size=30>

en java (équivalent en php)

jLabel1.setText("Cnss");

jLabel2.setText("Nom");

jLabel3.setText("Salaire");

jLabel4.setText("Lieu");

jAjouter.setText("Ajouter");

Personne p=new Personne(Integer.parseInt(jTextCnss.getText()), jTextNom.getText(), Double.parseDouble(jTextSalaire.getText()), Integer.parseInt(jTextLieu.getText()));
p.Ajouter();

!!!!! referez vous au code en haut de 'Reivax962 'avec le Dom, merci.
0