Index: phpdoc/fr/functions/dbx.xml +++ phpdoc/fr/functions/dbx.xml dbx dbx 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_close Ferme une connexion à une base Description boolean dbx_close resource link_identifier dbx_close retourne TRUE en cas de succès, et FALSE en cas d'erreur. Exemple avec <function>dbx_close</function> <?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_connect Ouvre une connexion à une base de données Description resource dbx_connect string module string host string database string username string password int persistent dbx_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 <function>dbx_connect</function> <?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 Description string dbx_error resource link_identifier dbx_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 <function>dbx_error</function> <?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_query Envoie une requête et lit tous les résultats Description resource dbx_query resource link_identifier string sql_statement long flags dbx_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 <function>dbx_query</function> <?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 Description boolean dbx_sort dbx_result_object result string user_compare_function dbx_sort retourne TRUE en cas de succès, et FALSE sinon. Exemple avec <function>dbx_sort</function> <?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_asc Compare deux lignes pour tri croissant Description int dbx_cmp_asc array row_a array row_b string columnname_or_index dbx_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 <function>dbx_cmp_asc</function> <?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_desc Compare deux lignes pour tri décroissant Description int dbx_cmp_desc array row_a array row_b string columnname_or_index dbx_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 <function>dbx_cmp_desc</function> <?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.