begin process at 2012 05 27 19:21:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > MODEL SQL AVEC MYSQLI

MODEL SQL AVEC MYSQLI


 Information sur la source

Note :
Aucune note
Catégorie :Class et Objet ( POO ) Classé sous :models, mysqli, poo Niveau :Initié Date de création :03/05/2010 Date de mise à jour :15/05/2010 11:19:40 Vu / téléchargé :2 906 / 203

Auteur : guisx00

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Bonjour à tous,

Voici un exemple d'utilisation un peu différent de se que l'on à l'habitude de voir, dans la gestion mysql.
Cet source est base sur un tuto de Grafikart http://www.grafikart.fr/tutoriels/poo-models-php-9 0
/*
Dans ce tutoriel vidéo vous apprendrez à utiliser la Programmation Orienté Objet en PHP pour créer des "models". Ces objets vous permettront de communiquer plus facilement avec votre base de donnée à travers des fonction de sauvegarde, de suppression et de lecture.
*/
Tuto codé avec l'extension "mysql"

J'ai changer l'extension "mysql" en "mysqli"
Et j'ai apporté quelques améliorations sur le code lui même

J'ai fait un exemple simple pour chaque fonction.
Je n'est pas fourni les vérifications de formulaire etc, sa sera à vous de le faire si vous voulez réutilisé se script.

Actuellement la class model contient :
Une lecture d'un enregistrement
Une lecture de plusieurs enregistrements
Une vérification d'existance de l'enregistrement choisi
Une insertion d'enregistrement
Une modification d'enregistrement
Une suppression d'enregistrement

Source

  • <?php
  • class Model {
  • //Déclaration des attributs public
  • public $cnx;
  • public $table;
  • public $id;
  • public $rep_sql;
  • //Déclaration des attributs private de connec
  • private $_hote = "localhost";
  • private $_identifiant = "root";
  • private $_mot_de_passe = "";
  • private $base_de_donnees = "coeur_of_prog";
  • private $port = 3306;//default : 3306
  • /*//////////////////////////////////////////////////////////////////////////////////////////////////////////
  • Constructeur de connexion bdd
  • //////////////////////////////////////////////////////////////////////////////////////////////////////////*/
  • function __construct() {
  • //Déclenchement de la connexion
  • //echo 'Constructeur déclenché !';
  • $this->cnx = new mysqli(
  • $this->_hote,$this->_identifiant,
  • $this->_mot_de_passe,$this->base_de_donnees,
  • $this->port
  • );
  • if (mysqli_connect_errno()) {
  • echo '<div class="admin-no">Échec de la connexion : '.mysqli_connect_error().'</div>';
  • exit();
  • }
  • }
  • /*/////////////////////////////////////////////////////////////////////////////////////////////////////
  • Chargement du model
  • ///////////////////////////////////////////////////////////////////////////////////////////////////*/
  • static function load($name){
  • require("$name.php");
  • return new $name();
  • }
  • /*///////////////////////////////////////////////////////////////////////////////////////////////
  • Existance de l'id
  • /////////////////////////////////////////////////////////////////////////////////////////////*/
  • public function existance($id) {
  • if (!empty($id) && is_numeric($id)) {
  • $sql = 'SELECT id FROM '.$this->table.' WHERE id='.$id;
  • if($this->cnx){
  • if($req = $this->cnx->query($sql)) {
  • //On verifie si l'id existe dans la table RETURN TRUE OU FALSE
  • if ($req->num_rows != 0) { return TRUE; } else { return FALSE; }
  • } else {
  • //return $this->rep_sql = 1;
  • echo '<div class="admin-no">Requête concernée : "',$query,'"</div>';
  • //$mess_erreur_requete
  • exit();
  • }
  • } else {
  • //return $this->rep_sql = 2;
  • echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
  • //$mess_erreur_connec_bdd
  • exit();
  • }
  • } else {
  • //return $this->rep_sql = 3;
  • echo '<div class="admin-no">Votre demande n\'est pas valide</div>';
  • //$mess_erreur_existance
  • exit();
  • }
  • }
  • /*///////////////////////////////////////////////////////////////////////////////////////////////
  • Lecture
  • /////////////////////////////////////////////////////////////////////////////////////////////*/
  • public function read($fields=null) {
  • if($fields==null){ $fields = "*"; }//si les champs sont null je select tt
  • $sql = 'SELECT '.$fields.' FROM '.$this->table.' WHERE id='.$this->id;
  • if($this->cnx){
  • if($req = $this->cnx->query($sql)) {
  • if ($req->num_rows != 0) {//on verifie que la table n'est pas vide
  • $data = $req->fetch_array();
  • foreach($data as $k=>$v){
  • $this->$k = $v;
  • }
  • return $this->rep_sql = 1;//Affichage tbl
  • //echo '<div class="admin-ok">Requête réussi</div>';
  • $this->free_result();//on libere la memoire
  • } else {
  • return $this->rep_sql = 2;
  • //echo '<div class="admin-no">Aucune informations</div>';
  • //$mess_erreur_no_infos
  • exit();
  • }
  • } else {
  • return $this->rep_sql = 3;
  • //echo '<div class="admin-no">Requête concernée : "',$sql,'"</div>';
  • //$mess_erreur_requete
  • exit();
  • }
  • } else {
  • return $this->rep_sql = 4;
  • //echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
  • //$mess_erreur_connec_bdd
  • exit();
  • }
  • }
  • /*///////////////////////////////////////////////////////////////////////////////////////////////
  • Affichage liste
  • $sql = 'SELECT '.$fields.' FROM '.$this->table.' WHERE '.$conditions.' ORDER BY '.$order.' '.$limit;
  • /////////////////////////////////////////////////////////////////////////////////////////////*/
  • public function find($data=array()){
  • if(isset($data["conditions"]) && isset($data["fields"]) && isset($data["order"])) {
  • $conditions = $data["conditions"];
  • $fields = $data["fields"];
  • $order = $data["order"];
  • $sql = 'SELECT '.$fields.' FROM '.$this->table.' WHERE '.$conditions.' ORDER BY '.$order;
  • }
  • if(isset($data["limit"])) { //si on fixe une limit
  • $limit = "LIMIT ".$data["limit"];
  • $sql .= ' '.$limit;
  • }
  • if($this->cnx) {
  • if($req = $this->cnx->query($sql)) {
  • if ($req->num_rows != 0) {//on verifie que la table n'est pas vide
  • $d = array();
  • while($data = $req->fetch_array()){
  • $d[] = $data;
  • }
  • return $d;
  • return $this->rep_sql = 1;//Affichage tbl
  • //echo '<div class="admin-ok">Requête réussi</div>';
  • $this->free_result();//on libere la memoire
  • } else {
  • return $this->rep_sql = 2;
  • //$mess_erreur_no_infos
  • exit();
  • }
  • } else {
  • return $this->rep_sql = 3;
  • //echo '<div class="admin-no">Requête concernée : "',$sql,'"</div>';
  • //$mess_erreur_requete
  • exit();
  • }
  • } else {
  • return $this->rep_sql = 4;
  • //echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
  • //$mess_erreur_connec_bdd
  • exit();
  • }
  • }
  • /*///////////////////////////////////////////////////////////////////////////////////////////////
  • Update
  • /////////////////////////////////////////////////////////////////////////////////////////////*/
  • public function update($data){
  • //est-ce que c defini et est-ce que c different de vide
  • if(isset($data['id']) && !empty($data['id']) && is_numeric($data['id'])){
  • $sql ='UPDATE '.$this->table.' SET ';
  • foreach($data as $k=>$v){
  • if($k!='id'){
  • $sql .= ''.$k.'="'.$v.'",';
  • }
  • }
  • $sql = substr($sql,0,-1);
  • $sql .= 'WHERE id='.$data['id'];
  • if($this->cnx){
  • if($req = $this->cnx->query($sql)) {
  • $this->id = $data['id'];//on recup l'id modif
  • return $this->rep_sql = 1;
  • //echo '<div class="admin-ok">Requête réussi</div>';
  • //$mess_modif_reussi
  • } else {
  • return $this->rep_sql = 2;
  • //echo '<div class="admin-no">Requête concernée : "',$sql,'"</div>';
  • //$mess_erreur_requete
  • exit();
  • }
  • } else {
  • return $this->rep_sql = 3;
  • //echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
  • //$mess_erreur_connec_bdd
  • exit();
  • }
  • }//if(isset($data['id']) && !empty($data['id']) && is_numeric($data['id'])){
  • }
  • /*///////////////////////////////////////////////////////////////////////////////////////////////
  • Insertion
  • /////////////////////////////////////////////////////////////////////////////////////////////*/
  • public function save($data){
  • $sql = 'INSERT INTO '.$this->table.' (';
  • //unset($data['id']); //Destruction de l'id
  • foreach($data as $k=>$v){
  • $sql .= ''.$k.',';
  • }
  • $sql = substr($sql,0,-1);
  • $sql .= ') VALUES (';
  • foreach($data as $v){
  • $sql .= '"'.$v.'",';
  • }
  • $sql = substr($sql,0,-1);
  • $sql .= ')';
  • if($this->cnx){
  • if($req = $this->cnx->query($sql)) {
  • $this->id = $this->cnx->insert_id;//on recup l'id inserer
  • return $this->rep_sql = 1;
  • //echo '<div class="admin-ok">Requête réussi</div>';
  • //$mess_insert_reussi
  • } else {
  • return $this->rep_sql = 2;
  • //echo '<div class="admin-no">Requête concernée : "',$sql,'"</div>';
  • //$mess_erreur_requete
  • exit();
  • }
  • } else {
  • return $this->rep_sql = 3;
  • //echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
  • //$mess_erreur_connec_bdd
  • exit();
  • }
  • }
  • /*///////////////////////////////////////////////////////////////////////////////////////////////
  • Suppression
  • /////////////////////////////////////////////////////////////////////////////////////////////*/
  • public function del($id){
  • if($this->cnx){
  • if ($this->existance($id) == TRUE) {
  • $sql = 'DELETE FROM '.$this->table.' WHERE id='.$id;
  • if($req = $this->cnx->query($sql)) {
  • return $this->rep_sql = 1;
  • //echo '<div class="admin-ok">Requête réussi</div>';
  • //$mess_suppr_reussi
  • } else {
  • return $this->rep_sql = 2;
  • //echo '<div class="admin-no">Requête concernée : "',$sql,'"</div>';
  • //$mess_erreur_requete
  • exit();
  • }
  • } else {
  • return $this->rep_sql = 3;
  • //echo '<div class="admin-no">ID n\'existe pas ou plus</div>';
  • //$mess_erreur_existance
  • exit();
  • }
  • } else {
  • return $this->rep_sql = 4;
  • //echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
  • //$mess_erreur_connec_bdd
  • exit();
  • }
  • }
  • /*///////////////////////////////////////////////////////////////////////////////////////////////
  • Destructeur de connexion bdd
  • /////////////////////////////////////////////////////////////////////////////////////////////*/
  • function __destruct() {
  • //Déclenchement de la deconnexion
  • //echo "Destructeur déclenché !";
  • $this->cnx->close();
  • }
  • }//class Model {
  • ?>
<?php
class Model {

//Déclaration des attributs public
	public $cnx;
	public $table;
	public $id;
	public $rep_sql;
//Déclaration des attributs private de connec
	private $_hote = "localhost";
	private $_identifiant = "root";
	private $_mot_de_passe = "";
	private $base_de_donnees = "coeur_of_prog";
	private $port = 3306;//default : 3306
	
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////
Constructeur de connexion bdd
//////////////////////////////////////////////////////////////////////////////////////////////////////////*/	
function __construct() {
	
	//Déclenchement de la connexion
	//echo 'Constructeur déclenché !';
	$this->cnx = new mysqli(
		$this->_hote,$this->_identifiant,
		$this->_mot_de_passe,$this->base_de_donnees,
		$this->port
				); 
        if (mysqli_connect_errno()) {
            echo '<div class="admin-no">Échec de la connexion : '.mysqli_connect_error().'</div>';
            exit();
        }

 }
/*/////////////////////////////////////////////////////////////////////////////////////////////////////
Chargement du model
///////////////////////////////////////////////////////////////////////////////////////////////////*/ 		
static function load($name){
	
	require("$name.php");
	return new $name();

}
/*///////////////////////////////////////////////////////////////////////////////////////////////
Existance de l'id
/////////////////////////////////////////////////////////////////////////////////////////////*/
public function existance($id) {
	
	if (!empty($id) && is_numeric($id)) {
		$sql = 'SELECT id FROM '.$this->table.' WHERE id='.$id;
		if($this->cnx){	
			if($req = $this->cnx->query($sql)) {
				//On verifie si l'id existe dans la table RETURN TRUE OU FALSE
				if ($req->num_rows != 0) { return TRUE; } else { return FALSE; }
			} else {
				//return $this->rep_sql = 1;
				echo '<div class="admin-no">Requête concernée : "',$query,'"</div>';
				//$mess_erreur_requete
				exit();
			}
		} else {
			//return $this->rep_sql = 2;
			echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
			//$mess_erreur_connec_bdd
			exit();
		}
	} else {
		//return $this->rep_sql = 3;
		echo '<div class="admin-no">Votre demande n\'est pas valide</div>';
		//$mess_erreur_existance
		exit();
	}
		
}
/*///////////////////////////////////////////////////////////////////////////////////////////////
Lecture
/////////////////////////////////////////////////////////////////////////////////////////////*/ 	
public function read($fields=null) {
		
	if($fields==null){ $fields = "*"; }//si les champs sont null je select tt
		$sql = 'SELECT '.$fields.' FROM '.$this->table.' WHERE id='.$this->id;
		if($this->cnx){	
			if($req = $this->cnx->query($sql)) {
				if ($req->num_rows != 0) {//on verifie que la table n'est pas vide
					$data = $req->fetch_array();	
						foreach($data as $k=>$v){
							$this->$k = $v;
						}
					return $this->rep_sql = 1;//Affichage tbl
					//echo '<div class="admin-ok">Requête réussi</div>';
					$this->free_result();//on libere la memoire
				} else {
					return $this->rep_sql = 2;
					//echo '<div class="admin-no">Aucune informations</div>';
					//$mess_erreur_no_infos
					exit();
				}	
			} else {
				return $this->rep_sql = 3;
				//echo '<div class="admin-no">Requête concernée : "',$sql,'"</div>';
				//$mess_erreur_requete
				exit();
			}
		} else {
			return $this->rep_sql = 4;
			//echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
			//$mess_erreur_connec_bdd
			exit();
		}
		
}
/*///////////////////////////////////////////////////////////////////////////////////////////////
Affichage liste
$sql = 'SELECT '.$fields.' FROM '.$this->table.' WHERE '.$conditions.' ORDER BY '.$order.' '.$limit;
/////////////////////////////////////////////////////////////////////////////////////////////*/ 	
public function find($data=array()){		

	if(isset($data["conditions"]) && isset($data["fields"]) && isset($data["order"])) {
		$conditions = $data["conditions"];
		$fields = $data["fields"];
		$order = $data["order"];
	$sql = 'SELECT '.$fields.' FROM '.$this->table.' WHERE '.$conditions.' ORDER BY '.$order;	
	}
	if(isset($data["limit"])) { //si on fixe une limit
		$limit = "LIMIT ".$data["limit"];
	$sql .= ' '.$limit;	
	}
	if($this->cnx) {			
		if($req = $this->cnx->query($sql)) {
			if ($req->num_rows != 0) {//on verifie que la table n'est pas vide
				$d = array();
					while($data = $req->fetch_array()){
						$d[] = $data;
					}
				return $d;
				return $this->rep_sql = 1;//Affichage tbl
				//echo '<div class="admin-ok">Requête réussi</div>';
				$this->free_result();//on libere la memoire
			} else {
				return $this->rep_sql = 2;
				//$mess_erreur_no_infos
				exit();
			}	
		} else {
			return $this->rep_sql = 3;
			//echo '<div class="admin-no">Requête concernée : "',$sql,'"</div>';
			//$mess_erreur_requete
			exit();
		}
	} else {
		return $this->rep_sql = 4;
		//echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
		//$mess_erreur_connec_bdd
		exit();
			
	}
	
}
/*///////////////////////////////////////////////////////////////////////////////////////////////
Update
/////////////////////////////////////////////////////////////////////////////////////////////*/
public function update($data){
	
	//est-ce que c defini et est-ce que c different de vide
	if(isset($data['id']) && !empty($data['id']) && is_numeric($data['id'])){
	
		$sql ='UPDATE '.$this->table.' SET ';
		foreach($data as $k=>$v){
			if($k!='id'){
			$sql .= ''.$k.'="'.$v.'",'; 
			}
		}
		$sql = substr($sql,0,-1);
		$sql .= 'WHERE id='.$data['id'];
					
		if($this->cnx){		
			if($req = $this->cnx->query($sql)) {
				$this->id = $data['id'];//on recup l'id modif
				return $this->rep_sql = 1;
				//echo '<div class="admin-ok">Requête réussi</div>';
				//$mess_modif_reussi 
			} else {
				return $this->rep_sql = 2;
				//echo '<div class="admin-no">Requête concernée : "',$sql,'"</div>';
				//$mess_erreur_requete
				exit();
			}	
		} else {
			return $this->rep_sql = 3;
			//echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
			//$mess_erreur_connec_bdd
			exit();
		}
	}//if(isset($data['id']) && !empty($data['id']) && is_numeric($data['id'])){
		
}
/*///////////////////////////////////////////////////////////////////////////////////////////////
Insertion
/////////////////////////////////////////////////////////////////////////////////////////////*/
public function save($data){
	
	$sql = 'INSERT INTO '.$this->table.' (';
	//unset($data['id']); //Destruction de l'id
	foreach($data as $k=>$v){
		$sql .= ''.$k.','; 
	}
		$sql = substr($sql,0,-1);
		$sql .= ') VALUES (';
	foreach($data as $v){
		$sql .= '"'.$v.'",';
	}
		$sql = substr($sql,0,-1);
		$sql .= ')';	
		   		
	if($this->cnx){		
		if($req = $this->cnx->query($sql)) {
			$this->id = $this->cnx->insert_id;//on recup l'id inserer
			return $this->rep_sql = 1;
			//echo '<div class="admin-ok">Requête réussi</div>';
			//$mess_insert_reussi
		} else {
			return $this->rep_sql = 2;
			//echo '<div class="admin-no">Requête concernée : "',$sql,'"</div>';
			//$mess_erreur_requete
			exit();
		}	
	} else {
		return $this->rep_sql = 3;
		//echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
		//$mess_erreur_connec_bdd
		exit();
	}		
		
}
/*///////////////////////////////////////////////////////////////////////////////////////////////
Suppression
/////////////////////////////////////////////////////////////////////////////////////////////*/ 	
public function del($id){
	
	if($this->cnx){
		if ($this->existance($id) == TRUE) {	
			$sql = 'DELETE FROM '.$this->table.' WHERE id='.$id;
			if($req = $this->cnx->query($sql)) {
				return $this->rep_sql = 1;
				//echo '<div class="admin-ok">Requête réussi</div>';
				//$mess_suppr_reussi
			} else {
				return $this->rep_sql = 2;
				//echo '<div class="admin-no">Requête concernée : "',$sql,'"</div>';
				//$mess_erreur_requete
				exit();
			}
		} else {
			return $this->rep_sql = 3;
			//echo '<div class="admin-no">ID n\'existe pas ou plus</div>';
			//$mess_erreur_existance
			exit();
		}		
	} else {
		return $this->rep_sql = 4;
		//echo '<div class="admin-no">Erreur SQL n°',$this->errno,' : ',$this->error,'</div>';
		//$mess_erreur_connec_bdd
		exit();
	}

}
/*///////////////////////////////////////////////////////////////////////////////////////////////
Destructeur de connexion bdd
/////////////////////////////////////////////////////////////////////////////////////////////*/ 
function __destruct() {
	
	//Déclenchement de la deconnexion
	//echo "Destructeur déclenché !";
	$this->cnx->close();
	 
}			
}//class Model {
?>

 Conclusion

Pour l'installation :

Dans le fichier "model/model.php" en haut les informations de connec à la bdd
Un exemple de la base est disponible dans le fichier "base_coeur_of_prog.sql"
BDD => coeur_of_prog

Voila j'attends vos commentaires sur l'utilisation de cet technique.
Et sur la façon dont celle ci est codé.

PS : Pensez à activé l'extension "Mysqli"

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

15 mai 2010 11:19:42 :
Mise à jour de plusieurs éléments dans le code cf commentaires du 15/05/2010

 Sources du même auteur

Source avec Zip ESPACE MEMBRE AVEC MESSAGERIE V3
Source avec Zip Source avec une capture COCKTAILS PARTY
Source avec Zip ESPACE MEMBRE AVEC MESSAGERIE V2.1

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

Source avec Zip POO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COM par mtrix000
Source avec Zip Source avec une capture TODO LIST (AJAX/PHP5) par VinceMonkeyz
Source avec Zip CLIENT / SERVEUR : LES SOCKETS par Morphinof
Source avec Zip DESIGN PATTERNS - CREATEURS par Morphinof
GESTION FTP (CLASSE) par shevabam

Commentaires et avis

Commentaire de emilia123 le 10/05/2010 10:56:17

bonjour,

Le code est sympa, mais j'aurais fais 2 ou 3 commentaires :

1) au niveau formalisme il est conseillé (car plus rapide) d'utiliser la concaténation et les simples quotes.
ex : (ton code) "DELETE FROM ".$this->table." WHERE id=$id" (php est obligé de chercher les variables dans les " ... "
il vaudrait mieux : 'DELETE FROM '.$this->table.' WHERE id='.$id
les différents tests disponibles sur internet semblent tous montrer une rapidité plus élevée pour les ' '.$var.' '

2) au niveau fonctionnement, aucune sécurisation des données de la requete n'est effectuée.
ex  pour l'update d'un enregistrement, le script appelant (modif.php) recupere le id ($id_choix_modif = $_POST["txt_id"]) et le passe directement à la fonction d'update. si l'internaute passe "1 or 1=1", toute la table va être updatée. le id étant numérique, il faudrait forcer via $id=intval($id) ou caster $id=(int)$id
le (int) est bien a d'autres endroits mais pas à celui la. cela ne couterait rien que la verif soit DANS la fonction d'update (mieux vaut le faire à l'endroit où c'est utilisé, plutôt qu'a 20 endroits et risquer l'oubli).
et pour rappel :  http://www.php.net/manual/fr/mysqli.query.php indique : "Les données contenues dans la requête doivent être échappées."

3) au niveau code, dans la fonction find, si je ne passe pas de order (si il y a un test sur l'existence, c'est que je peux ne pas le passer), bin la requête ne fonctionnera plus, le texte "order by" étant toujours présent dans la requête.

4) en fait tous les tests dans la partie find() ne servent pas à grand chose dans l'état. field est obligatoire (sinon la requete plante) donc pourquoi faire un test sur le passage de cette variable, et ne rien faire si rien n'est passé?
pareil pour les conditions, si rien n'est passé, ca plante.
Il serait plus optimisé de générer un retour immédiat plutôt que de laisser tourner la fonction sachant que ca va planter.




Je n'ai fais que survoler le code, mais j'espère que cela pourra t'aider.

Cordialement,

EM.

Commentaire de nashouille le 10/05/2010 12:08:23

il aurais été plus simple d'étendre l'api MySqli. avec un simple fonction pour généré les requêtes.
Il y a de l'idée mais c'est vue et revue dommage !
Amicalement



Commentaire de guisx00 le 10/05/2010 19:20:43

Bonjour,

EMILIA123 :
1) oui tout à fait merci de le faire remarque. Je vais changer sa.
2) Pour la secu comme je l'es mis dans la description plus haut, je n'est pas mis les vérifications de formulaires etc. (histoire de pas file un script clé en main ^^)
3 et 4) Je comprends se que tu veux me dire je vais réfléchir à amélioré sa.

En tout cas merci pour ses quelques conseils sa va m'aide je pense. Je me tâte encore bcp sur l'utilisation d'un tel procédé pour un site.

Est-ce vraiment viable pour une structure assez conséquente ou pas ? (temps d'exécution etc)


Nashouille : Que veux tu dire par étendre l'api Mysqli ?

Commentaire de guisx00 le 15/05/2010 11:31:01

Bonjour à tous,

Dsl pour la lenteur de la mise à jour du code mais j'ai été pas mal occupé c derniers jours

Alors en changement :

Ajout d'une fonction de vérification d'existance d'un enregistrement
Amélioration des structures des fonctions et de la manière dont elle sont écrite
Ajout d'une vérification de doublons au moment de l'ajout ou de la modif d'un enregistrement
(bientôt en fonction, je suis entrain d'y réfléchir)
Séparation de la fonction save en deux (une fonction pour modif et une fonction pour l'insert)
Séparation des pages insert et modif (une page avec le formulaire/une page avec le script)

A venir :

- Fonction de gestion des requêtes de différentes opération sur la table (OPTIMIZE,FLUSH,REPAIR,TRUNCATE)
- Création d'un fonction de recherche de doublons
- Mise en place d'un système de pagination pour la fonction find
- Optimisation de la rapidité d'exécution du script

Voilà déjà en gros pour les 1ère améliorations.
N'hésitez pas à me donner votre avis sur ses nouveautés et peut être vos idées d'amélioration

Bonne journée et bonne fin de week end

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Class POO retourné le nom de l'objet [ par MeTh ] Bonjour,Comment retourné le nom de l'objet déclaré?exemple :$monobjet = new GridR();comment recuperé $monobjet dans ma class?Merci templates avec poo [ par lesnes ] bonjours je reprogramme totalement mon site en poo et je souhaiterai utiliser les templates mais l'on ne peut pas faire appel a une class exterieur a pb avec CREATE DATABASE [ par Joleroy ] Bonjour a tous,J' ai ecrit ce petit bout de code qui cr&#233;e un utilisateur, lui creer un base de donn&#233;e, et lui donne des droit sur cette&nbsp Problème code Mysql [ par Thomas46 ] Bonjour, Voil&#224; j'ai un petit probl&#232;me avec mon code et je ne trouve pas l'erreur, je cherche encore et encore mais toujours le m&#234;me r& Probleme en POO [ par pablor44 ] Bonjour,alors voil&#224; je vous explique mon probleme, je suis en train d'ecrire une classe en php pour mon site et je me retrouve dans la situation Erreur MySQL [ par coockiesch ] Salut! Je viens d'installer, sur mon ordi, Apache2, MySQL, PHP5 et PhpMyAdmin. On m'a demand&#233; de choisir l'extension mysqli, je choisi mysqli (pa Gestion membres via POO [ par FhX ] Je me posais la question justement. Pour pouvoir faire une interface membre (donc : admin + membre + visiteur), dois-je faire ca en une seule classe ? Probleme avec mysqli et php5 [ par saccomabi ] &nbsp;&nbsp;&nbsp; Bonjour,mon probleme est de ne pas pouvoir dans mon script php utilis&#233; la class mysqlidans mon php.ini je pense que c'est bonj logiciel POO [ par kowal2205 ] Je me pose la question de la cr&#233;ation de mes classes dans un projet de taille moyenne car je ne trouve pas de logiciel &#224; mon pied qui me per Reflexion sur un schema de POO (gestion d'emploi du temps d'une UFR) [ par Franquito ] Bonjour à tous ! Je dois réaliser un schema pour une application de programation orienté objet. L'application fait la gestion d'emploi du temps d'un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales