Sommaire 1. Ouvrir Akata, Se connecter à une base de données, créer une base et une table. 2. La syntaxe des requêtes. 3. Insérer des données. 4. Supprimer et modifier des données. 5. Fonction de sécurité. 6. Récupérer des données. 7. Autres fonctions.
Ouvrir Akata, Se connecter à une base de données, créer une base et une table. Commencez par inclure le fichier f.php : <?php include( akata/f.php ) ;?> Ensuite, déclarez l objet. Dans ce guide, j utiliserai toujours $ak comme variable objet. $ak=new Akata() ; (Pas de constructeur) Il faut désormais ouvrir le dossier, pour cela, il faut spécifier où il se trouve (sans de slash à la fin). (sauf si c est akata à ce moment là vous pouvez laisser vide) et le mot de passe du dossier, à modifier dans config.php. $ak->connect( akata, motdepasse ) ; Une fois cela fait, il suffit de se connecter à une base de données, pour cela, il suffit d utiliser la methode chdb() et de spécifier le nom de la base. Mais avant de faire cela, il faut déjà créer une base de données. Pour cela, il suffit de faire : $ak->new_db( nom_de_la_base ) ; Une fois cela fait, on peut se connecter : $ak->chdb( nom_de_la_base ) ; Avant de vous apprendre à créer une table, je vais vous faire un petit récapitulatif du code : <?php include( akata /f.php ) ; $ak->new Akata(); $ak->connect( akata, motdepasse ); $ak->new_db( nom_de_la_base ); $ak->chdb( nom_de_la_base ) ;?> Maintenant, pour créer une table il suffit de faire new_table(). Mais cette méthode est un peu plus compliquée car elle nécessite d utiliser la Syntaxe Akata. Nous reviendrons plus tard dessus, mais je vais déjà vous donner un exemple : $ak->new_table( ma_table, { ;id :[i] ;pseudo :[1];password:[2];email:[3];},5); Comment ça marche? Le premier argument est simplement le nom de la table, le second est sa définition : On commence par { ; et on termine par ;}, entre ça, on écrit nomdelacolonne :[N]. [N] peut être différent selon l utilisation. Si on veut l auto-increment (pour un id par exemple) on écrit [i], ensuite on écrit 1, 2, 3, etc
Le dernier argument est le nb. C est le nombre qui sert aux calculs d Akata. Pour le trouver c est simple, c est le nombre de colonnes de la table+1. Dans notre exemple il y a 4 colonnes (id,pseudo,password et email) donc l argument sera 4. <?php include( akata /f.php ) ; $ak->new Akata(); $ak->connect( akata, motdepasse ); $ak->new_db( nom_de_la_base ); $ak->chdb( nom_de_la_base ) ; $ak->new_table( ma_table, { ;id :[i] ;pseudo :[1];password:[2];email:[3];},5);?> Voilà! Ce code se connecte, créé une base, ouvre la base et créé une table. Maintenant nous allons apprendre la syntaxe des requêtes. Cela servira pour insérer mais aussi pour modifier et supprimer. La Syntaxe des requêtes. Vous avez pu observer la première syntaxe Akata dans le chapitre précédent : { ; ;}. Figurez-vous que c est presque la même dans les autres cas! Pour insérer des données, il faut spécifier toutes les colonnes, mais pour éditer et supprimer, il suffit juste de spécifier un morceau du code. Pour créer une table, on doit spécifier le nom des colonnes, pour insérer c est pareil mais sans les noms : { ;;Monpseudo ;Monpassword ;mail@d.xx ;} Pourquoi y a-t-il ;; au début? Comme c est un auto-increment, cela sera à rien de spécifier une valeur, donc je peux aussi bien mettre ;toto ; que ;;. Mais pour supprimer ou modifier des données, il suffit de spécifier qu un morceau du code : pseudo :Monpseudo ou encore Monpseudo ;. Cependant, quand on modifie des données, il faut remplacer par un équivalent : Si on remplace ;pseudo :Monpseudo par Tonpseudo, il faudra mettre aussi ;pseudo :Tonpseudo, Car cela doit être identique. Insérer des données. Pour insérer des données, on utilise la méthode ins(). En premier argument on spécifie la table, puis en second les données à insérer avec la syntaxe vue précédemment.
$ak->ins( ma_table, { ;;Monpseudo ;Monpassword ;email@d.xx ;} ) ; Simple non? Nous apprendrons bientôt à sécuriser les données avant de les insérer! En effet, que se passerait-t-il si un utilisateur entrait un point-virgule? Supprimer et modifier des données. Pour supprimer, c est simplement del(table,arguments). Mais l avantage cette fois, c est que nous ne sommes pas obligés de spécifier toute la syntaxe, mais juste une partie, par exemple : $ak->del( ma_table, pseudo :monpseudo ) ; //La case n est pas importante! Pour modifier, c est presque pareil, cette fois avec set(table,arguments,nouveau) : Cette fonctions est exactement pareille, sauf que à la fin il y a un autre argument : il définit par quoi remplacer une valeur. L avantage avec Akata, c est que il n y a pas d ordre pour les aguments. Vous pouvez faire password :pass ;id :1 même si ID est avant password. Mais à ce moment là, vous ne devez ni commencer ni finir avec un point-virgule. Allons-y pour set : $ak->set( ma_table, pseudo :monpseudo, pseudo :Tonpseudo ) ; //La case n est pas importante! Toujours aussi simple non? :p Fonction de sécurité. Les fonctions de sécurité servent dans les scripts où l utilisateur est invité à entrer des données qui seront ensuite stockées dans une table. Si jamais un utilisateur écrit ; ou }, que feriez-vous? Oui oui, str_replace, etc Mais tout cela est déjà fait! Et inclus dans f.php! Vous connaissez urlencode et urldecode? Cela fonctionne pareil. Mais cette fois, ce sont des FONCTIONS et pas des METHODES. Donc pas de $ak-> La fonction pour encoder est : akch(chaine_a_encoder) et pour décoder akunch(chaine_a_decoder). Exemple : $pseudo= { ;;LOOOOL{}} ; $pseudo=akch($pseudo) ; $ak->ins( ma_table, { ;;$pseudo ;pass ;mail ;} ) ; C est tout de suite mieux! Mais il faudra faire akunch une fois les données récupérées. D ailleurs, comment récupérer les données?
Récupérer des données. Là où mysql fait fort, c est le fait de devoir utiliser deux fonctions pour récupérer les données. L avantage, c est vrai, est d avoir une seule fonction pour tout, mais bon. Avec Akata, il suffit d une fonction : get_array(table,arguments). Une fois de plus, il va falloir spécifier des arguments. Mais c est aussi simple que pour del() et set(). Mais le plus dur avec cette fonction, c est d exploiter les données. En effet, elle retourne le tableau suivant : $return[numero_ligne][nom_colonne] Par exemple, si on voulait le pseudo de la première ligne on aurait $r[1][ pseudo ]. Mais avec foreach, c est très simple d exploiter des données. Voici un bout du code de la newsletter : <?php include("akata/f.php"); $ak=new Akata(); $ak->connect("","akata"); $ak->chdb("myfirstdb"); $get=@$ak->get_array("newsletter",""); $i=1; foreach($get[1] as $u){ } if(isset($get[$i])){ } echo "[ID] ".$get[$i]['id']."; [MAIL] ".$get[$i]['mail']."<br />"; $i++;?> C est la partie en rouge la plus interessante. En effet, on peut voir ici la récupération et l affichage de toutes les données. Ici, on utilise une variable ($i) pour limiter l exécution, donc forcément cela fait une variable en plus. Mais il y a des façons plus simples de procéder. Je vous conseille de regarder le code du client fournit avec Akata.
Autres fonctions. Voici la dernière partie de notre petit guide, consacrée aux autres fonctions qui pourront toujours vous servir. Par exemple, certaines sont surtout utiles à Akata mais elles peuvent quand même servir dans des cas particuliers, et d autres sont faites pour des cas particuliers. get_num(table) : récupère le nb de la table (numéro de colonnes+1) get_incr(table) : récupère le numéro de l auto-increment actuel get_data(table) : récupère toutes les données contenues dans une table get_def(table) : récupère la définition de la table get_table_list() : retourne un array contenant la liste des tables de la base actuelle get_col_list(table) : retourne un array contenant la liste des colonnes d une table del_table(table) : supprime une table get_col_num(table) : récupère le nombre de colonnes d une table set_def(table,nouvelle_def) : modifie la définition d une table (Attention à bien modifier le nom dans data aussi) set_num(table,nouveau_num) : modifie le nb d une table set_incr(table,nouveau_incr) : modifie le numéro de l auto-increment actuel Et quel est l équivalent à mysql_num_rows? Eh bien faites un count sur le get_array! ;)