www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 70b04a1d75530dc6e1b9235441b2ac49292fa0ec
parent b54667989f01edf3a44fc8f60f70185424350412
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Thu, 27 Jan 2011 00:58:38 +0100

Ébauche des requêtes du serveur.

Diffstat:
Mcode/serveur/dump2mysql.sh | 27+++++++++++++++------------
Mcode/serveur/php/config.php | 4++--
Mcode/serveur/php/function.php | 7++++++-
Mcode/serveur/php/pticlic.php | 32++++++++++++++++++++++++++++++++
4 files changed, 55 insertions(+), 15 deletions(-)

diff --git a/code/serveur/dump2mysql.sh b/code/serveur/dump2mysql.sh @@ -5,18 +5,20 @@ echo " La progression est affichée avec pv. Si vous n'avez pas pv, supprimez l echo " Et c'est parti !" >&2 echo >&2 +# game_played(type) : 0=partie de référence initiale, 1=partie d'un joueur. + cat <<EOF -begin transaction; +start transaction; create database if not exists pticlic; -create table node(eid integer primary key autoincrement, name, type, weight); -create table relation(rid integer primary key autoincrement, start, end, type, weight); -create table type_node(nom, num); -create table type_relation(nom, num, nom_etendu, info); -create table user(login primary key, mail, hash_mdp); -create table sessid(login, sid); -create table partie(pid, eid_mot_central, relation_1, relation_2, relation_3, relation_4); -create table partie_nuage(pid, num, eid_mod); -create table partie_reference(pid, num, relation, poids); +use pticlic; +create table node(eid integer auto_increment, name varchar(255), type integer, weight integer, primary key(eid)); +create table relation(rid integer auto_increment, start integer, end integer, type integer, weight integer, primary key(rid)); +create table type_node(name varchar(255), num integer, primary key(num)); +create table type_relation(name varchar(255), num integer, extended_name varchar(16384), info varchar(16384), primary key(num)); +create table user(login varchar(255), mail varchar(255), hash_mdp char(32), primary key(login)); +create table game(pid integer auto_increment, eid_central_word integer, relation_1 integer, relation_2 integer, relation_3 integer, relation_4 integer, reference_played_game integer, primary key(pid)); +create table game_cloud(pid integer, num integer, eid_word integer); +create table game_played(pid integer, type integer, num integer, relation integer, weight integer); EOF # tr : pour virer le CRLF qui traîne @@ -27,10 +29,11 @@ cat "$1" \ | sed -e 's/X/XX/g' | sed -e 's/A/Xa/g' | tr '\n' 'A' | sed -e 's/A")/")/g' | tr 'A' '\n' | sed -e 's/Xa/A/g' | sed -e 's/XX/X/g' \ | pv -s $(wc -c "$1" | cut -d ' ' -f 1) \ | sed -e "s#'#''#g" \ -| sed -E -e 's#^// [0-9]+ occurrences of relations ([a-z_]+) \(t=([0-9]+) nom_etendu="([^"]+)" info="([^"]+)"\)$#insert into type_relation(nom, num, nom_etendu, info) values('\''\1'\'', \2, '\''\3'\'', '\''\4'\'');#' \ -| sed -E -e 's#^// [0-9]+ occurrences of nodes ([a-z_]+) \(t=([0-9]+)\)$#insert into type_node(nom, num) values('\''\1'\'', \2);#' \ +| sed -E -e 's#^// [0-9]+ occurrences of relations ([a-z_]+) \(t=([0-9]+) nom_etendu="([^"]+)" info="([^"]+)"\)$#insert into type_relation(name, num, extended_name, info) values('\''\1'\'', \2, '\''\3'\'', '\''\4'\'');#' \ +| sed -E -e 's#^// [0-9]+ occurrences of nodes ([a-z_]+) \(t=([0-9]+)\)$#insert into type_node(name, num) values('\''\1'\'', \2);#' \ | sed -E -e 's#^eid=([0-9]+):n="(.*)":t=([0-9]+):w=(-?[0-9]+)$#insert into node(eid, name, type, weight) values(\1, '\''\2'\'', '\''\3'\'', '\''\4'\'');#' \ | sed -E -e 's#^rid=([0-9]+):n1=([0-9]+):n2=([0-9]+):t=([0-9]+):w=(-?[0-9]+)#insert into relation(rid, start, end, type, weight) values(\1,\2,\3,\4,\5);#' \ +| grep -v 'insert into node(eid, name, type, weight) values(0,' \ | grep -v '^//' \ | grep -v '^$' diff --git a/code/serveur/php/config.php b/code/serveur/php/config.php @@ -8,8 +8,8 @@ $email_admin = ''; // Adresse e-mail Administrateur. // Base de donées. $sql_serveur = 'localhost'; // Serveur de la Base De Donnée (BDD). $sql_login = 'root'; // Login BDD. -$sql_pass = ''; // Pass BDD. -$sql_bdd = 'ptitclic'; // Nom de la BDD. +$sql_pass = ' '; // Pass BDD. +$sql_bdd = 'pticlic'; // Nom de la BDD. // Quelques fonctions utiles. include("function.php"); diff --git a/code/serveur/php/function.php b/code/serveur/php/function.php @@ -29,9 +29,14 @@ function secure($string) return $string; } +// TODO Yoann : fonction qui échappe les " +function escape_json_string($str) { + return $str; +} + function mDie($err,$msg) { - echo "Error:".$err.":".$msg; + echo "{ error:\"".escape_json_string($err)."\", msg:\"".escape_json_string($msg)."\"}"; exit(1); } diff --git a/code/serveur/php/pticlic.php b/code/serveur/php/pticlic.php @@ -24,6 +24,38 @@ if(strcmp($data['passwd'],$passwd) != 0) mDie(3,"Nom d'utilisateur ou mot de passe incorrect"); +function random_node() { + return mysql("select eid from node where eid = (abs(random()) % (select max(eid) from node))+1 or eid = (select max(eid) from node where eid > 0) order by eid desc limit 1;"); +} + +function create_game($cloud_size) { + // select random node + $eid_center=random_node(); + + // select neighbors 1 hop + $niveau1=mysql("select end from relation where start = 42 limit $taille_nuage;"); + + // select neighbors 2 hops + $niveau2=mysql("select * from relation where start in (select end from relation where start = 42) limit $taille_nuage;"); + + // select neighbors relative to the end (one hop start->end, one hop start<-end). + $niveau3=mysql("select * from relation where end in (select end from relation where start = 42) and type not in (4, 12, 36, 18, 29, 45, 46, 47, 48, 1000, 1001) limit $taille_nuage;"); + + // pour compléter si nécessaire : + // select random words + $niveau4=array(); + for ($i=0; $i < $cloud_size; $i++) { + $niveau4[$i] = ??? + } + + // start transaction; + // insert into game $eid_center + // insert into game_cloud [$cloud_size mots choisis dans $niveau1, $niveau2, $niveau3, $niveau4] + // insert into game_played une partie de référence. + // commit; +} + + // Sinon tout est bon on effectu l'opération correspondant à la commande passée. if($cmd == 0) // "Get partie" {