XML Gästebuch

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML Gästebuch

    hallo erstmal. ich brauch dringend eure hilfe. ich tüftel gerade an einem php gästebuch auf xml basis rum und komme einfach nicht weiter. meine xml struktur der einträge sieht so aus:

    Code:
    <?xml version="1.0"?>
    <eintraege>
        <eintrag nr="3">
            <name>Max Mustermann</name>
            <nachricht>BlaBlaBla</nachricht>
        </eintrag>
        <eintrag nr="2">
            <name>Max Mustermann</name>
            <nachricht>BlaBlaBla</nachricht>
        </eintrag>
        <eintrag nr="1">
            <name>Max Mustermann</name>
            <nachricht>BlaBlaBla</nachricht>
        </eintrag>
    </eintraege>
    ich würde gerne mit php automatisch eine xml datei erstellen lassen, die

    1. den neuen eintrag ganz oben (siehe xml struktur) einschreibt und
    2. das nr attribut vom tag <eintrag> anhand des vorhergehenden eintrags ermittelt. also nr neu = nr attributalt + 1 ^^
    die werte für name und nachricht erhalt ich über die variablen $name und $nachricht aus einem formular.

    ich komme bei dem problem echt nicht weiter. hab mich schon durch google, wikipedia und wie sie alle heißen durchgeschlagen und durch ein php 5 buch aber ich versteh das php dom einfach nicht. besonders, wie man den aktuellsten eintrag ganz nach oben einschreiben lassen kann. bitte keine 'please read the faq" antworten. ich komm hier nämlich echt nicht weiter...

  • #2
    Re: XML Gästebuch

    Zuerst mal wäre interessant zu wissen, mit welcher DOM-Implemenation du arbeitest.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      implementation ? wie bekomme ich die raus ? php ? phpinfo() ?

      Code:
      DOM/XML 	enabled
      DOM/XML API Version 	20031129
      libxml Version 	2.6.16
      HTML Support 	enabled
      XPath Support 	enabled
      XPointer Support 	enabled
      Schema Support 	enabled
      RelaxNG Support 	enabled
      Zuletzt geändert von class.matze; 24.04.2007, 17:01.

      Kommentar


      • #4
        gehe mal durch die funktionsliste unter http://de2.php.net/manual/en/ref.dom.php durch, schau dir aufmerksam die user notes an, dort gibt es sehr viele beispiele.

        google nach "php5 dom", du findest immens viele anleitungen mit beispielen und erklärungen.

        dann versuchst du es selbst, und wenn es nicht klappt, stellst du hier konkrete fragen. so ein "wie geht das" ist nicht zu beantworten.

        Kommentar


        • #5
          auf der seite hab ich schon geschaut.

          das eintragen versteh ich ja teilweise mit dom. aber wie setz ich den neuen eintrag nach ganz oben in die xml datei. bei mir hängt dom immer den neuen eintrag unten an.

          ich will es also so machen, wie im beispiel. das der neue eintrag (nr 3) immer über dem letzten eintrag (nr 2) steht. und wie komm ich mittels dom an das nummern attribut des letzten eintrags. das sind meine 2 probleme.

          das hat sicher was mit insertBefore() zu tun. aber ich versteh da gar nichts.
          Zuletzt geändert von class.matze; 24.04.2007, 17:17.

          Kommentar


          • #6
            Original geschrieben von class.matze
            das hat sicher was mit insertBefore() zu tun. aber ich versteh da gar nichts.
            Und mit so einer "Problembeschreibung" können wir "gar nichts" anfangen.

            Entweder gibst du dir etwas Mühe, konkret zu beschreiben, wo dein Problem liegt - oder es bleibt meinerseits bei einem RTFM.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              mach mal halblang und lern erst mal aus der datei lesen. wenn das klappt, kannst du weiter machen. z.b. erst mal irgendwie irgend einen knoten anhängen und den baum ausgeben - dann siehst du, was das bewirkt. aber nicht alles auf ein mal.

              Kommentar


              • #8
                Okay. Ich hab jetzt soweit mal den Code geschrieben:

                PHP-Code:
                $nummer 1;
                $benutzername date("d.m.Y - H:i",time());

                //DOM Eintrag
                $dom = new DOMDocument();
                $dom->load('gaestebuch.xml');

                $eintrag $dom->createElement('eintrag');
                $eintrag->setAttribute('nr'$nummer);

                $name $dom->createElement('name');
                $name_wert $dom->createTextNode($benutzername);
                $name->appendChild($name_wert);

                $eintrag->appendChild($name);
                $dom->documentElement->appendChild($eintrag);
                $dom->save('gaestebuch.xml'); 
                Dieses Script hängt an eine XML-Datei also immer:

                Code:
                <eintrag nr="1">
                <name>24.04.2007 - 18:17</name>
                </eintrag>
                Wie kann ich es nun machen, dass Dom den neuen Eintrag nicht immer unten anhängt sondern immer am anfang (oben in der xml-datei) reinschreibt. Also vor dem ersten <eintrag> - Element.
                Zuletzt geändert von class.matze; 24.04.2007, 18:27.

                Kommentar


                • #9
                  warum nicht erst auslesen lernen?

                  sorry. edit.

                  was ergibt die eigenschaft firstChild von dem knoten "eintraege"? "ergibt" im sinne von var_dump.
                  Zuletzt geändert von penizillin; 24.04.2007, 18:30.

                  Kommentar


                  • #10
                    das auslesen einer xml datei kann ich. das ist kein problem mehr. das problem ist nur die reihenfolge der einträge.

                    Kommentar


                    • #11
                      was ergibt die eigenschaft firstChild von dem knoten "eintraege"? "ergibt" im sinne von var_dump.

                      Kommentar


                      • #12
                        Original geschrieben von class.matze
                        Wie kann ich es nun machen, dass Dom den neuen Eintrag nicht immer unten anhängt sondern immer am anfang (oben in der xml-datei) reinschreibt. Also vor dem ersten <eintrag> - Element.
                        Na, wie du schon vermutet hast - insertBefore statt appendChild.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          wo und wie muss ich das insert_before anwenden ? kannstes vielleicht kurz an dem beispiel hier zeigen:

                          PHP-Code:
                          $nummer 1;
                          $benutzername date("d.m.Y - H:i",time());

                          //DOM Eintrag
                          $dom = new DOMDocument();
                          $dom->load('gaestebuch.xml');

                          $eintrag $dom->createElement('eintrag');
                          $eintrag->setAttribute('nr'$nummer);

                          $name $dom->createElement('name');
                          $name_wert $dom->createTextNode($benutzername);
                          $name->appendChild($name_wert);

                          $eintrag->appendChild($name);
                          $dom->documentElement->appendChild($eintrag);
                          $dom->save('gaestebuch.xml'); 

                          Kommentar


                          • #14
                            ..keine antwort?

                            Kommentar


                            • #15
                              Original geschrieben von class.matze
                              wo und wie muss ich das insert_before anwenden ? kannstes vielleicht kurz an dem beispiel hier zeigen
                              Nein - jetzt wird's wirklich langsam Zeit für
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X