Ébauche des requêtes du serveur.
This commit is contained in:
parent
b54667989f
commit
70b04a1d75
|
@ -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 '^$'
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user