Vous n'êtes pas identifié(e).
Pages : 1
Merci beaucoup. Désolé je n'ai pas vu ton message à temps je te remercie d'avoir pris du temps à me repondre, tn code est nettement plus logique et surtout plus structuré(je suis très debutant et ca m'a appris bcp de chose) , j'ai remédié à mon problème mais pas de la sorte maintenant je vais testé ton code car apparemment il est beaucoup mieux. et merci mille fois encore
dsl je voulais dire $row=array()
oui je sais ça, est ce que $row n'est pas defini autant qu'un tableau? de peur que ca soit le cas sans que je m'en aperçoive j'ai ajouté auparavant un $row=array avant le test if($total) mais ca ne change rien!
Bonjour,
aurait-il quelqu'un qui puisse m'aider sur un probleme sur les tableaux. au fait j'ai besoin de verifier si une valeur existe dans le tableau et on me donne l'erreur suivante: Warning: in_array() expects parameter 2 to be array, boolean given in C:\wamp\www\tests\ajouterr.php on line 35 (la ligne 35 est celle en rouge soulignée)
voici mon code je vous serai très reconnaissant si vous m'aidiez:
<?php
if (isset($_POST['ref_pere']) && isset($_POST['indicateur'])&& isset($_POST['ordre'])&& isset($_POST['niveau'])&& isset($_POST['volet'])&& isset($_POST['libelle']) ) // Si les variables existent
{
if ($_POST['ref_pere'] != NULL AND $_POST['indicateur'] != NULL) // Si on a quelque chose à enregistrer
{
// D'abord, on se connecte à MySQL
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'bds';
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$ref_pere0=$_POST['ref_pere'];
$indicateur0 = $_POST['indicateur'];
$ordre0 = $_POST['ordre'];
$niveau0 = $_POST['niveau'];
$volet0 = $_POST['volet'];
$libelle0 = $_POST['libelle'];
$select = 'SELECT indicateur FROM k where ref_pere="$ref_pere0"';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
if($total) {
while($row = mysql_fetch_array($result)) {
$row[]=$row["indicateur"];
}
}
if(in_array($indicateur0,$row)){
mysql_query("UPDATE k set ordre = ordre+1, indicateur=indicateur+1 WHERE ref_pere=$ref_pere0 and ordre>=$ordre0;");
mysql_query("INSERT INTO k( ref_pere,indicateur, ordre, volet, libelle, niveau) values('$ref_pere0','$indicateur0', '$ordre0', '$volet0', '$libelle0', '$niveau0')");
}
else
{
mysql_query("INSERT INTO k( ref_pere,indicateur, ordre, volet, libelle, niveau) values('$ref_pere0','$indicateur0', '$ordre0', '$volet0', '$libelle0', '$niveau0')");
}
}}
?>
Voila j pu avancé un petit peu mais j changé ma table au (ref, ref_pere, code, libelle, lft ( si on considere l'arrborescence on donne un nombre a gauche de chaque donnée), rgt( de mm a sa droite) pour l'affichage j'ai pu enfin l'afficher comme je voulais grace a ce code:
<?php
$db = mysql_connect("localhost", "root", "");
mysql_select_db("test",$db);
echo '<hr>';
function display_mptt($root) {
$result = mysql_query('SELECT * FROM indicateur '.
'WHERE ref="'.$root.'";');
$row = mysql_fetch_array($result);
$right = array();
$result = mysql_query('SELECT * FROM indicateur '.
'WHERE lft BETWEEN '.$row['lft'].' AND '.
$row['rgt'].' ORDER BY lft ASC;');
while ($row = mysql_fetch_array($result)) {
if (count($right)>0) {
while ($right[count($right)-1]<$row['rgt']) {
array_pop($right);
}
}
echo str_repeat(' ',count($right)).$row['code'].$row['libelle']."<br>";
$right[] = $row['rgt'];
}
}
display_mptt(1);
?>
on aurait come resultat a l'affichage:
0indicateur
1environnement
11demographie
111pop-tot
112pop_fem
113pop_15
12geographie
121superficie
2acteur
voilà maintenant mon problème reside sur la fonction ajouter j'ai cherché un petit peu mais je reussi pas a l'executer on me lance la faute suivante:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 572 bytes) pourtant j'ai modifié memory_limit sur php.ini ainsi que le temps d'execution mais ca ne marche pas et voilà mon code:
<?php
$db = mysql_connect("localhost", "root", "");
mysql_select_db("test",$db);
echo '<hr>';
function rebuild_tree($ref_pere, $left) {
$right = $left+1;
$result = mysql_query('SELECT libelle FROM indicateur '.
'WHERE ref_pere="'.$ref_pere.'";');
while ($row = mysql_fetch_array($result)) {
$right = rebuild_tree($row['libelle'], $right);
}
mysql_query('UPDATE libelle SET lft='.$left.', rgt='.$right.' WHERE ref_pere="'.$ref_pere.'";');
return $right+1;
}
rebuild_tree(3,2)
?>
Ok! merci beaucoup. Je comprend j'ai juste tenté la chance qu'il y'ait quelqu'un qui a déjà fait cette manipulation auparavant, et qu'il ne perdera pas de temps à me répondre!
Bonjour:
SVP, je suis très debutant en développement et surtout en php et là j'ai un très grand problème que je n'arrive pas à résoudre et je suis perdu sur le net. J'ai besoin d'afficher des données de ma bases de données à l'aide d'une fonction. Normalement mes données sont liées entre eux à l'aide d'une association père-fils je vous cite comment est ma table (réference (clé), ref_père, ordre(l'ordre du fils), volet(le numéro du volet de la donnée), libellé et l'indicateur (exemple: 1 , 1.1.2 , 2.5).
vers la fin je vous dis comment je dois afficher:
1.X
1.1 XX
1.1.1 XXX
1.2 YY
2.Z
2.1 ZZ
.
.
.
et ainsi de suite SVP aidez moi ne serai que par la syntaxe d'une fonction récursive qui affiche genaralement. car je peux pas perdre plus de temps à chercher sur le net j'ai des delais Merci beaucoup j'attend votre réponse!!!
Merci encore une fois
Pages : 1