Présentation

Walousql est un SGBD (système de gestion de base de données) en PHP prêt à l'emploi qui ne nécessite aucun autre moteur, logiciel ou extension. Les données sont directement stockées au même endroit que vos scripts. Ainsi, vous n’avez pas à gérer un SGBD lourd (ex. Oracle, PosgreSQL, MsSQL, MySQL ou MariaDB) et leurs inconvénients :

  • Maintenance du SGBD
  • Failles de sécurité
  • Gestion des utilisateurs et de leurs autorisations
  • Création et modification des bases de données et des tables
  • ...

Walousql stocke donc les données sur votre serveur dans des documents type « texte » qui ne sont : ni au format TXT, ni au format CSV, ni au format TSV, ni au format XML, ni même au format JSON, mais au format… PHP !

Les données sont écrites grâce aux fonctions PHP var_export et file_put_contents (ou fopen, fwrite et fclose suivant la version de PHP).
Les données sont lues grâce à un simple include.
Ainsi, les données sont enregistrées totalement en PHP en concervant leur type.

Grâce à ce fonctionnement très simple, Walousql est probablement le SGBD pour PHP le plus simple.
Walousql a été développé et testé en PHP 7, mais il doit être compatible PHP 4.2, et PHP 5.

Des tests ont été effectués avec des enregistrements de 45 colonnes. Sans modifier la gestion de la mémoire, Walousql a pu ajouter 166 827 enregistrements.

Ses performances ont été comparées à celles de MySQL en ajoutant les mêmes enregistrements de 45 colonnes :

Comparaison MySQL walousql
Jusqu'à 1600 nouveaux enregistrements en 30 secondes, walousql est plus performant que MySQL !

Ainsi, Walousql est particulièrement adapté aux scripts et aux sites Internet ne gérant pas plus de 2000 enregistrements.

Téléchargement

Pour télécharger Walousql, rendez-vous sur la page GitHub du projet ou télécharger directement l'archive ZIP :

Aller sur la page GitHub Télécharger l'archive

Installation

Le document walousql-master.zip décompressé, vous trouverez l'arborescence suivante :

  • walousql (dossier à copier sur le serveur)
    • data (dossier où sont stockés les données)
      • sampleTable.table.php (exemple de table)
    • src
      • walousql.inc.php (définition de la class Walousql)
  • README.md
  • sample.php

Pour utiliser Walousql, il vous suffit de copier le dossier walousql sur votre serveur, directement à la racine de votre site Internet, ou dans un autre dossier (ex. includes).

Premiers pas

Théoriquement, Walousql peut enregistrer n'importe quel type (en sens propre) de données. Mais comme il s'agit d'un SGBD, les données que vous stockerez seront des tableau (array()).

Il est donc important de rappeler les deux types de tableaux en PHP :

  • Les tableaux associatifs
  • Les tableaux indexés sans clé

Suivant les cas, vous utiliserez l'un des ces deux types, que Walousql gère sans problème.

Tableaux associatifs

Les tableaux associatifs consistent en un ensemble de couples clé=>valeur séparés entre eux par des virgules.

Exemple
<?php
$products = array(
	'tomatoKey' => array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Vegetable',
	),
	'bananaKey' => array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
);

var_export($products);

var_export($products['tomatoKey']);

foreach ($products as $key => $product){
	echo $key . ' --> ' . $product['name'] . ' : ' .  $product['color'] . ' ' . $product['type'] . "\n";
}
?>
L'exemple ci-dessus va afficher :
array (
  'tomatoKey' => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Vegetable',
  ),
  'bananaKey' => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
)

array (
  'name' => 'Tomato',
  'color' => 'Red',
  'type' => 'Vegetable',
)

tomatoKey --> Tomato : Red Vegetable
bananaKey --> Banana : Yellow Fruit

Tableaux indéxes sans clé

Les tableaux indéxes sans clé consistent en un ensemble de valeurs sans préciser de clé. C'est le PHP qui affectera directement une clé (0, 1, 2, etc.) aux valeurs.

Exemple
<?php
$products = array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Vegetable',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
);

var_export($products);

var_export($products[0]);

foreach ($products as $key => $product){
	echo $key . ' --> ' . $product['name'] . ' : ' .  $product['color'] . ' ' . $product['type'] . "\n";
}
?>
L'exemple ci-dessus va afficher :
array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Vegetable',
  ),
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
)

array (
  'name' => 'Tomato',
  'color' => 'Red',
  'type' => 'Vegetable',
)

0 --> Tomato : Red Vegetable
1 --> Banana : Yellow Fruit

Premier script

Après avoir copié le dossier walousql à la racine, vous pouvez créer le script suivant qui ajoute des produits et qui les lit :

<?php
// Include the definition of the class walousql
include 'walousql/src/walousql.inc.php';

// Create new walousql object
$walousql = new walousql();

// Insert four items
$walousql->add(array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Cucumber',
		'color' => 'Green',
		'type' => 'Vegetable',
	),
	array(
		'name' => 'Orange',
		'color' => 'Orange',
		'type' => 'Fruit',
		'calories' => 47,
	),
));

// Get all items
$res = $walousql->selectAll();

// Print the items
var_export($res);
?>
L'exemple ci-dessus va afficher :
array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
  2 => 
  array (
    'name' => 'Cucumber',
    'color' => 'Green',
    'type' => 'Vegetable',
  ),
  3 => 
  array (
    'name' => 'Orange',
    'color' => 'Orange',
    'type' => 'Fruit',
    'calories' => 47,
  ),
)

Fonctions PHP

A propos des exemples

Pour illustrer les fonctions, des exemples vous sont proposés. Pour plus de lisibilité, les accès aux données en écriture et en lecture sont sur les mêmes scripts.
Evidemment, les exemples fonctionnent tous aussi bien sur des scripts différents :

add.php :
<?php
include 'walousql/src/walousql.inc.php';

$walousql = new walousql();
$walousql->add(array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));
?>
selectall.php :
<?php
include 'walousql/src/walousql.inc.php';

$walousql = new walousql();
$res = $walousql->selectAll();
var_export($res);
?>
selectall.php va afficher :
array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
)


new walousql

Crée un nouvel objet walousql

Description

new walousql ( [mixed $dataPath] ) : object

Paramètre
  • dataPath
    Dossier contenant les tables
    Par défaut, la valeur de ce paramètre est walousql/data/
Exemple
<?php
include 'walousql/src/walousql.inc.php';

$walousql = new walousql();
?>
Exemple en imposant le dossier contenant les tables
<?php
include 'walousql/src/walousql.inc.php';

$walousql = new walousql('/var/www/data');
?>

getDataPath

Récupère le chemin absolu du dossier contenant les tables

Description

getDataPath () : string

Exemple
<?php
include 'walousql/src/walousql.inc.php';

$walousql = new walousql();
$data_path = $walousql->getDataPath();
echo $data_path; // /var/www/html/my-website.com/walousql/src/../data/
?>

setTable

Appelle la table passée en paramètre

Description

setTable ( string $table [,boolean $force = false] ) : boolean

Paramètres
  • table
    Nom de la table appelée
  • force
    Force la relecture de la table
    Quand setTable est appelé une première fois, walousql lit la table stockée sur le serveur. Si setTable est rappelé une seconde fois dans le même script, walousql lit à nouveau la table sur le serveur uniquement si la valeur de ce paramètre est true.
Exemple
<?php
include 'walousql/src/walousql.inc.php';

$walousql = new walousql();
$res = $walousql->setTable('sampleTable');

echo $res; // 1
?>

getTable

Récupère la table en cours

Description

getTable () : string

Exemples
<?php
include 'walousql/src/walousql.inc.php';

$walousql = new walousql();
$table = $walousql->getTable();

echo $table; // default
?>
Exemple après avoir appelé une table avec setTable :
<?php
include 'walousql/src/walousql.inc.php';

$walousql = new walousql();
$walousql->setTable('sampleTable');
$table = $walousql->getTable();

echo $table; // sampleTable
?>

getTablePath

Récupère le chemin absolu de la table en cours

Description

getTablePath () : string

Exemple
<?php
include 'walousql/src/walousql.inc.php';

$walousql = new walousql();
$data_path = $walousql->getTablePath();

echo $data_path; // /var/www/html/my-website.com/walousql/src/../data/default.table.php
?>
Exemple après avoir appelé une table avec setTable :
<?php
include 'walousql/src/walousql.inc.php';

$walousql = new walousql();
$walousql->setTable('sampleTable');
$data_path = $walousql->getTablePath();

echo $data_path; // /var/www/html/my-website.com/walousql/src/../data/sampleTable.table.php
?>

add

- Tableau associatif : il est recommandé d'utiliser la fonction set.
- Tableau indexé sans clé : ajoute des éléments.
La fonction add renvoie le tableau des clés du paramètre $rows dans la table.

Description

add ( array $rows ) : array

Paramètre
  • rows
    Elément(s) à ajouter
Exemple
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$res = $walousql->add(array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));
var_export($res);

$res = $walousql->selectAll();
var_export($res);

$res = $walousql->add(array(
	array(
		'name' => 'Cucumber',
		'color' => 'Green',
		'type' => 'Vegetable',
	),
	array(
		'name' => 'Orange',
		'color' => 'Orange',
		'type' => 'Fruit',
	),
));
var_export($res);

$res = $walousql->selectAll();
var_export($res);
?>
L'exemple ci-dessus va afficher :
array (
  0 => 0,
  1 => 1,
)

array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
)

array (
  0 => 2,
  1 => 3,
)

array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
  2 => 
  array (
    'name' => 'Cucumber',
    'color' => 'Green',
    'type' => 'Vegetable',
  ),
  3 => 
  array (
    'name' => 'Orange',
    'color' => 'Orange',
    'type' => 'Fruit',
  ),
)
Exemple avec deux tables
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$walousql->setTable('types');
$types_keys = $walousql->add(array(
	array('name' => 'Fruit'),
	array('name' => 'Vegetable'),
));
var_export($types_keys);

$walousql->setTable('products');
$types_keys = $walousql->add(array(
	array(
		'name' => 'Banana',
		'id_type' => $types_keys[0],	// Key for 'Fruit'
	),
	array(
		'name' => 'Cucumber',
		'id_type' => $types_keys[1],	// Key for 'Vegetable'
	),
));
$products = $walousql->selectAll();
var_export($products);

$walousql->setTable('types');
$types = $walousql->selectAll();

foreach ($products as $product){
	echo $product['name'] . ' : ' . $types[$product['id_type']]['name'] . "\n";
}
?>
L'exemple ci-dessus va afficher :
array (
  0 => 0,
  1 => 1,
)

array (
  0 => 
  array (
    'name' => 'Banana',
    'id_type' => 0,
  ),
  1 => 
  array (
    'name' => 'Cucumber',
    'id_type' => 1,
  ),
)

Banana : Fruit
Cucumber : Vegetable

set

- Tableau associatif : Ajoute un nouvel élément ou le met à jour s'il existe déjà
- Tableau indexé sans clé : met à jour un élément. Pour ajouter des éléments, il est recommandé d'utiliser la fonction add.
La fonction set renvoie le tableau des clés du paramètre $rows.

Description

set ( array $rows [,boolean $erase = false] ) : array

Paramètres
  • rows
    Elément(s) à ajouter ou mettre à jour
  • erase
    Dans le cas de la mise à jour d'élément existant, ce paramètre permet :
    - De mettre à jour uniquement les colonnes indiquées : $erase = false
    - De réinitialiser totalement l'élément : $erase = true
    Par défaut, la valeur de ce paramètre est false
Exemple - tableau associatif
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$res = $walousql->set(array(
	'tomatoKey' => array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Vegetable',
	),
	'bananaKey' => array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));
var_export($res);

$walousql->set(array(
	'tomatoKey' => array(
		'type' => 'Fruit',
	),
));
$res = $walousql->selectAll();
var_export($res);

$walousql->set(array(
	'bananaKey' => array(
		'color' => 'Yellow or black',
	),
), true);
$res = $walousql->selectAll();
var_export($res);
?>
L'exemple ci-dessus va afficher :
array (
  0 => 'tomatoKey',
  1 => 'bananaKey',
)

array (
  'tomatoKey' => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  'bananaKey' => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
)

array (
  'tomatoKey' => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  'bananaKey' => 
  array (
    'color' => 'Yellow or black',
  ),
)
Exemple - tableau indexé sans clé
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$products_keys = $walousql->set(array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Vegetable',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));
var_export($products_keys);

$walousql->set(array(
	$products_keys[0] => array(	// Key for 'Tomato'
		'type' => 'Fruit',
	),
));
$res = $walousql->selectAll();
var_export($res);

$walousql->set(array(
	$products_keys[1] => array(	// Key for 'Banana'
		'color' => 'Yellow or black',
	),
), true);
$res = $walousql->selectAll();
var_export($res);
?>
L'exemple ci-dessus va afficher :
array (
  0 => 0,
  1 => 1,
)

array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
)

array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  1 => 
  array (
    'color' => 'Yellow or black',
  ),
)

selectAll

Retourne tous les éléments de la table

Description

selectAll ( [array $order = null] ) : array

Paramètre
  • order
    Ordre de classement
Exemple - tableau associatif
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$walousql->set(array(
	'tomatoKey' => array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Vegetable',
	),
	'bananaKey' => array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));

$res = $walousql->selectAll();
var_export($res);

$res = $walousql->selectAll(array('name' => SORT_ASC));
var_export($res);

$res = $walousql->selectAll(array('type' => SORT_ASC, 'color' => SORT_DESC));
var_export($res);
?>
L'exemple ci-dessus va afficher :
array (
  'tomatoKey' => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Vegetable',
  ),
  'bananaKey' => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
)

array (
  'bananaKey' => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
  'tomatoKey' => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Vegetable',
  ),
)

array (
  'bananaKey' => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
  'tomatoKey' => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Vegetable',
  ),
)
Exemple - tableau indexé sans clé
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$walousql->set(array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Vegetable',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));

$res = $walousql->selectAll();
var_export($res);

$res = $walousql->selectAll(array('name' => SORT_ASC));
var_export($res);

$res = $walousql->selectAll(array('type' => SORT_ASC, 'color' => SORT_DESC));
var_export($res);
?>
L'exemple ci-dessus va afficher :
array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Vegetable',
  ),
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
)

array (
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Vegetable',
  ),
)

array (
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Vegetable',
  ),
)

selectByKey

Retourne l'élément renseigné par la clé passée en paramètre
Si aucun élément ne correspond à la clé passée en paramètre, selectByKey renvoie false

Description

selectByKey ( mixed $key ) : array

Paramètre
  • key
    Clé dont on veut récupérer l'éléments
Exemple - tableau associatif
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$walousql->set(array(
	'tomatoKey' => array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Vegetable',
	),
	'bananaKey' => array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));

$res = $walousql->selectByKey('tomatoKey');
var_export($res);

$res = $walousql->selectByKey('cucumberKey');
var_export($res);
?>
L'exemple ci-dessus va afficher :
array (
  'name' => 'Tomato',
  'color' => 'Red',
  'type' => 'Vegetable',
)

false
Exemple - tableau indexé sans clé
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$walousql->add(array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));

$res = $walousql->selectByKey(0);
var_export($res);

$res = $walousql->selectByKey(10);
var_export($res);
?>
L'exemple ci-dessus va afficher :
array (
  'name' => 'Tomato',
  'color' => 'Red',
  'type' => 'Fruit',
)

false


filter

Recherche les éléments d'une table à la façon d'un array_filter en PHP

Description

filter ( callable $callback [, int $flag = 0 [, array $order = null]] ) : array

Paramètre
  • callback
    La fonction de rappel à utiliser
  • flag
    Drapeau indiquant quels sont les arguments à envoyer à la fonction de rappel callback :
    - ARRAY_FILTER_USE_KEY : passer la clé comme seul argument à callback au lieu de la valeur.
    - ARRAY_FILTER_USE_BOTH : passer à la fois la valeur et la clé comme arguments de callback au lieu de la valeur.
    Par défaut 0 par défaut qui passera la valeur comme seul argument de callback.
  • order
    Ordre de classement
Exemple
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$walousql->add(array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Cucumber',
		'color' => 'Green',
		'type' => 'Vegetable',
	),
	array(
		'name' => 'Orange',
		'color' => 'Orange',
		'type' => 'Fruit',
	),
));

echo "Vegetables : \n";
$res = $walousql->filter(function($value){
	return $value['type'] == 'Vegetable';
});
var_export($res);

echo "Fruits in alphabetical order : \n";
$res = $walousql->filter(function($value){
	return $value['type'] == 'Fruit';
}, 0, ['name' => SORT_ASC]);
var_export($res);
?>
L'exemple ci-dessus va afficher :
Vegetables : 
array (
  2 => 
  array (
    'name' => 'Cucumber',
    'color' => 'Green',
    'type' => 'Vegetable',
  ),
)

Fruits in alphabetical order : 
array (
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
  3 => 
  array (
    'name' => 'Orange',
    'color' => 'Orange',
    'type' => 'Fruit',
  ),
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
)

deleteByKey

Supprime le ou les éléments renseignés par la clé ou le tableau de clés passé en paramètre
Si au moins un élément est supprimé, selectByKey renvoie true
Si aucun élément ne correspond à la clé passée en paramètre, selectByKey renvoie false

Description

deleteByKey ( mixed $key ) : boolean

Paramètre
  • key
    Clé ou tableau de clés dont on veut supprimer les éléments
Exemple - tableau associatif
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$res = $walousql->set(array(
	'tomatoKey' => array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Fruit',
	),
	'bananaKey' => array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
	'cucumberKey' => array(
		'name' => 'Cucumber',
		'color' => 'Green',
		'type' => 'Vegetable',
	),
	'orangeKey' => array(
		'name' => 'Orange',
		'color' => 'Orange',
		'type' => 'Fruit',
	),
));

$res = $walousql->deleteByKey('bananaKey');
echo $res;

$res = $walousql->selectAll();
var_export($res);

$res = $walousql->deleteByKey(array('tomatoKey', 'cucumberKey'));
echo $res;

$res = $walousql->selectAll();
var_export($res);

$res = $walousql->deleteByKey('bananaKey');
echo $res;
?>
L'exemple ci-dessus va afficher :
true

array (
  'tomatoKey' => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  'cucumberKey' => 
  array (
    'name' => 'Cucumber',
    'color' => 'Green',
    'type' => 'Vegetable',
  ),
  'orangeKey' => 
  array (
    'name' => 'Orange',
    'color' => 'Orange',
    'type' => 'Fruit',
  ),
)

true

array (
  'orangeKey' => 
  array (
    'name' => 'Orange',
    'color' => 'Orange',
    'type' => 'Fruit',
  ),
)

false
Exemple - tableau indexé sans clé
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$walousql->add(array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Cucumber',
		'color' => 'Green',
		'type' => 'Vegetable',
	),
	array(
		'name' => 'Orange',
		'color' => 'Orange',
		'type' => 'Fruit',
	),
));

$res = $walousql->deleteByKey(1);
echo $res;

$res = $walousql->selectAll();
var_export($res);

$res = $walousql->deleteByKey(array(0, 2));
echo $res;

$res = $walousql->selectAll();
var_export($res);

$res = $walousql->deleteByKey(10);
echo $res;
?>
L'exemple ci-dessus va afficher :
true

array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  2 => 
  array (
    'name' => 'Cucumber',
    'color' => 'Green',
    'type' => 'Vegetable',
  ),
  3 => 
  array (
    'name' => 'Orange',
    'color' => 'Orange',
    'type' => 'Fruit',
  ),
)

true

array (
  3 => 
  array (
    'name' => 'Orange',
    'color' => 'Orange',
    'type' => 'Fruit',
  ),
)

false

deleteAll

Supprime tous les éléments d'un tableau
Si des éléments sont supprimés, deleteAll renvoie true
Si le tableau était déjà vide, deleteAll renvoie false

Description

deleteAll ( [boolean $destroyTable = false] ) : boolean

Paramètre
  • destroyTable
    Force à détruire complètement la table.

    Ce paramètre est uniquement utile dans le cas d'un tableau indexé sans clé :
    - Si destroyTable est false, les clés des éléments ajoutés s'incrémenteront à la suite des éléments supprimés.
    - Si destroyTable est true, les clés des éléments ajoutés recommenceront à 0.
Exemple - tableau associatif
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$res = $walousql->set(array(
	'tomatoKey' => array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Fruit',
	),
	'bananaKey' => array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));

$res = $walousql->deleteAll();
echo $res;				// true

$res = $walousql->selectAll();
var_export($res);		// array()

$res = $walousql->deleteAll();
echo $res;				// false
?>
Exemples - tableau indexé sans clé - destroyTable = false
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$walousql->add(array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));

$res = $walousql->selectAll();
var_export($res);

$walousql->deleteAll();

$walousql->add(array(
	array(
		'name' => 'Cucumber',
		'color' => 'Green',
		'type' => 'Vegetable',
	),
	array(
		'name' => 'Orange',
		'color' => 'Orange',
		'type' => 'Fruit',
	),
));

$res = $walousql->selectAll();
var_export($res);
?>
L'exemple ci-dessus va afficher :
array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
)

array (
  2 => 
  array (
    'name' => 'Cucumber',
    'color' => 'Green',
    'type' => 'Vegetable',
  ),
  3 => 
  array (
    'name' => 'Orange',
    'color' => 'Orange',
    'type' => 'Fruit',
  ),
)
Exemples - tableau indexé sans clé - destroyTable = true
<?php
include 'walousql/src/walousql.inc.php';
$walousql = new walousql();

$walousql->add(array(
	array(
		'name' => 'Tomato',
		'color' => 'Red',
		'type' => 'Fruit',
	),
	array(
		'name' => 'Banana',
		'color' => 'Yellow',
		'type' => 'Fruit',
	),
));

$res = $walousql->selectAll();
var_export($res);

$walousql->deleteAll(true);

$walousql->add(array(
	array(
		'name' => 'Cucumber',
		'color' => 'Green',
		'type' => 'Vegetable',
	),
	array(
		'name' => 'Orange',
		'color' => 'Orange',
		'type' => 'Fruit',
	),
));

$res = $walousql->selectAll();
var_export($res);
?>
L'exemple ci-dessus va afficher :
array (
  0 => 
  array (
    'name' => 'Tomato',
    'color' => 'Red',
    'type' => 'Fruit',
  ),
  1 => 
  array (
    'name' => 'Banana',
    'color' => 'Yellow',
    'type' => 'Fruit',
  ),
)

array (
  0 => 
  array (
    'name' => 'Cucumber',
    'color' => 'Green',
    'type' => 'Vegetable',
  ),
  1 => 
  array (
    'name' => 'Orange',
    'color' => 'Orange',
    'type' => 'Fruit',
  ),
)

Gestion manuelle

Le dossier walousql/data/ (ou le $dataPath spécifié par dans new walousql()) contient les tables. Chaque document de ce dossier correspond à une table. Les documents se termine par ".table.php".
Vous pouvez effectuer plusieurs opérations sur les tables en manipulant ces documents :

  • Pour supprimer la table sampleTable, supprimez le document sampleTable.table.php
  • Pour supprimer et sauvegarder la table sampleTable, renommez le document sampleTable.table.php en SampleTable-bak.table.php
  • Pour renommer la table sampleTable en newSampleTable, renommez le document sampleTable.table.php en newSampleTable.table.php
  • Pour ajouter, supprimer ou modifier des éléments de la table sampleTable, éditez sampleTable.table.php

Qui utilise Walousql ?

Les Tontons du Net

Vous avez choisi d'utiliser Walousql pour votre site Internet ?

Merci de nous le faire savoir en envoyant un mail à : support@kaixo.fr