it-swarm.com.de

Joomla 3 gespeicherte MySQL-Prozedur Ausgabe, wie man formatiert

Es ist vielleicht etwas Einfaches, aber ich versuche es weiter und schaffe es nicht. Ich benutze Joomla 3 mit einem MySQL-Backend, das eine benutzerdefinierte Prozedur (blogvote (i int)) hat, die Stimmen zurückgibt und Punkte basierend auf Stimmen vergibt - im Grunde ist es ein einfacher Code wie dieser:

    SELECT FLOOR(COUNT(`vote`)/10) AS POINTS, COUNT(`vote`) AS LIKES FROM `table1`, `table2` b
WHERE b.`id` = `item_id` AND b.`user_id` = p_user
AND `vote` = 1
GROUP BY b.`user_id`;

Dann benutze ich ein maßgeschneidertes Modul mit PHP-Code wie folgt:

require JModuleHelper::getLayoutPath('mod_helloworld');
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $user =& JFactory::getUser();
//display user name and user id
    echo "<p>Your name is {$user->name} and your userid is {$user->id}</p>";
//get logged in user id to put into procedure call
    $userval = $user->id;
    //create query call to procedure
    $query = "CALL blogvote($userval);";
    $db->setQuery($query);
    // $result = $db->query();
    //print_r($result);
    $row = $db->loadObjectList('user_id');
    print_r($row);
require JModuleHelper::getLayoutPath('mod_helloworld');

Es funktioniert jetzt - d. H. Ich erhalte die Likes und Punkte für einen angemeldeten Benutzer. Ich möchte es als Tabelle formatieren - mehr oder weniger so, als hätte ich die Ausgabe auf phpmyadmin

Mag Punkte


3 0

Und jetzt bekomme ich so etwas:

Array ( [] => stdClass Object ( [POINTS] => 0 [LIKES] => 3 ) )

Wie kann ich eine korrekte Formatierung wenn möglich von der PHP-Moduldatei erhalten?


Ich habe einige Ratschläge ausprobiert, die in Kommentaren veröffentlicht wurden. Im Moment kann ich user_id in einer Tabelle anzeigen, aber die $ result-Abfrage erzeugt eine leere Zeile:

echo "<table>";
     echo "<tr>";
     echo "<td>Name</td>";
     echo "<td>".$userval."</td>";
     echo "</tr>";
     echo "</table>";
    foreach ($row as $result) 
    {
        echo "<table>";
        echo "<tr>";    
        echo "<td>" . $result->points . "</td>";
        echo "<td>" . $result->likes . "</td>";
        echo "</tr>";
        echo "</table>";
    }
2
aretai

Sie können die Ergebnisse in einer Tabelle anzeigen und eine foreach -Schleife für die tatsächlichen Ergebnisse verwenden, wie folgt:

<table>
    <thead>
        <tr>
            <th>Points</th>
            <th>Likes</th>
        </tr>
    </thead>
    <tbody>
    <?php 
        foreach ($row as $result) 
        {
            echo '<tr>';        
            echo '<td>' . $result->POINTS. '</td>';
            echo '<td>' . $result->LIKES . '</td>';
            echo '</tr>';
        }
    ?>
    </tbody>
</table>
1
Lodder