Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL-Array in Templateklasse übergeben

Einklappen

Neue Werbung 2019

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

  • MySQL-Array in Templateklasse übergeben

    Hallo liebe PHP.de-Community,

    Ich habe eine kleine Templateklasse gefunden.
    Mit dieser kann man auch mit Schleifen arbeiten.

    PHP-Code:
    <?php
    include("template.php");
    $tmp = new template("vorlage3.htm");
    $tmp->setcontent("getraenke", array(
      array(
    'getraenk' => 'Cola''preis' => '0,60'),
      array(
    'getraenk' => 'Bier''preis'    => '0,50'),
      array(
    'getraenk' => 'Cola''preis'    => '0,30')));
    echo 
    $tmp->vorlage;
    ?>
    ergibt beispielsweise:

    PHP-Code:
    <html>
      <
    head>
        <
    title>Schleife benutzen</title>
      </
    head>
      <
    body>
        <
    table>
          <
    tr>
            <
    th>Getraenk</td>
            <
    th>Preis</td>
          </
    tr>
          <
    tr>
            <
    td>Cola</td>
            <
    td>0,60</td>
          </
    tr
          <
    tr>
            <
    td>Bier</td>
            <
    td>0,50</td>
          </
    tr
          <
    tr>
            <
    td>Cola</td>
            <
    td>0,30</td>
          </
    tr>
        </
    table>
      </
    body>
    </
    html
    Meine Frage ist jetzt folgende:

    Ich habe eine MySQL-Tabelle mit dem Name und dem Preis des Getränkes.
    Wie gebe ich jetzt die Einträge so aus, dass ich sie an die Templateklasse übergeben kann?

    Vielen Dank für eure Hilfe!


  • #2
    Die Daten abfragen und dann in einer Schleife in ein Array eintragen.

    Grenze deine Frage bitte ein, wo genau ist das Problem, die Daten abfragen oder ins Array bringen ?
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

    Kommentar


    • #3
      wie man die daten aus der db holt weiss ich. Ich möchre wissen wie man das array übergibt

      Kommentar


      • #4
        Bindest Du die Template Klasse den ein? Arbeitest Du mit einem Framework, oder selbst gemacht? Wenn es eine fertige Template Klasse ist, gibt es üblicherweise auch ein Tut o.ä. dazu.

        Wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          $tmp->setcontent("getraenke", $das_array_aus_deiner_datenbank );
          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


          • #6
            Was benutzt du denn? mysql_-Funktionen? PDO?

            Bei PDO sähe das ganze so aus:

            PHP-Code:
            $sth $dbh->query('SELECT name, addr, city from folks');  
            $sth->setFetchMode(PDO::FETCH_ASSOC); 

            $result $sth->fetchAll(); 
            Schon hast du dein DB-Result als Array vorliegen.

            Kommentar


            • #7
              Gesucht sind Arrays in Arrays:

              1 Ergebniszeile = 1 Array mit 2 Feldern
              3 Ergebniszeilen insgesamt = 1 Array mit 3 Einträgen (jeweils 1 Array mit 2 Einträgen)
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Okay... Ich glaube ihr versteht mich nicht ganz...

                Hier ist mal die gesamte Template-Klasse:

                PHP-Code:
                <?php

                class Template {

                    var 
                $vorlage;

                    function 
                Template($vorlage) {
                        
                $this->setVorlage($vorlage);
                    }

                    function 
                setVorlage($vorlage) {
                        if(
                file_exists($vorlage)) {
                            
                $fp fopen($vorlage"r");
                            
                $text fread($fpfilesize($vorlage));
                            
                fclose($fp);
                            
                $this->vorlage $text;
                        } else {
                            
                $this->vorlage $vorlage;
                        }
                    }

                    function 
                setContent($param1$param2="") {
                        if(!
                is_array($param1) && $param2 && !is_array($param2)) {
                            
                $this->setOne($param1$param2);
                        } elseif(
                is_array($param1) && !$param2) {
                            
                $this->setArray($param1);
                        } elseif(!
                is_array($param1) && is_array($param2)) {
                            
                $this->setLoop($param1$param2);
                        } else {
                            die(
                "Parameter in der Klasse Vorlage wurden falsch übergeben.");
                        }
                    }

                    function 
                setOne($suchWort$substitution) {
                        
                $this->vorlage str_replace("{".$suchWort."}",
                        
                $substitution,
                        
                $this->vorlage);
                    }

                    function 
                setArray($Array) {
                        foreach (
                $Array as $suchWort => $substitution) {
                            
                $this->setOne($suchWort$substitution);
                        }
                    }

                    function 
                setLoop($schleife$Array) {
                        
                $str explode("<!--anfang:".$schleife."!-->"str_replace("<!--ende:".$schleife."!-->""<!--anfang:".$schleife."!-->"$this->vorlage));
                        
                $teilStr "";
                        foreach (
                $Array as $element) {
                            
                $teilVorlage = new Template($str[1]);
                            
                $teilVorlage->setArray($element);
                            
                $teilStr .= $teilVorlage->vorlage;
                        }
                        
                $this->vorlage $str[0] . $teilStr $str[2];
                    }

                }

                ?>

                Kommentar


                • #9
                  Hier gabs mehrere Lösungsansätze - hast du jetzt noch ein konkretes Problem oder kann der Thread geschlossen werden? Denn Lösungsvorschläge oder Fehlermeldungen/beschreibungen deinerseits fehlen schlicht. Und einfach stumpf den Code deiner Templateklasse zu posten hilft hier rein garnichts, das ist zusammenhangloser Kram.
                  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


                  • #10
                    Dem stimme ich zu. Worin genau liegt das Problem? DU hast Dein Fetch und schreibst es dort in die Arrays.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Mach halt einen print_r vom Ergenis der DB-Abfrage und einen von deinem zu übergebenen Array. Unterschiede feststellen und überlegen wie man von a nach b kommt. Wie in der Schule.

                      Kommentar

                      Lädt...
                      X