[PHP] Prob MVC et MySQL

Statut
N'est pas ouverte pour d'autres réponses.

[Clad]

Manipulateur de bits
Bonjour à tous, alors là j'ai vraiment un gros problème très compliqué :p (enfin à mes yeux ^^)

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
 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
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 ??
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut