Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Per Zufall einen Beitrag aus xml Feed!?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Per Zufall einen Beitrag aus xml Feed!?

    Hallo Community,

    ich habe folgendes Script,
    aus welchem ich jetzt per Zufall nur einen Beitrag anzeigen lassen möchte:

    PHP-Code:

    <?
      if(!isset($_GET['page'])) {$_GET['page'] = 1;}
      $page = $_GET['page'];   
      $xmlsrc = "comments.xml";
      $xml = simplexml_load_file($xmlsrc);
      $counted = count($xml); 
      function getComments(){
        global $page;
        global $xmlsrc;
        global $xml;
        $pagination = 3; // Number of posts on page
        $i = 0; // comments index   
        foreach ($xml->comment as $comment) {
          ++$i;       
          if( (($page-1)*$pagination) < $i && $i <= ($page*$pagination) ) { // match page number to comments we want to show
            $gravatar_img = 'http://www.gravatar.com/avatar/?gravatar_id='.md5(strtolower($comment->email)).'&amp;default=monsterid&amp;size=75'; // get gravatar img for each email   
                echo '
              <div class="commentwrap">
                      <img class="gravatar" width="175" height="175" title="Copyrights by '.htmlspecialchars($comment->copyrights).'" src="'.htmlspecialchars($comment->bild).'" />
                      <div class="author"><h3>';
                        if($comment->email != "") {echo '<a href="index.php">'.htmlspecialchars($comment->dingsbums).'</a>';} // check if author supplied email - if so, show mailto: link
                        else { echo htmlspecialchars($comment->dingsbums); }; // else show only name 
                      echo '</h3></div>
                      <div class="comment"><br />Richtig: '.nl2br(htmlspecialchars($comment->richtig)).'<br />  Falsch 1: '.nl2br(htmlspecialchars($comment->falsch1)).'<br />  Falsch 2: '.nl2br(htmlspecialchars($comment->falsch2)).'<br />  Falsch 3: '.nl2br(htmlspecialchars($comment->falsch3)).'<br /><br />  <a href="'.htmlspecialchars($comment->link).'" target="_blank">Link zum DingsBums</a> </div>' // strip HTML - but preserve line breaks 
              .'</div>';
          } else {
              if($i > ($page*$pagination)) { // add next page link (if more comments exist)
                 echo "<a class=\"pageplus\" href=\"?page="; echo $page+1; echo "#comments\">Newer comments &raquo;</a>"; break; 
               } // end next page link
          }  
        }  // end foreach 
        if ($page > 1) {echo "<a class=\"pageminus\" href=\"?page="; echo $page-1; echo "#comments\">&laquo; Older comments</a>"; } // add link to previous pages (if not on page 1)
    } // end getComments
    ?>
    Die Pagination wird allerdings nicht mehr benötigt.
    Wollte Euch den Code nur möglichst unverfälscht posten.

    Bin mit meinen Ideen am Ende
    Wäre für Hilfe sehr Dankbar da ich nicht weiß wo ich da was ansetzen könnte


  • #2
    Kommt halt drauf an wie das XML aussieht. Exemplarisch:

    Code:
    <comments>
    	<comment>1</comment>
    	<comment>2</comment>
    	<comment>3</comment>
    	<comment>4</comment>
    	<comment>5</comment>
    </comments>
    PHP-Code:
    <?php

        $xml 
    simplexml_load_file'xmlrand.xml' );
        
        
    print_r($xml);
        
        
    $count count$xml->comment ); // Anzahl Knoten
        
    $rand rand0$count ); // Zufallszahl als Schlüssel
        
        
    echo $xml->comment$rand ];
    You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

    Kommentar


    • #3
      Nicht aus Funktionen globals oder superglobals referenzieren...
      PHP-Code:
        function getComments(){ 
          global 
      $page
          global 
      $xmlsrc
          global 
      $xml
      sondern Funktionsparameter nutzen!
      PHP-Code:
        function getComments($page$xmlsrc$xml){ 
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Das ist die .xml

        PHP-Code:

        <?xml version="1.0"?>
        <xml>
        <comment time="1404208486">
        <dingsbums>NAME</dingsbums>
        <bild>BILD</bild>
        <copyrights>COPY</copyrights>
        <link>http://www.blabla.de</link>
        <richtig>NAME</richtig>
        <falsch1>NAME</falsch1>
        <falsch2>NAME</falsch2>
        <falsch3>NAME</falsch3>
        </comment>
        </xml>

        Vlt. lässt sich was simples mit comment time machen!?

        Kommentar


        • #5
          Sicher nicht optimal, aber müsste doch funktionieren:

          Der von dir gepostete Code funktioniert ja so weit ichs verstanden habe, also
          könntest du da doch anstatt die Kommentare per echo auszugeben sie in ein
          Array packen, das am Ende per [MAN]shuffle[/MAN] durchmischen und dann nur
          das erste (dann zufällige) Element ausgeben.

          Kommentar


          • #6
            Das XML passt doch garnicht zur Problemstellung. Und wo sind deine eigenen Versuche? Ich hab doch ein Beispiel gepostet.
            You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

            Kommentar


            • #7
              Vielen Dank für die Antworten!
              Leider weiß ich nicht wo ich was einsetzen muss

              Kommentar


              • #8
                Kannst du mal eine BeispielXML-Datei posten, wo man auch irgendwas per Zufall auslesen könnte?
                Standards - Best Practices - AwesomePHP - Guideline für WebApps

                Kommentar


                • #9
                  Zitat von rkr Beitrag anzeigen
                  Kannst du mal eine BeispielXML-Datei posten, wo man auch irgendwas per Zufall auslesen könnte?
                  Zitat von Eistee87 Beitrag anzeigen
                  Das ist die .xml

                  PHP-Code:

                  <?xml version="1.0"?>
                  <xml>
                  <comment time="1404208486">
                  <dingsbums>NAME</dingsbums>
                  <bild>BILD</bild>
                  <copyrights>COPY</copyrights>
                  <link>http://www.blabla.de</link>
                  <richtig>NAME</richtig>
                  <falsch1>NAME</falsch1>
                  <falsch2>NAME</falsch2>
                  <falsch3>NAME</falsch3>
                  </comment>
                  </xml>

                  Kommentar


                  • #10
                    Genau, deswegen ja meine Frage. Damit kann ich nichts anfangen.
                    Standards - Best Practices - AwesomePHP - Guideline für WebApps

                    Kommentar


                    • #11
                      Zitat von rkr Beitrag anzeigen
                      Genau, deswegen ja meine Frage. Damit kann ich nichts anfangen.
                      Hab davon kaum Ahnung,
                      daher check ich auch grad nicht was Du genau brauchst.
                      Die Einträge sind alle genau so aufgebaut nur mit verschiedenen Inhalten

                      Kommentar


                      • #12
                        Zitat von Eistee87 Beitrag anzeigen
                        Die Einträge sind alle genau so aufgebaut nur mit verschiedenen Inhalten
                        Verstehe ich das richtig, du möchtest nicht aus einer XML einen zufälligen Eintrag rausfischen sondern eine XML von mehreren gleichartig aufgebauten XML und die dortigen Einträge verarbeiten?
                        PHP-Klassen auf github

                        Kommentar


                        • #13
                          Nein es existiert nur eine XML Datei,
                          dass soll auch so bleiben.

                          Eine XML Datei besteht aus zB 100 Einträgen.
                          Aus diesen 100 Einträgen möchte ich per Zufall einen einzigen Beitrag
                          auf der Webseite angezeigt bekommen

                          EDIT
                          Meine Beispiel XML Datei war nur gekürzt
                          weil ich nicht unnötig Ellenlang schreiben wollte

                          Kommentar


                          • #14
                            Lies die XML, form sie in ein natives PHP array und cache&benutze das. XML ist "teuer".
                            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                            Kommentar


                            • #15
                              Das kostet mich schon seit Stunden nerven
                              aber besten Dank!

                              Kommentar

                              Lädt...
                              X