PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Problème avec array » 12-09-2010 13:23:00

nom

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

#3 Re : Forum Général PHP » Problème avec array » 12-09-2010 13:23:00

nom

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!

#4 Forum Général PHP » Problème avec array » 12-09-2010 13:23:00

nom
Réponses : 5

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')");



}
}}

?>

#5 Re : Forum Général PHP » fonction afficher sur PHP » 27-07-2010 09:29:18

nom

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)
?>

#6 Re : Forum Général PHP » fonction afficher sur PHP » 27-07-2010 09:29:18

nom

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!

#7 Forum Général PHP » fonction afficher sur PHP » 27-07-2010 09:29:18

nom
Réponses : 5

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

Pied de page des forums

Propulsé par FluxBB