Index: phpdoc/fr/functions/dbx.xml
+++ phpdoc/fr/functions/dbx.xml
dbxdbx
Le module dbx est un module d'abstraction de base de données
(db pour database (base de données) et 'X' pour toutes les
bases supportées). Les fonctions dbx vous permettent d'accéder
à toutes les bases supportées, avec la même convention. Pour cela
il vous faut avoir ces fonctions compilées avec PHP (option
de configuration
et toutes les bases que vous souhaitez utiliser. Par exemple, si
vous voulez accéder à MySQL depuis dbx, vous devez aussi configurer
PHP avec
.
Les fonctions dbx n'interface pas directement les bases de
données, mais utilise les modules de support de ces bases.
Pour pouvoir utiliser une base avec le module dbx, il vous
faut l'avoir configuré avec PHP, ou bien la charger
dynamiquement. Actuellement les bases MySQL, PostgreSQL et
ODBC sont supportées, mais d'autres suivront bientôt (j'espère).
La documentation complémentaire (ajout de nouvelles bases à dbx) est
accessible à &url.dbx.docs;.
dbx_closeFerme une connexion à une baseDescriptionboolean dbx_closeresource link_identifierdbx_close retourne TRUE en cas
de succès, et FALSE en cas d'erreur.
Exemple avec dbx_close
<?php
$link = dbx_connect("mysql", "localhost", "base", "utilisateur", "mot de passe")
or die ("Impossible de se connecter");
print("Connexion réussie");
dbx_close($link);
?>
Reportez vous aussi à documentation de la base de données que vous
utilisez.
Voir aussi
dbx_connect.
dbx_connectOuvre une connexion à une base de donnéesDescriptionresource dbx_connectstring modulestring hoststring databasestring usernamestring passwordint
persistentdbx_connect retourne une resource dbx_link_object
en cas de succès, FALSE sinon. Si la connexion a
put être établie, mais que la base de données n'a pas pu
être selectionnée, la fonction retournera quand même une ressource.
Le paramètre persistent peut prendre la
valeur DBX_PERSISTENT, pour créer une connexion persitante.
Les valeurs possibles de module sont
les suivantes (n'oubliez pas que cela fonctionnera que si
le module associé est chargé):
module 1: "mysql"
module 2: "odbc"
module 3: "pgsql"
Le support de pgsql est au stade expérimental, et vous devez
compiler vous-même le module pgsql après avoir modifié un
des fichiers sources. Sinon, vous aurez une alerte affichée
à chaque requête.
La ressource dbx_link_object a trois membres : 'handle', 'module' et
'database'. Le membre 'database' contient le nom de la base de données
actuellement selectionnée. Le membre 'module' est à usage interne à
dbx, et contient le numéro de module sus-cité. Le membre
'handle' est une resource valide de connexion à la base de données,
et peut être utilisé en tant que tel dans les autres fonctions
spécifiques à cette base de données.
<?php
$link = dbx_connect("mysql", "localhost", "base de données", "utilisateur", "mot de passe");
mysql_close($link->handle);
// dbx_close($link) est beaucoup plus adapté ici
?>
Les paramètres host, database,
username et password sont
attendus, mais ne sont pas toujours utiles, suivant la fonction de connexion
de la base de données utilisée.
Exemple avec dbx_connect
<?php
$link = dbx_connect("odbc", "", "base de données", "utilisateur", "mot de passe", DBX_PERSISTENT)
or die ("Impossible de se connecter");
print ("Connexion réussie");
dbx_close($link);
?>
Reportez vous aussi à documentation de la base de données que vous
utilisez.
Voir aussi
dbx_close.
dbx_error
Rapporte le message d'erreur du dernier appel de fonction
Descriptionstring dbx_errorresource link_identifierdbx_error retourne une chaîne contenant le
message d'erreur du module sélectionné. S'il y a des connexions
multiples sur le même module, seule la dernière erreur est fournie.
S'il a des des connexions sur différents modules, la dernière
erreur du module est retourné (le module est alors représenté par
link_identifier). Notez que le module
ODBC ne supporte pas encore cette fonction.
Exemple avec dbx_error
<?php
$link = dbx_connect("mysql", "localhost", "base de données", "utilisateur", "mot de passe")
or die ("Impossible de se connecter");
$result = dbx_query($link, "select id from nonexistingtbl");
if ($result==0) {
echo dbx_error($link);
}
dbx_close($link);
?>
Reportez vous aussi à documentation de la base de données que vous
utilisez.
dbx_queryEnvoie une requête et lit tous les résultatsDescriptionresource dbx_queryresource link_identifierstring sql_statementlong
flagsdbx_query retourne une resource
dbx_result_object ou 1 en cas de succès (un objet de résultat
ne sera retourné que pour les requêtes SQL qui retournent un
résultat), ou 0 en cas d'erreur. Le paramètre
flags sert à contrôler la quantité
d'informations retournée. Il peut être n'importe quelle
combinaisons par OR des constantes : DBX_RESULT_INFO,
DBX_RESULT_INDEX, DBX_RESULT_ASSOC. DBX_RESULT_INFO fournit
des informations sur les colonnes, comme les noms des champs
et leur type. DBX_RESULT_INDEX retourne le résultat dans un
tableau indexé (par exemple, data[2][3], où 2 est le numéro
de ligne et 3 est le numéro de colonne), dont la première
colonne est indexée à 0. DBX_RESULT_ASSOC associe les noms
de colonnes avec leurs indices. Notez que DBX_RESULT_INDEX est
toujours retourné, indépendamment de la valeur de
flags. Si DBX_RESULT_ASSOC est spécifié,
DBX_RESULT_INFO est aussi retourné, même s'il n'a pas été
spécifié. Ce qui signifie que les seules combinaisons envisageables
sont
DBX_RESULT_INDEX,
DBX_RESULT_INDEX | DBX_RESULT_INFO et
DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC. La dernière
combinaison est la valeur par défaut de flags.
Les résultats associés sont en fait des références, ce qui fait que
modifier data[0][0], revient à modifier
data[0]['fieldnameforfirstcolumn'].
Un objet dbx_result_object a 5 membres (éventuellement 4, suivants
les valeurs de flags) : 'handle', 'cols', 'rows',
'info' (optionnel) et 'data'. Handle est un identifiant de résultat,
qui peut être utilisé avec les fonctions spécifiques à son module.
Par exemple :
<?php
$result = dbx_query($link, "SELECT id FROM tbl");
mysql_field_len($result->handle, 0);
?>
Les membres cols et rows contiennent les numéros de colonne et de
champs.
<?php
$result = dbx_query($link, "SELECT id FROM tbl");
echo "Taille du résultat: " . $result->rows . " x " . $result->cols . "<br>\n";
?>
Le membre info n'est retourné que si DBX_RESULT_INFO et/ou
DBX_RESULT_ASSOC sont spécifié dans le paramètre flags.
C'est un deuxième tableau, qui possède deux lignes ("name" and "type"),
pour connaître les informations sur les colonnes.
<?php
$result = dbx_query($link, "SELECT id FROM tbl");
echo "Nom de la colonne : " . $result->info["name"][0] . "<br>\n";
echo "Type de la colonne: " . $result->info["type"][0] . "<br>\n";
?>
Le membre data contient les données effectivement lues,
éventuellement associées à des noms de colonnes. Si
DBX_RESULT_ASSOC est utilisé, il est possible d'utiliser
$result->data[2]["fieldname"].
Exemple avec dbx_query
<?php
$link = dbx_connect("odbc", "", "base de données", "utilisateur", "mot de passe")
or die ("Impossible de se connecter");
$result = dbx_query($link, "SELECT id, parentid, description FROM tbl");
if ($result==0) echo "La requête a échoué\n<br>";
elseif ($result==1) {
echo "La requête a réussie\n<br>";
} else {
$rows=$result->rows;
$cols=$result->cols;
echo "<p>table dimension: {$result->rows} x {$result->cols}<br><table border=1>\n";
echo "<tr>";
for ($col=0; $col<$cols; ++$col) {
echo "<td>-{$result->info["name"][$col]}-<br>-{$result->info["type"][$col]}-</td>";
}
echo "</tr>\n";
for ($row=0; $row<$rows; ++$row){
echo "<tr>";
for ($col=0; $col<$cols; ++$col) {
echo "<td>-{$result->data[$row][$col]}-</td>";
}
echo "</tr>\n";
}
echo "</table><p>\n";
echo "table dimension: {$result->rows} x id, parentid, description<br><table border=1>\n";
for ($row=0; $row<$rows; ++$row) {
echo "<tr>";
echo "<td>-{$result->data[$row]["id"]}-</td>";
echo "<td>-{$result->data[$row]["parentid"]}-</td>";
echo "<td>-{$result->data[$row]["description"]}-</td>";
echo "</tr>\n";
}
echo "</table><p>\n";
}
dbx_close($link);
?>
Reportez vous aussi à documentation de la base de données que vous
utilisez.
Voir aussi
dbx_connect.
dbx_sort
Tri un résultat avec une fonction utilisateur
Descriptionboolean dbx_sortdbx_result_object resultstring
user_compare_functiondbx_sort retourne TRUE
en cas de succès, et FALSE sinon.
Exemple avec dbx_sort
<?php
function user_re_order ($a, $b) {
$rv = dbx_cmp_asc($a, $b, "parentid");
if (!$rv) $rv = dbx_cmp_asc($a, $b, "id");
return $rv;
}
$link = dbx_connect("odbc", "", "base de données", "utilisateur", "mot de passe")
or die ("Impossible de se connecter");
$result = dbx_query($link, "SELECT id, parentid, description FROM tbl ORDER BY id");
echo "Les données sont maintenant triées par id<br>";
dbx_query($result, "user_re_order");
echo "Les données sont maintenant triées par parentid, puis par id<br>";
dbx_close($link);
?>
Voir aussi
dbx_cmp_asc et
dbx_cmp_desc.
dbx_cmp_ascCompare deux lignes pour tri croissantDescriptionint dbx_cmp_ascarray row_aarray row_bstring columnname_or_indexdbx_cmp_asc retourne 0 si row_a[$columnname_or_index]
est égal à row_b[$columnname_or_index], 1 si elle est plus grande et
-1 si elle est plus petite.
Exemple avec dbx_cmp_asc
<?php
function user_re_order($a, $b) {
$rv = dbx_cmp_asc($a, $b, "parentid");
if (!$rv) {
$rv = dbx_cmp_asc($a, $b, "id");
return $rv;
}
}
$link = dbx_connect("odbc", "", "base de données", "utilisateur", "mot de passe")
or die ("Impossible de se connecter");
$result = dbx_query($link, "SELECT id, parentid, description FROM tbl ORDER BY id");
echo "Les données sont maintenant triées par id<br>";
dbx_query($result, "user_re_order");
echo "Les données sont maintenant triées par parentid, puis par id<br>";
dbx_close($link);
?>
Voir aussi
dbx_sort et
dbx_cmp_desc.
dbx_cmp_descCompare deux lignes pour tri décroissantDescriptionint dbx_cmp_descarray row_aarray row_bstring
columnname_or_indexdbx_cmp_desc retourne 0 si row_a[$columnname_or_index]
est égal à row_b[$columnname_or_index], 1 si elle est plus grande et
-1 si elle est plus petite.
Exemple avec dbx_cmp_desc
<?php
function user_re_order ($a, $b) {
$rv = dbx_cmp_asc($a, $b, "parentid");
if (!$rv) {
$rv = dbx_cmp_asc($a, $b, "id");
return $rv;
}
}
$link = dbx_connect("odbc", "", "base de données", "utilisateur", "mot de passe")
or die ("Impossible de se connecter");
$result = dbx_query($link, "SELECT id, parentid, description FROM tbl ORDER BY id");
echo "Les données sont maintenant triées par id<br>";
dbx_query($result, "user_re_order");
echo "Les données sont maintenant triées par parentid, puis par id<br>";
dbx_close($link);
?>
Voir aussi
dbx_sort et
dbx_cmp_asc.