par
Biohazard401 » 19 nov. 2015, 17:03
Bonjour à tous,
Je suis en train de créer un arbre binaire en php et mes données sont dans une bdd.
Le principe c est que chaque noeud comporte un id, une question, une réponse, id_left, id_right. Je possède aussi deux boutons "oui" et "non" et je voudrais qu'a chaque click, je descende d'un cran dans l'arbre.
Voila comment j'ai fait
Code : Tout sélectionner
//calcule le nombre d'element pour ma boucle
$counting = $db->query('SELECT * FROM node where questions IS NOT NULL');
$count = $counting->rowCount();
for( $i = 0; $i < $count; $i++ ) {
// si i égale 0, nous venons juste de rentrer dans la boucle donc j'initialise les élements
if($i ==0){
$select = $db->query('SELECT * FROM node where id=1');
$nodes = $select->fetch();
$current_id = $nodes->id;
$current_id_left = $nodes->id_left_node_children;
$current_id_right = $nodes->id_right_node_children;
$current_question = $nodes->questions;
echo $current_question;
}
if(isset($_POST['yes'])){
$select = $db->prepare('SELECT * FROM node where id=:id');
$select->bindParam(':id', $current_id_left);
$select->execute();
$nodes = $select->fetch();
$current_id_left = $nodes->id_left_node_children;
$current_id_right = $nodes->id_right_node_children;
$current_question = $nodes->questions;
echo $current_question;
}
if(isset($_POST['no'])){
$select = $db->prepare('SELECT * FROM node where id=:id');
$select->bindParam(':id', $current_id_right);
$select->execute();
$nodes = $select->fetch();
$current_id_left = $nodes->id_left_node_children;
$current_id_right = $nodes->id_right_node_children;
$current_question = $nodes->questions;
}
if($nodes->questions == ""){
echo "reponse " . $nodes->responses;
die();
}
}
Ce bout de code m'affiche bien les élements mais il m'affiche TOUT les élements d'un coup. Résultat, je me retrouve au feuille de l'arbre en 1 click.
Comment je peut faire pour qu il me pose chaque question une par une et que descende seulement d'un cran dans l'arbre ?
Merci
Bonjour à tous,
Je suis en train de créer un arbre binaire en php et mes données sont dans une bdd.
Le principe c est que chaque noeud comporte un id, une question, une réponse, id_left, id_right. Je possède aussi deux boutons "oui" et "non" et je voudrais qu'a chaque click, je descende d'un cran dans l'arbre.
Voila comment j'ai fait
[code]
//calcule le nombre d'element pour ma boucle
$counting = $db->query('SELECT * FROM node where questions IS NOT NULL');
$count = $counting->rowCount();
for( $i = 0; $i < $count; $i++ ) {
// si i égale 0, nous venons juste de rentrer dans la boucle donc j'initialise les élements
if($i ==0){
$select = $db->query('SELECT * FROM node where id=1');
$nodes = $select->fetch();
$current_id = $nodes->id;
$current_id_left = $nodes->id_left_node_children;
$current_id_right = $nodes->id_right_node_children;
$current_question = $nodes->questions;
echo $current_question;
}
if(isset($_POST['yes'])){
$select = $db->prepare('SELECT * FROM node where id=:id');
$select->bindParam(':id', $current_id_left);
$select->execute();
$nodes = $select->fetch();
$current_id_left = $nodes->id_left_node_children;
$current_id_right = $nodes->id_right_node_children;
$current_question = $nodes->questions;
echo $current_question;
}
if(isset($_POST['no'])){
$select = $db->prepare('SELECT * FROM node where id=:id');
$select->bindParam(':id', $current_id_right);
$select->execute();
$nodes = $select->fetch();
$current_id_left = $nodes->id_left_node_children;
$current_id_right = $nodes->id_right_node_children;
$current_question = $nodes->questions;
}
if($nodes->questions == ""){
echo "reponse " . $nodes->responses;
die();
}
}
[/code]
Ce bout de code m'affiche bien les élements mais il m'affiche TOUT les élements d'un coup. Résultat, je me retrouve au feuille de l'arbre en 1 click.
Comment je peut faire pour qu il me pose chaque question une par une et que descende seulement d'un cran dans l'arbre ?
Merci