Gå til innhold

Sette inn data i .xml fil


Anbefalte innlegg

Hei, litt usikker på om dette er rett kategori, eller om det lar seg gjøre med PHP.

 

Jeg har en side som viser et kartutsnitt fra 'google maps', på dette kartet legger jeg inn posisjoner som kartet leser fra data.xml

 

<markers>
 
<marker lat="65.605349" lng="9.459274"> Tekst </marker>
  
<marker lat="67.605349" lng="6.459274"> Tekst </marker>
  
<marker lat="69.605349" lng="8.459274"> Tekst </marker>
  
<marker lat="61.605349" lng="7.459274"> Tekst </marker>
  
</markers>

 

Så vil jeg gjerne lage meg et program som setter inn nye markers i denne filen. Men mine php kunnskaper er så som så, så jeg lurer på om noen her kan hjelpe meg. Er dette i det hele tatt mulig med php?

 

Ser for meg en form som brukerene fylle ut med Lengdegrad, breddegrad og tekst.

Lenke til kommentar
Videoannonse
Annonse
Takk, får se litt på disse. Redd det blir litt for avansert for meg. Kanskje det finnes et mer konkret eksempel et sted. :)

7182075[/snapback]

Det er veldig mye eksempler i manualen, så det burde ikke være for mye hokus pokus.

 

For å få input fra brukere via "forms" og PHP, les disse:

http://no2.php.net/manual/en/tutorial.forms.php

http://no2.php.net/manual/en/language.variables.external.php

 

 

Og denne for å sjekke at brukeren skrev inn et flyttall:

http://no2.php.net/manual/en/function.is-float.php

Lenke til kommentar

Da har jeg fått satt sammen noe greier her. Med denne får jeg satt inn innholdet nederst i data.xml, men hvordan setter jeg inn teksten på en spesefikk plass i xml filen? Jeg må jo klare å sette den inn før "</markers>"

 

Så må jeg vel etterpå finne ut hvordan jeg får laget meg en form som sender teksten jeg vil sette inn til denne filen.

 

 

<?php
$filnavn = 'data.xml';
$innhold = "test";


if (is_writable($filnavn)) {

  
  if (!$handle = fopen($filnavn, 'a')) {
        echo "Cannot open file ($filnavn)";
        exit;
  }


  if (fwrite($handle, $innhold) === FALSE) {
      echo "Cannot write to file ($filnavn)";
      exit;
  }
 
  echo "Success, wrote ($innhold) to file ($filnavn)";
 
  fclose($handle);

} else {
  echo "The file $filnavn is not writable";
}
?> 

Endret av logicx
Lenke til kommentar
SimpleXML er genialt for sånne oppgaver!

http://no2.php.net/manual/en/ref.simplexml.php

7182122[/snapback]

Bare om du har PHP5, men ja, enig.

Requirements

 

The SimpleXML extension requires PHP 5.

7182160[/snapback]

 

Sørgelig men sant så er det dessverre sånn at folk bruker PHP4 fortsatt og altfor mange hoster tilbyr ikke noe annet, men synes at folk bør tenke over hvor gammelt PHP4 faktisk er. Selv PHP5 begynner jo å dra på årene. Så det er bare å ta byttet først som sist. Forbederingene er flere og bedre enn hva folk flest er klar over :)

Lenke til kommentar
Da har jeg fått satt sammen noe greier her. *snip*

7182473[/snapback]

Du må lese inn filen først.

En grei funksjon i dette tilfellet er http://no.php.net/file som leser inn filen din i et array, som vil si at hver linje i filen din får en linje i arrayet.

Mer om array her dersom du ikke vet hva jeg mener: http://no.php.net/array

Så skriver du arrayet tilbake til filen ved bruk av http://no.php.net/foreach (for å traversere arrayet) f.eks. til du treffer </marker>, nå skriver du det nye koordinatet, og fortsetter å skrive </marker> og resten av arrayet til filen.

 

bruk http://no.php.net/manual/en/function.array-search.php til å finne ut ved hvilken index i arrayet du skal stoppe (hint hint, søk etter "</marker>") for å legge inn det nye elementet

Endret av Nazgul
Lenke til kommentar

myxml.xml:

<maps>
<map>
 <cord>123</cord>
 <cord>234</cord>
</map>
<map>
 <cord>345</cord>
</map>
</maps>

I simpleXML

<?php
$xmlFile = 'myxml.xml';

/* åpne xml filen */
$XML = simplexml_load_file($xmlFile);

/* Lag en ny "cord" i første map, med verdien 789 */
$cord = $XML->map[0]->addChild('cord', 789);
/* Gi den en attribute */
$cord->addAttribute('type', 'primary');
/* print ut */
echo $XML->asXML();
?>

 

Obs! Hadde tenkt å lage eksempler for alle xml tingene i php, men fant ut at alle krever php5, php5.1. Så da er det vel ikke noe vits.

[/code]

Lenke til kommentar
myxml.xml:

<maps>
<map>
 <cord>123</cord>
 <cord>234</cord>
</map>
<map>
 <cord>345</cord>
</map>
</maps>

I simpleXML

<?php
$xmlFile = 'myxml.xml';

/* åpne xml filen */
$XML = simplexml_load_file($xmlFile);

/* Lag en ny "cord" i første map, med verdien 789 */
$cord = $XML->map[0]->addChild('cord', 789);
/* Gi den en attribute */
$cord->addAttribute('type', 'primary');
/* print ut */
echo $XML->asXML();
?>

 

Obs! Hadde tenkt å lage eksempler for alle xml tingene i php, men fant ut at alle krever php5, php5.1. Så da er det vel ikke noe vits.

[/code]

7215884[/snapback]

 

Det er jo en god tanke, du kan jo kanskje gjøre det allikevel så andre som kjører PHP 5 kan se hvordan?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...