[PHP] Prob MVC et MySQL

Discussion dans 'Web, design' créé par [Clad], 4 Juillet 2008.

Statut de la discussion:
Fermée.
  1. Offline
    [Clad] Elite
    Bonjour à tous, alors là j'ai vraiment un gros problème très compliqué :p (enfin à mes yeux :p)

    Enfaite je développais tranquillement mon application qand on est venu me présenter le modèle MVC, je me tien c'est cool. Bref je vous passe les détails j'essai de l'utiliser, un peu dur au début mais ca va. On m'a passé un canevas de dispatcher, vue, classes etc..

    Bref, là enfaite après avoir effectué tout un tas de traitement je doit enregistrer des données dans une table MySQL.

    Voici la classe:

    PHP:
    <?php
    /*
     *
     * Classe de création des standards
     *
     */

    require_once 'cla_alldb.php';
    require_once 
    'cla_sec_session.php';

    class 
    Admin_standard extends AllDB {

        
    // Définition des attributs de la classe
        
    var $action;
        var 
    $message;
        
        var 
    $nomStandard;
        var 
    $nbItem;
        var 
    $niveau;
        var 
    $generique;
        var 
    $responsable;
        var 
    $image;
        var 
    $mode;
        var 
    $famille;


    /*-----------------------------------------------------------------------------------------------------
    * Utilisateur()
        constructeur de la classe
    ------------------------------------------------------------------------------------------------------*/
    function Admin_standard($reqParam)
    {
            
            
    $this->action $reqParam['action'];
            
            
    $this->nomStandard = (isset($reqParam['nomStandard'])) ? $reqParam['nomStandard'] : '';
            
    $this->nbItem = (isset($reqParam['nbItem'])) ? $reqParam['nbItem'] : '';
            
    $this->niveau = (isset($reqParam['niveau'])) ? $reqParam['niveau'] : '';
            
    $this->generique = (isset($reqParam['generique'])) ? $reqParam['generique'] : '';
            
    $this->responsable = (isset($reqParam['responsable'])) ? $reqParam['responsable'] : '';
            
    $this->mode = (isset($reqParam['mode'])) ? $reqParam['mode'] : '';
            
    $this->famille = (isset($reqParam['famille'])) ? $reqParam['famille'] : '';
            

     
    }
        
    /*-----------------------------------------------------------------------------------------------------
    * handle()
    ------------------------------------------------------------------------------------------------------*/
    function handle ()
    {
        global 
    $const;

        switch (
    $this->action)
        {
        
            case 
    'choix':            
                
    //$auth_profil =  array($const['ProfilAdmin']);
                //Sec_session::checkDroitAcces($auth_profil,$_SESSION['profil']);    
                 
    return $this->choix();                
                break;    

            case 
    'modif':            
                
    //$auth_profil =  array($const['ProfilAdmin']);
                //Sec_session::checkDroitAcces($auth_profil,$_SESSION['profil']);    
                 
    return $this->etape1('MODIF');                
                break;        
                
            case 
    'creation':            
                
    //$auth_profil =  array($const['ProfilAdmin']);
                //Sec_session::checkDroitAcces($auth_profil,$_SESSION['profil']);    
                 
    return $this->etape1('CREATION');                
                break;
                
            case 
    'creation2':            
                
    //$auth_profil =  array($const['ProfilAdmin']);
                //Sec_session::checkDroitAcces($auth_profil,$_SESSION['profil']);    
                 
    return $this->etape2('CREATION');                
                break;
            
            case 
    'creation3':            
                
    //$auth_profil =  array($const['ProfilAdmin']);
                //Sec_session::checkDroitAcces($auth_profil,$_SESSION['profil']);    
                 
    return $this->etape3('CREATION');                
                break;
                
            case 
    'creation4':            
                
    //$auth_profil =  array($const['ProfilAdmin']);
                //Sec_session::checkDroitAcces($auth_profil,$_SESSION['profil']);    
                 
    return $this->etape4('CREATION');                
                break;
                
            
            default:
                
    session_unset();
                
    session_destroy();
                
    $res['vue'] = "vue_echec_action.php";            
                return 
    $res;
        } 
    }


    /*-----------------------------------------------------------------------------------------------------
    * liste()
    ------------------------------------------------------------------------------------------------------*/

    PATATI PATATA JE COUPE LE CODE INUTILE ICI


    /*-----------------------------------------------------------------------------------------------------
    * Etape 4, enregistrement de tout
    ------------------------------------------------------------------------------------------------------*/

    function etape4($pMode)
    {
          
    // Vue par défaut
        
    $res['vue'] = 'vue_erreur.php';

        
    // Connexion à la base de données
        
    if (is_a($link $this->dbConnect(),'errordb'))
        {
            
    $res['data'] = $link;    
            return 
    $res;
        }

        
        
        
    if (isset(
    $_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
    {

                    
    // Testons si l'extension est autorisée
                    
    $infosfichier pathinfo($_FILES['monfichier']['name']);
                    
    $extension_upload $infosfichier['extension'];
                    
    $extensions_autorisees = array('jpg''jpeg''bmp''gif''png''JPEG''JPG''BMP''GIF''PNG',);

                    if (
    in_array($extension_upload$extensions_autorisees))
                    {
                    
        
    // On enregistre les infos générales du standard
        
    echo 'fait ca <br/>';
        
        
    mysql_query("INSERT INTO descriptionStandard VALUES('', '$this->nomStandard', '$this->niveau', '$this->mode', '$this->generique', '$this->famille', '$this->responsable')");



        echo 
    $this->nomStandard; echo '<br/>';
        echo 
    $this->niveau;echo '<br/>';
        echo 
    $this->mode;echo '<br/>';
        echo 
    $this->generique;echo '<br/>';
        echo 
    $this->famille;echo '<br/>';
        echo 
    $this->responsable;echo '<br/>';
        
        
    // On requête pour obtenir l'ID ainsi créé
        
    $maxId mysql_query("SELECT MAX(idDescriptionStandard) as max
                                  FROM   descriptionStandard
                                 "
    ); 
                               
                               
        
    $maxIdValeur mysql_fetch_array($maxId);
                    
        echo 
    '<br/> OMG C CA LE RESULTAT => '.$maxIdValeur[max].' <br/>';
                    
        
    $nouveauNomFichier''.$maxIdValeur[max].'.'.$extension_upload.'';
        
        echo 
    $nouveauNomFichier;
                    
        
    // On upload la photo
        
    move_uploaded_file($_FILES['monfichier']['tmp_name'], './imgStandards/' $nouveauNomFichier);
                    
                    
                    
                    
    // On enregistre les items dans une boucle
                    
                    // Dans cette boucle à chaque fois on requete pour obtenir l'id de l'item et on créé les valeurs ainsi refliés
                    
                    
                    
                    
                            // On peut valider le fichier et le stocker définitivement

                            
                    /*mysql_query("INSERT INTO listeValeur VALUES('', '$idListeTitre', '$mot', '$nouveauNomFichier', '')");*/
                    
    }
                    else {echo 
    'Une erreur est parvenu. Veuillez vous référer à la notice pour connaître les extensions de fichiers joints autorisés';}


    }
        

        
    // Affectation de la vue d'affichage    
        
    $res['data']['infos']= $this;
        
    $res['data']['messageInfo'] = $this->message;
        
    $res['data']['action']= $pMode;
        
    $res['vue'] = 'vue_admin_standard_etape4.php';
        return 
    $res;
        
    }


    ?>
    Le problème est au niveau de l'étape 4:

    Alors tout d'abord j'écrit les nouvelles infos dans ma table. L'id de la table est auto incrémenté.
    Un fois avoir écris dans la table, je fait une requête pour obtenir l'ID créé
    j'upload l'image cette ID comme nom (comme ca les images ne pourrons jamais s'écraser les unes sur les autres :p )

    Alors c'est cool, ca marche bien, l'image s'upload comme il faut dans le dossier, avec comme nom un numéro qui s'incrémente à chaque fois.

    CEPENDANT: lorsque je vais consulter ma table (par php my admin, ou via une requête en php) l'enregistrement que j'ai fait n'est plus là :s :s :s :s :s o_OO_O

    En gros j'ai réfléchie, l'enregistrement s'effectue correctement (vu que l'image prend le numéro du dernier ID créé), sauf qu'à la fin du traitement il s'efface :s

    Et je ne sais pas du tout pourquoi, je ne comprend pas je me tire les cheveux :/

    je suis vraiment bloqué à fond :pfiou:

    J'écrit bien dans la bonne base de données car mes requêtes fonctionnent.


    merci de votre aide :beuh:

    Si vous souhaitez voir des fichier des includes n'hésitez pas, je ne sais pas ce qui est utile
    [Clad], 4 Juillet 2008
    #1
  2. Offline
    [Clad] Elite
    Bon j'ai trouvé un petit élément de réponse

    C'est ce bout de code qui fait buguer le bins:

    // Connexion à la base de données
    if (is_a($link = $this->dbConnect(),'errordb'))
    {
    $res['data'] = $link;
    return $res;
    }

    Enfaite ca me connecte bien à la BDD et tout et tout, sauf que ca bug au niveau de l'écriture :/ (ca écrit puis ca éffce o_O)

    Si je remplce ce bout par:
    mysql_connect("localhost", "root", ""); // Connexion à MySQL
    mysql_select_db("Standards"); // Sélection de la base coursphp

    A ce moment ca fonctionne !!!!!!!

    Mais je pense que le bout de code initial ne doit pas être ici juste pour faire jolie et doit avec un but précis. Cependant je ne le comprend pas et je ne voi pas d'où vien le problème.

    Quelque peut m'aider svp ??
    [Clad], 5 Juillet 2008
    #2
Statut de la discussion:
Fermée.