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:
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"
{