web-dev-qa-db-fra.com

Joomla 3 stocke la sortie de la procédure mysql comment formater

C'est peut-être quelque chose de simple, mais je continue d'essayer et je ne peux pas le faire. J'utilise Joomla 3 avec un backend mysql qui a une procédure personnalisée (blogvote (i int)) qui renvoie les votes et attribue les points en fonction du vote - il s'agit en gros d'un code simple comme celui-ci:

    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`;

Ensuite, j'utilise un module personnalisé avec du code php comme ceci:

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');

Cela fonctionne maintenant - c’est-à-dire que je reçois les goûts et les points d’un utilisateur connecté. Je voudrais le formater comme un tableau - plus ou moins comme j'ai la sortie sur phpmyadmin

Aime les points


3 0

Et maintenant je reçois quelque chose comme ça:

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

Comment puis-je obtenir un formatage correct si possible à partir d'un fichier de module php?


J'ai essayé un conseil qui a été posté dans les commentaires. Je peux maintenant afficher user_id dans une table, mais la requête $ result produit une ligne vide:

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

Vous pouvez afficher les résultats dans une table et utiliser une boucle foreach pour les résultats réels, comme suit:

<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