Mysql_select + mysql_fetch_array.. simplifié

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 632 fois - Téléchargée 23 fois

Contenu du snippet

salut a tous.
Alors voila, je develope tous les jours des sites web, utilisant php+Mysql.. on se rend compte que les fonction sont souvent appeler pr lister un tableau d'une db.. boutique en ligne, album photo etc.

Bref j'ai fait une classe qui me permet en une ligne d'utiliser mysql_query("SELECT * FROM $table"); + mysql_fetch_array($sql_result).

La voila! rien d'extraordinaire, je pense juste que ca peut accelerer le developpement de certains..
A bientot pour des codes un peu plus poussé:p
Bobidop©

Source / Exemple :


class sql {
	
	function sql()	
	{
		/* Connection a la base de donnée */
		$connect = @mysql_connect(host_sql, login_sql, passwd_sql);
		if(!$connect)
		{
				echo "<span style='color:red; font-size:20px;'>
							En raison d'un problème avec la base de donnée, certaines parties du site sont suceptible de ne pas fonctionner.<br />
							Veuillez réessayer ultèrieurement.
						</span>
			";
		}
	
		@mysql_select_db(db_sql, $connect);
		
	}
	
	function select($query, $sql_result) // mysql_query + mysql_fetch_array
	{
		if (!$sql_result)
		{
			$this->sql_result = mysql_query($query);
		}
			return mysql_fetch_array($this->sql_result);
	}
}
?>
<?php
/*
utilisateion : 

  • /
$sql = new sql; while($row = $sql->select("SELECT * FROM table")) { echo $row['filed']; } ?>

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
lundi 18 octobre 2004
Statut
Membre
Dernière intervention
17 avril 2007

Une tentative qui a déjà été faite et refaite.
Piège des débutants qui decouvrent l'objet et php, qui pensent trouver une idée de génie en faisant cela, mais qui au final se provoque plus de galère que autre chose.

Grand classique !
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Jmy met moi aussi :

function select($query, $sql_result) { // }
Méthode à 2 arguments et pourtant :
while($row = $sql->select("SELECT * FROM table"))

^==^ la haut y'en a qu'un seul ! Déja y'a un problème :)

"# if (!$sql_result)
# {
# $this->sql_result = mysql_query($query);
# }"

Tu fais un test sur quoi ? J'ai pas tout saisi la ... !

JE vois ce que tu veux faire. Pour faire ce que tu veux, tu dois faire quelque chose de plus grossier :

class mysql {
public $query;
public $sql;
public $iterate = FALSE;

// J'épargne la connection.

// $sql est la chaine SQL.
public function query($sql) {

if ( ! $this->iterate ) { // On vérifie si y'a pas déja eu un query()
$this->sql = $sql;
$this->query = mysql_query($this->sql) or die (mysql_error());
if ( mysql_num_rows($this->query) > 1 ) $this->iterate = TRUE;
} // Si y'a plus d'un enregistrement (donc faut boucler, on initialise Iterate pour éviter de refaire une requète.

if ( FALSE !( $data mysql_fetch_array($this->query) ) ) {
return $data; // Si ca boucle tjs, on renvoit
} else {
$this->iterate = FALSE; // Sinon on stop.
}

}

}

Bien entendu, ne jamais utiliser la méthode que j'ai mise :) C'est juste pour l'exemple lol !
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Ta source ne marche pas telle quelle:
# if (!$sql_result)
# {
# $this->sql_result = mysql_query($query);
# }
>> Renvoie une notice car $sql_result pas pasés en param dans ton exemple

>> La fonction doit prendre deux params, sinon une erreur de plus

Me semble pas que $this->sql_result est défini...

Dommage d'utiliser mysql_fetch_array: je préfère soit mysql_fetch_row soit mysql_fetch_assoc

Pour terminer, y'a pas de gestion d'erreurs. Ainsi, si la requête contient une erreur mysql_fetch_array, renvoie une erreur...

@++

R@f
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Salut...

Je vois pas trop l'interet de réinventer la roue... tu aurais fait une classe d'abstraction SGDB d'accord mais il n'y aucun interet de faire une classe pour encapsuler les fonctions sql... c'est faire de l'objet histoire de faire de l'objet... tu gagne peut être en charactères à taper pour coder mais tu perd en performances... .. .

function sql()
{
/* Connection a la base de donnée */
$connect = @mysql_connect(host_sql, login_sql, passwd_sql);

D'où viennent host_sql, login_sql et passwd_sql... pareil pour db_sql... .. ?

Personnellement je trouve incorrect que ta classe gère l'affichage des erreurs... ce n'est pas son role... qui plus est si la connection échoue tu affiche un message d'erreur... c'est bien (quoique) mais tu ne shunte pas le mysql_select_db ce qui fera planter ton script... ou alors il faut remplacer le echo par un die mais pour un site pro en production c'est crade... .. .

incorrect => echo "...
correct => echo '...

Quel interet de mettre le mysql_fetch_array dans la methode select()... aucun... il faut faire une methode pour éxécuter les requete et une pour les traiter... .. .

SELECT * est à éviter car gourmand en resources d'autant plus qu'il n'est pas utile de rapatrier le contenu de tous les champs d'une table si tu n'a besoin que du contenu d'un seul champ... et tu fais comment si tu veux rajouter une clause WHERE... .. ?

Voili voilou... je te conseil de jeter un coup d'oeil à la classe qu'a posté FhX sur ce site elle est beaucoups plus complete... .. .

^_^

@ tchaOo°
Messages postés
9
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
30 juillet 2006

oup's j'ai oublié un truc..

while($row = $sql->select("SELECT * FROM table", $row))
{
...
}

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.