[Problème] fonction mysql avec php et singleton

Petit nouveau ! | 1 Messages

13 mars 2010, 16:12

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

Mammouth du PHP | 568 Messages

15 mars 2010, 11:30

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.

ViPHP
ViPHP | 5462 Messages

15 mars 2010, 11:36

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

devlop78
Invité n'ayant pas de compte PHPfrance

25 mars 2010, 02:22

Simple question ...

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