Fork me on GitHub

Documentations > Développeurs > Fiches techniques > Mémento du développeur (API XOOPS)

Mémento du développeur (API XOOPS)


Page:
« 1 (2) 3 »

Classe xoopsDB
Connaissances requises : tableaux (associatifs, indexés) et instructions mysql de Php.

prefix genId queryFromFile
query getInsertId freeRecordSet
fetchRow getRowsNum errno
fetchArray getAffectedRows error
fetchBoth quoteString


A utiliser pour toutes les instructions relatives aux bases de données.
Assure la connection à  la base de données. Permet de bénéficier du mode debug sql.
N'a pas besoin d'être instanciée (fait par le fichier common.php), sauf dans une classe.

Utilisation dans une fonction :
Si utilisation dans une fonction ne pas oublier la déclaration globale :

function myfunction($param=0) {
global $xoopsDB;

Utilisation dans une classe :
Dans ce cas, doit être instanciée :

class myClass extends XoopsObject
{
var $db;

// constructor
function myClass($id=null)
{
$this->db =& Database::getInstance();
$this->initVar("id", XOBJ_DTYPE_INT, null, false);
// etc



prefix
Retourne le nom de la table passée en paramêtre avec le prefixe choisi pour les tables de xoops (xoops par défaut)

prefix (string $tablename)

Exemple

$xoopsDB->prefix('matable') retournera 'xoops_matable'


query, queryF
Execution de la requête $sql passée en paramêtre (chaine de caractêres).

prefix (string $sql, [int $limit = 0}, [int $start = 0])

$sql string requête sql
$limit int nombre de lignes à  retourner
$start int offset : décalage par rapport au premier enregistrement


Exemple

$sql = "SELECT cid, title, imgurl FROM ".$xoopsDB->prefix("mydownloads_cat")." WHERE pid = 0 ORDER BY title";
$result=$xoopsDB->query($sql);

Remarque:
xoopsDB->query doit être utilisé par défaut, xoopsDB->queryF ne devant être utilisé que pour les requêtes INSERT ou UPDATE en cas de problême.


fetchRow
fetchRow($result) équivaut à  mysql_fetch_row($result)
Retourne une ligne du résultat de la requête sous forme de tableau indexé numériquement.
Retourne false si pas (ou plus) de ligne.

Exemples
- lorsque la requête ne retourne qu'une ligne (requête SELECT COUNT(*) , requête avec clause WHERE sur l'id,....)

list($count) = $xoopsDB->fetchRow($result);
// ou encore
list($id, $name, $phone) = $xoopsDB->fetchRow($result);

- lorsque les résultats peuvent être exploités directement dans une boucle

while (list($id, $name) = $xoopsDB->fetchRow($result)) {
echo 'Le nom est '.$name.' et le numero id '.$id.'<br>';
}



fetchArray
fetchArray($result) équivaut à  mysql_fetch_assoc($result)
Retourne une ligne du résultat de la requête sous forme d'un tableau associatif, la clef étant le nom du champ.
Retourne false si pas (ou plus) de ligne.

Exemples
- lorsque la requête ne retourne qu'une seule ligne

$myrow = $xoopsDB->fetchArray($result)) {
$variable1 = $myrow['nom_champ1'];
$variable2 = $myrow['nom_champ2'];
}

- si une ligne ou plus

$i = 0;
while ( $myrow = $xoopsDB->fetchArray($result) ) {
$var_array[$i]['elt1'] = $myrow['nom_champ1'];
$var_array[$i]['elt2'] = $myrow['nom_champ2'];
$i++;
}


- ou encore

while ($myrow = $xoopsDB->fetchArray($result)) {
$var_array['element'][] = array('elt' => $myrow['nom_champ1'], 'elt2' => ($myrow['nom_champ2']));
}



fetchBoth
fetchBoth($result) équivaut à  mysql_fetch_array( $result, MYSQL_BOTH )
Retourne une ligne du résultat de la requête sous forme d'un tableau associatif et indexé numériquement.
Retourne false si pas (ou plus) de ligne.


getInsertId
getInsertId($db) équivaut à  mysql_insert_id($db).
Retourne l'identifiant généré par la derniêre requête INSERT

Exemple d'utilisation dans une fonction d'enregistrement dans la Bdd

function store($id=null) {

if (empty($id)) {
// si $id est vide c'est un nouvel enregistrement
$id = $xoopsDB->genId('matable_id_seq');
$sql = 'INSERT INTO '.$xoopsDB->prefix('matable').' (id, title, message) VALUES ('.$id.', '.$xoopsDB->quoteString($title).', '.$xoopsDB->quoteString($message).')';
} else {
// sinon c'est une mise à  jour
$sql = 'UPDATE '.$xoopsDB->prefix('matable').' SET title='.$xoopsDB->quoteString($title).', message='.$xoopsDB->quoteString($message)..' WHERE id='.$id;
}
if (!$result = $xoopsDB->queryF($sql)) {
return false;
}
if (empty($id)) {
$id =$xoopsDB->getInsertId();
}

// on retourne false si la requête à  échoué, sinon on retourne l'id
return $id;
}



getRowsNum
getRowsNum($result) équivaut à  mysql_num_rows($result)
Retourne le nombre de lignes d'un résultat provenant d'une requête SELECT.
Permet de vérifier que l'on a au moins un résultat, ou de compter le nombre de lignes.

Exemple de vérification d'au moins une ligne de résultat

if ( !$row = $xoopsDB->getRowsNum($result) ) {
redirect_header( "index.php", 1, _AM_NOEXIST ); // aucun résultat à  afficher, on sort
exit();
}


getAffectedRows
getAffectedRows($db) équivaut à  mysql_affected_rows($db).
Retourne le nombre de lignes affectées par une requête INSERT, DELETE ou UPDATE.


quoteString
Retourne la chaine de caractêres passée en paramêtre avec des quotes simples.
A utiliser systématiquement pour toute chaine de caractêres avant enregistrement dans la Bdd.

Exemple dans une requête de mise à  jour

$sql = 'UPDATE '. $xoopsDB->prefix('xoopsheadline').' SET headline_name='. $xoopsDB->quoteString($headline_name).',



freeRecordSet
freeRecordSet() équivaut à  mysql_free_result($result).
Libération de la mémoire utilisée par $result.
Mentionnée pour mémoire.


error
error() équivaut à  mysql_error().
Retourne le message d'erreur généré par la derniêre requête, ou chaine vide si pas d'erreur.

errno
errno() équivaut à  mysql_errno()
Retourne le numéro de l'erreur généré par la derniêre requête.


queryFromFile
Execute la requête contenue dans le fichier $file passé en paramêtre (fichier dump SQL).
Utilisé en particulier pour l'installation (ou l'upgrade) de Xoops. Voir fichier install/index.php.

queryFromFile (string $file)


genId
Génération d'un id avant insertion d'un enregistrement.
Pour la compatibilité avec d'autres bases (pas d'action avec mysql : auto-incrément)

genId(string $sequence)

$sequence string composée du nom de la table, de l'id et de 'seq', séparation des mots par underscore

Exemple

$headline_id = $xoopsDB->genId('xoopsheadline_headline_id_seq');
$sql = 'INSERT INTO '. $xoopsDB->prefix('xoopsheadline').' (headline_id, ....


Retour au sommaire


Version Xoops de référence: 2.06
C. Felix AKA theCat le 01/06/04

Page:
« 1 (2) 3 »
Licence, certains droits réservés
Partager Twitter Partagez cette article sur GG+
  Voir cet article en format PDF Imprimer cet article Envoyer cet article

Naviguer à travers les articles
Article précédent Création de formulaires Mémento Smarty Article suivant
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

36 Personne(s) en ligne (1 Personne(s) connectée(s) sur Documentations) | Utilisateur(s): 0 | Invité(s): 36 | Plus ...