Page 1 sur 1

[Problème] fonction mysql avec php et singleton

Posté : 13 mars 2010, 16:12
par yannnnnnnnnn
Bonjour,

Je développe actuellement un site web et j'ai un problème d'accès à ma base de donnée mysql à partir de mon code php.
La requête que j'effectue marche sur mysql mais pas en php.


J'ai trouvé une fonction mysql me permettant de réaliser un split sur un des attributs de la table concernée.

CREATE FUNCTION strSplit(x varchar(255), delim varchar(12), pos int) returns varchar(255)
return replace(substring(substring_index(x, delim, pos), length(substring_index(x, delim, pos - 1)) + 1), delim, '');

J'ai un champs date de type String (je ne peux pas le changer en type datetime) dans ma table et j'aimerais récupérer les tuples dont la date est inférieur à la date du jour.
J'utilise pour ce faire le code :

$pDatabase = Singleton::getConnexion("localhost", "root", "root", "AtoB");


	$req="select * from trajets where frequency='unique' and ";
	$req.="(strSplit(date, '/',3) < strSplit(CURRENT_DATE(), '-',1) or ";
	$req.="(strSplit(date, '/',3)=strSplit(CURRENT_DATE(), '-',1) and strSplit(date, '/',2) < strSplit(CURRENT_DATE(), '-',2) ) or ";
	$req.="(strSplit(date, '/',3)=strSplit(CURRENT_DATE(), '-',1) and strSplit(date, '/',2)=strSplit(CURRENT_DATE(), '-',2) and strSplit(date, '/',1) < strSplit(CURRENT_DATE(), '-',3)));";
	
	
		$resultat = $pDatabase->select($req);
	
	while ($data = mysql_fetch_array($resultat) )
	{	
			
		echo $data['id']."-->";
			
	}	

La classe Singleton me permet d'exécuter les requêtes sql en n'ayant qu'un seul accesseur vers la base de donnée.

la fonction sélect est la suivante :

    public function select($req)
    {
        if (!isset($this->id) && empty($this->id)) // Test si une connexion existe si elle n'existe pas
            $this->getConnexion($host, $user, $pass, $base); //on essaye dans créer une.
        else {
            if (!isset($req) && empty($req)){
                header("Location:./erreur.php?erreur='requete_invalide'&code='1'");
			}
            else {
                try {
                    $resultat = mysql_query( $req );
                   
                }
                catch(Exception $e) {
                	
                    header("Location:./erreur.php?erreur='requete_impossible'&code='1'");
                }
	
                return $resultat;
            }
        }
    }
le problème est que le resultat est vide, alors que la même requête effectué sur mysql retourne plusieurs tuples.

Auriez vous une solution à ce problème?

D'avance merci

Re: [Problème] fonction mysql avec php et singleton

Posté : 15 mars 2010, 11:30
par Yosh
C'est pas un peu compliqué pour gérer une date ça??? et surtout pas vraiment portable.

Regarde pour modifier la structure de ta table et passé ton champs en timestamp.

Re: [Problème] fonction mysql avec php et singleton

Posté : 15 mars 2010, 11:36
par stealth35
pourquoi faire un try...catch sur le mysql_query, cette fonction ne rend aucune exception
et mysql gerer meme mieux les dates que php
http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

Re: [Problème] fonction mysql avec php et singleton

Posté : 25 mars 2010, 02:22
par devlop78
Simple question ...

Singleton::getConnexion("localhost", "root", "root", "AtoB"); instancie-t-elle un objet en te le retournant avec return ?