Documentation PHPBoost 3

Les opérations avec $Sql

Pour la lecture sql on dois disposer de la classe sql.
En module il n'y a pas de souci.
Mais pour les menu, étant dans une fonction il faut déclaré la classe en global
global $Sql;

Pour une lecture sql, il faut se connecter a la db. Par le framework, la connection est deja prete. Elle est automatique.
On passe donc directement a l'étape query, soit la lecture/écriture sql.

Pour un module, il n'y a pas a chargée de classe particuliere, elle est déjà prete a l'emploie.

En php sans le framework une query ressemble a :
Code PHP :
$result = mysql_query('SELECT * WHERE id=1');

ensuite il faut utiliser une autre fonction pour pouvoir utiliser les resultat comme : mysql_result(), mysql_fetch_array(), mysql_fetch_row() ...

Avec le framework c'est un peu pareil, la connexion en moins, et une lecture directe avec certaines fonction.


methode query



query( string $query, int $errline, int $errfile)
query() envoie une seule requête (les requêtes multiples ne sont pas supportées) à la base de données.

retour: query() retournera une ressource en cas de succès, ou FALSE en cas d'erreur.

Paramètres:
$query Selection query
$errline Utilisez la constante __LINE__ . Il est très intéressant quand vous déboguez votre script et que vous voulez savoir où est appelé la requête qui rend une erreur.
$errfile Utilisez la constante __FILE__ . Il est très intéressant quand vous déboguez votre script et que vous voulez savoir où est appelé la requête qui rend une erreur.

Exemple (dans le forum topic.php ligne 112) :
Code PHP :
$nbr_msg_before = $Sql->query("SELECT COUNT(*) as nbr_msg_before FROM " . PREFIX . "forum_msg WHERE idtopic = " . $id_get . " AND id < '" . $idm . "'", __LINE__, __FILE__);

Cette lecture compte le nombre de message de la table 'forum_msg correspondant au condition donnée.
Dans ce cas on utilise directement de resultat de la lecture sql.


methode query_while



query_while( query $query, int $errline, int $errfile)
Cette méthode permet d'exécuter une requête qui récupère plusieurs chan dans la base de données.

retour:
query_while() retournera une ressource en cas de succès, ou FALSE en cas d'erreur.
pour exploiter le retour de cette fonction il faut utiliser fetch_assoc().

Paramètres:
$query Selection query
$errline Utilisez la constante __LINE__ . Il est très intéressant quand vous déboguez votre script et que vous voulez savoir où est appelé la requête qui rend une erreur.
$errfile Utilisez la constante __FILE__ . Il est très intéressant quand vous déboguez votre script et que vous voulez savoir où est appelé la requête qui rend une erreur.

Exemple (dans member.php ligne 893) :
Code PHP :
$result = $Sql->query_while("SELECT id, name 
FROM " . PREFIX . "group", __LINE__, __FILE__);

On lis et récupère toutes les valeurs id et name qui sont dans la table group.
Pour l'utiliser on utilise la fonction fetch_assoc() ligne 895.


methode query_array



query_array( string $table, string $field, string $clause, int $errline, int $errfile)
Cette méthode fait automatiquement une requête sur plusieurs champs d'une table.

retour :
query_array() retournera un tableau (array()) en cas de succès, ou FALSE en cas d'erreur.


Paramètres:
$table Nom de la table a interroger.
$field Nom des chan a lire.
$clause Les conditions qui permettrons à la méthode de savoir dans quelle ligne il doit sélectionner les valeurs. Elles doivent respecter la syntaxe MySQL et commencer avec 'WHERE'.
$errline Utilisez la constante __LINE__ . Il est très intéressant quand vous déboguez votre script et que vous voulez savoir où est appelé la requête qui rend une erreur.
$errfile Utilisez la constante __FILE__ . Il est très intéressant quand vous déboguez votre script et que vous voulez savoir où est appelé la requête qui rend une erreur.


Exemple (dans member.php ligne 62) :
Code PHP :
$row = $Sql->query_array(DB_TABLE_MEMBER, 'user_lang', 'user_theme', 'user_mail', 'user_local', 'user_web', 'user_occupation', 'user_hobbies', 'user_avatar', 'user_show_mail', 'user_editor', 'user_timezone', 'user_sex', 'user_born', 'user_sign', 'user_desc', 'user_msn', 'user_yahoo', 'user_show_mp', 'user_notif_mail', "WHERE user_id = '" . $User->get_attribute('user_id') . "'", __LINE__, __FILE__);

Cette ligne lis la table mebre de pbt, et selectionne la serie de chan de user_lang à user_notif_mail, la condition est en relation avec l'user_id.
chaque valeur est mise en tableau pour chaque chan lu.
pour user_id = 1 cela vaut : $row['user_id'] = 1 ;


methode query_close



query_close( resource $resource)
Libère la mémoire liée a la lecture/écriture sql.

retours : true / false celons si la mémoire a été libéré ou non.

Paramètres:
$resources l'appel sql qui a utiliser la base de donnée.


Exemple (dans member.php a la ligne 361)
Code PHP :
$Sql->query_close($result);

Dans ce cas là on libere la memoire de $result passé ligne 282
Code PHP :
$result = $Sql->query_while("SELECT ....



methode fetch_assoc



fetch_assoc( resource $result)
Parcourt une rangée MySQL ressource de résultat par ligne. Lorsque vous appelez cette méthode sur une ressource, vous obtenez le rang suivant.

retour : Un tableau associatif dont les clés sont le nom de chaque chan et les valeurs sont la valeur du chan. Il retourne false lorsque vous êtes à la fin des lignes.

Paramètres:
$resources La ressource est fournie par la méthode query_while.

exemple (dans member ligne 287) :
Code PHP :
while ($row = $Sql->fetch_assoc($result))

On passe dans une boucle le tableau associatif de la lecture $result dans $row pour chaque niveau.
Aussi on aura $row['name'] = un pseudo pour chaque niveau de la db.

Il existe aussi la methode fetch_row( resource $result)
Cette méthode n'est pas utiliser dans les modules.
Cette page a été vue 2956 fois