Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: problema mysql

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181

    problema mysql

    Non conosco molto bene MySql e cerco quindi di arrangiarmi...ho un problema:non capisco perchè non mi trovi/restituisca ciò che voglio(lo so è scritto male)...

    Struttura tabella:
    codice:
    CREATE TABLE IF NOT EXISTS `folder` (
      `idd` bigint(20) NOT NULL AUTO_INCREMENT,
      `owner` text COLLATE latin1_general_ci NOT NULL,
      `folder_name` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
      `folder_level` int(2) NOT NULL DEFAULT '2',
      `folder_path` text COLLATE latin1_general_ci NOT NULL,
      PRIMARY KEY (`idd`),
      FULLTEXT (`folder_path`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=55 ;
    
    INSERT INTO `folder` (`idd`, `owner`, `folder_name`, `folder_level`, `folder_path`) VALUES
    (54, 'Dheed', 'po', 2, 'http://farebury.exofire.net/tree/52/nonvis/po');
    e questo è il PHP commentato con gli output:

    Codice PHP:
    $original_path=trim($original_path);
            echo 
    "<script>alert('percorso=".$original_path."');</script>";/*percorso=http://farebury.exofire.net/tree/52/nonvis/po*/
            
    $query="SELECT folder_level FROM folder WHERE folder_path = '$original_path'"
            
    $result=mysql_query($query,$link) or die("Insertion Failed:" mysql_error());
            
    $level =mysql_fetch_assoc($result);
            echo 
    "<script>alert('numero elementi=".count($level)."');</script>";/*numero elementi=1*/
            
    echo "<script>alert('elemento=".$level[0]."');</script>"/*elemento=*/
                    
    for($r=0;$r<count($level);$r++)
                echo 
    "<script>alert('Livello=".$level[$r]."');</script>"/*Livello=*/ 
    Qualcuno sa dirmi il perchè? Io avevo pensato alla struttura fatta male della tabella...

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    Non ho visto bene il codice, ma mi pongo una domanda, il tuo scopo quale sarebbe? Cosa vorresti fare? Estrarre i dati dal db?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    Praticamente io ottengo il percorso tramite url,sul database ho lo stesso url (puoi vederlo anche dal codice che ho postato) e voglio ottenere il folder_level,che è un numero, tramite il percorso:
    Ottengo il percorso;
    cerco nel database la riga che contiene lo stesso percorco folder_path = percorso ottenuto tramite url;
    da questa riga prendo folder_level.

    Spero di essermi spiegato

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    Se ti interessa questo è tutto il file:
    Codice PHP:
    <?php
    include 'dbc.php';
    page_protect();
        
    $path=$_GET['path'];
    $original_path=$path;

    if(
    $path!='' && $path!='null' && $path!='undefined') {
            
        
    $site_name='http://farebury.exofire.net/';
        
        
    $path=str_replace($site_name,'',$path);
        
    $sept=str_replace('tree/','',$path);
        
    $lengsept=stripos($sept,'/');
        
    $iden=substr($sept,$lengsept);
        
    $iden=trim($iden);
        
        
    /*check if you can delete the folder*/
        
    $username=$_SESSION['user_nick'];
        
    $usid=$_SESSION['user_id'];
        
        
    $perm=$basepermfold.$usid.'/'.$username.'.txt';
        
        
    $var implode(''file ($perm));
        
    $arrperm=explode("\n",$var);
        
    $permissiondelete=false;
        
        for(
    $i=0;$i<count($arrperm);$i++){
            if(
    $arrperm[$i]==$iden){
                
    $permissiondelete=true;
                break;
            }                
        }
        
        
        if(
    $permissiondelete==true){

            
    /*Folder level*/
            
    $original_path=trim($original_path);
            echo 
    "<script>alert('percorso=".$original_path."');</script>";
            
    $query="SELECT folder_level FROM folder WHERE folder_path = '$original_path'"
            
    $result=mysql_query($query,$link) or die("Insertion Failed:" mysql_error());
            
    $level =mysql_fetch_assoc($result);
            echo 
    "<script>alert('numero elementi=".count($level)."');</script>";
            echo 
    "<script>alert('elemento=".$level[0]."');</script>";
            for(
    $r=0;$r<count($level);$r++)
                echo 
    "<script>alert('Livello=".$level[$r]."');</script>";
            
    $path=trim($path);
            
    $ceckph=str_replace('/','',$path);
            
    $ceckph=trim($ceckph);        
        
            
    $subfolder '2' ;
            
    $mainfolder '1' ;
        
            
    $permtxt '/'.$username.'.txt';
        
            if(
    $ceckph!='tree'){
                
    //elimino file
                
    if(is_file($path)==true){
                    
    unlink($path);    
                    echo 
    "The file has been deleted";
                }
                
    //elimino cartella
            
                //sub folder
                
    else if(is_dir($path) && $level==$subfolder){
                    
    $var implode(''file ($read));
                    
    $arr=explode("\n",$var);
                
                    
    $check=delete_directory($path);
                 
                    if(
    $check==true){
                    
                        echo 
    "The folder and his content has been deleted";         
                    }                
                    else
                        echo 
    "There was a problem,couldn't delete the subfolder,please contact the Administrator"
                }
                
    //main folder
                
    else if(is_dir($path) && $level==$mainfolder){
                    
    $read=$path.$infotxt;
                    
    pulisci($read);
                    
    $var implode(''file ($read));
                    
    $arr=explode("\n",$var);
                    if(
    count($arr)==1){ //only one person
                        
    $check=delete_directory($path);             
                        if(
    $check==true){
                            
    //delete permission
                            
    for($i=0;$i<count($arrperm);$i++){
                                if(
    $arrperm[$i]==$iden){
                                    
    $arrperm[$i]='';
                                    break;
                                }                
                            }
                            
    $file fopen($perm"w+");
                            
    fwrite($file,$arrperm."\n");
                            
    fclose($file);
                            
    pulisci($perm);
                            
    $operation="DELETE FROM folder WHERE folder_path='$original_path'";
                            
    mysql_query($operation,$link);
                            echo 
    "The folder and his content has been deleted";         
                        }                
                        else
                            echo 
    "There was a problem,couldn't delete the main folder,please contact the Administrator"
                    }
                    else{
    //more than one person
                        
    for($i=0;$i<count($arr);$i++){
                            if(
    $arr[$i]==$username){
                                
    $arr[$i]='';
                                break;
                            }    
                        }                    
                        
    $file fopen($read"w+");
                        
    fwrite($file,$arr."\n");
                        
    fclose($file);
                        
    pulisci($read);
                    
                        
    //delete permission
                        
    for($i=0;$i<count($arrperm);$i++){
                            if(
    $arrperm[$i]==$iden){
                                
    $arrperm[$i]='';
                                break;
                            }                
                        }
                        
    $file fopen($perm"w+");
                        
    fwrite($file,$perm."\n");
                        
    fclose($file);
                        
    pulisci($perm);
                    
                    }
                }
            
                
    //no file or folder
                
    else {
                    echo 
    "There was a problem,couldn't identify the folder type,please contact the Administrator";
                }
            }
            else
                echo 
    "You can't delete the Parent Folder.";

        }
        else
            echo 
    "You can't delete this folder,because you don't own the permissions.";

    }
    function 
    delete_directory($dirname) {
           if (
    is_dir($dirname))
              
    $dir_handle opendir($dirname);
           if (!
    $dir_handle)
              return 
    false;
           while(
    $file readdir($dir_handle)) {
              if (
    $file != "." && $file != "..") {
                 if (!
    is_dir($dirname."/".$file))
                    
    unlink($dirname."/".$file);
                 else
                    
    delete_directory($dirname.'/'.$file);    
              }
           }
           
    closedir($dir_handle);
           
    rmdir($dirname);
           return 
    true;
        }
         

    function 
    pulisci($store){
    $arr=array();
        foreach( 
    file($store) as $line ){
                
    $line=trim($line);
            if(
    $line != ''$arr[]=$line;
            }
        
    file_put_contents($storeimplode("\n",$arr) );
    }
    ?>

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    Codice PHP:
    $level =mysql_num_rows($result);  
    echo 
    $level#in questo modo conosci quanti risultati hai ottenuto, conosci quanti folder_level hai
     
    while($level mysql_fetch_array($result)){
    echo 
    $level['folder_level']."
    "
    #in questo modo ti stampa tutte le celle appartenenti alla colonna folder_level, quindi uno ad uno ti stampa tutti i numeri che appartengono a questa colonna

    Spero vada bene

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    Avevo già provato,mi restituisce un array di un elemento e quell'elemento è vuoto

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    Codice PHP:
    $query="SELECT folder_level FROM folder WHERE folder_path = '".$original_path."' ";
    $result=mysql_query($query); 
    prova così

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    Scusa colpa mia,funzionava il primo codice che mi hai dato
    Restituisce la stringa "2"(il valore è corretto),ma non mi supera l'if( $level['folder_level']==$mainfolder o $level['folder_level']==$subfolder).

  9. #9
    Originariamente inviato da Dheed
    Scusa colpa mia,funzionava il primo codice che mi hai dato
    Restituisce la stringa "2"(il valore è corretto),ma non mi supera l'if( $level['folder_level']==$mainfolder o $level['folder_level']==$subfolder).
    ...controllo che nel codice da te postato non esiste!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    Nel codice che avevo postato prima non c'era neanche $level['folder_path']
    questo è quello aggiornato:
    Codice PHP:
    <?php
    include 'dbc.php';
    page_protect();
        
    $path=$_GET['path'];
    $original_path=$path;

    if(
    $path!='' && $path!='null' && $path!='undefined') {
            
        
    $site_name='http://farebury.exofire.net/';
        
        
    $path=str_replace($site_name,'',$path);
        
    $sept=str_replace('tree/','',$path);
        
    $lengsept=stripos($sept,'/');
        
    $iden=substr($sept,$lengsept);
        
    $iden=trim($iden);
        
        
    /*check if you can delete the folder*/
        
    $username=$_SESSION['user_nick'];
        
    $usid=$_SESSION['user_id'];
        
        
    $perm=$basepermfold.$usid.'/'.$username.'.txt';
        
        
    $var implode(''file ($perm));
        
    $arrperm=explode("\n",$var);
        
    $permissiondelete=false;
        
        for(
    $i=0;$i<count($arrperm);$i++){
            if(
    $arrperm[$i]==$iden){
                
    $permissiondelete=true;
                break;
            }                
        }
        
        
        if(
    $permissiondelete==true){

            
    /*Folder level*/
            
    $original_path=trim($original_path);
            echo 
    "<script>alert('percorso=".$original_path."');</script>";
            
    $query="SELECT folder_level FROM folder WHERE folder_path = '$original_path'"
            
    $result=mysql_query($query,$link) or die("Insertion Failed:" mysql_error());
            
    //$level =mysql_fetch_assoc($result);
            
    $level =mysql_num_rows($result);  
             echo 
    "<script>alert('risultati ottenuti=".$level."');</script>"#in questo modo conosci quanti risultati hai ottenuto, conosci quanti folder_level hai
            
    while($level mysql_fetch_array($result)){
                echo 
    var_dump($level['folder_level'])."
    "
    #stampa string(1) "2" 
            
    }
            
    $path=trim($path);
            
    $ceckph=str_replace('/','',$path);
            
    $ceckph=trim($ceckph);        
            
            
    $rope=$level['folder_level']; #null se faccio un intval($level['folder_level']) stampa int(0)
            
            
    echo var_dump($rope);
            
    $subfolder '2' ;
            
    $mainfolder '1' #ho provato sia con sia senza apostrofi
        
            
    $permtxt '/'.$username.'.txt';
        
            if(
    $ceckph!='tree'){
                
    //elimino file
                
    if(is_file($path)==true){
                    
    unlink($path);    
                    echo 
    "The file has been deleted";
                }
                
    //elimino cartella
            
                //sub folder
                
    else if(is_dir($path) && $level['folder_level']==$subfolder){
                    
    $var implode(''file ($read));
                    
    $arr=explode("\n",$var);
                
                    
    $check=delete_directory($path);
                 
                    if(
    $check==true){
                    
                        echo 
    "The folder and his content has been deleted";         
                    }                
                    else
                        echo 
    "There was a problem,couldn't delete the subfolder,please contact the Administrator"
                }
                
    //main folder
                
    else if(is_dir($path) && $level['folder_level']==$mainfolder){
                    
    $read=$path.$infotxt;
                    
    pulisci($read);
                    
    $var implode(''file ($read));
                    
    $arr=explode("\n",$var);
                    if(
    count($arr)==1){ //only one person
                        
    $check=delete_directory($path);             
                        if(
    $check==true){
                            
    //delete permission
                            
    for($i=0;$i<count($arrperm);$i++){
                                if(
    $arrperm[$i]==$iden){
                                    
    $arrperm[$i]='';
                                    break;
                                }                
                            }
                            
    $file fopen($perm"w+");
                            
    fwrite($file,$arrperm."\n");
                            
    fclose($file);
                            
    pulisci($perm);
                            
    $operation="DELETE FROM folder WHERE folder_path='$original_path'";
                            
    mysql_query($operation,$link);
                            echo 
    "The folder and his content has been deleted";         
                        }                
                        else
                            echo 
    "There was a problem,couldn't delete the main folder,please contact the Administrator"
                    }
                    else{
    //more than one person
                        
    for($i=0;$i<count($arr);$i++){
                            if(
    $arr[$i]==$username){
                                
    $arr[$i]='';
                                break;
                            }    
                        }                    
                        
    $file fopen($read"w+");
                        
    fwrite($file,$arr."\n");
                        
    fclose($file);
                        
    pulisci($read);
                    
                        
    //delete permission
                        
    for($i=0;$i<count($arrperm);$i++){
                            if(
    $arrperm[$i]==$iden){
                                
    $arrperm[$i]='';
                                break;
                            }                
                        }
                        
    $file fopen($perm"w+");
                        
    fwrite($file,$perm."\n");
                        
    fclose($file);
                        
    pulisci($perm);
                    
                    }
                }
            
                
    //no file or folder
                
    else {
                    echo 
    "There was a problem,couldn't identify the folder type,please contact the Administrator";
                }
            }
            else
                echo 
    "You can't delete the Parent Folder.";

        }
        else
            echo 
    "You can't delete this folder,because you don't own the permissions.";

    }
    function 
    delete_directory($dirname) {
           if (
    is_dir($dirname))
              
    $dir_handle opendir($dirname);
           if (!
    $dir_handle)
              return 
    false;
           while(
    $file readdir($dir_handle)) {
              if (
    $file != "." && $file != "..") {
                 if (!
    is_dir($dirname."/".$file))
                    
    unlink($dirname."/".$file);
                 else
                    
    delete_directory($dirname.'/'.$file);    
              }
           }
           
    closedir($dir_handle);
           
    rmdir($dirname);
           return 
    true;
        }
         

    function 
    pulisci($store){
    $arr=array();
        foreach( 
    file($store) as $line ){
                
    $line=trim($line);
            if(
    $line != ''$arr[]=$line;
            }
        
    file_put_contents($storeimplode("\n",$arr) );
    }
    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.