IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

problème de requête sur une base postgresql [PostgreSQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 423
    Points : 133
    Points
    133
    Par défaut problème de requête sur une base postgresql
    Bonjour,

    j'essaie de faire une requête à partir de php sur une base postgresql, mais ça me retourne n'importe quoi.
    voici le code (c'est pour faire un test de droit d'accès):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    // Test de l'envoi du formulaire
     
    	if(isset($_POST['connexion'])){
     
    		// Les identifiants sont transmis ?
     
    		if(!empty($_POST['login']) && !empty($_POST['password'])) {
     
     
    			// teste si les identifiants entrés existent dans la base des droits d'accès			
     
    			// si oui: on ouvre la session, sinon: message d'erreur
     
    			$base = DBconnect(ACCES_SERVER, ACCES_PORT, ACCES_BASE, ACCES_USER, ACCES_PASSWORD);			
     
    			$sql = 'SELECT LOGIN, PASSWORD, SOMLIT_VIEW, SOMLIT_DNLD, MAREL_VIEW, MAREL_DNLD,'.
     
    							' ECOFLUX_VIEW, ECOFLUX_DNLD, EVECOS_VIEW, EVECOS_DNLD,'.
    							' GEOMORPH_VIEW, GEOMORPH_DNLD, METEO_VIEW, METEO_DNLD,'.
    							' ARGO_VIEW, ARGO_DNLD, HYDRO_VIEW, HYDRO_DNLD'. 
     
    					' FROM droits'.
     
    					' WHERE LOGIN=\''.$_POST['login'].'\' AND PASSWORD=\''.$_POST['password'].'\'';
     
    			$res = pg_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.pg_last_error());
     
     
     
    			if (pg_num_rows($res) > 0) {
     
    				$donnees = pg_fetch_array($res, NULL, PGSQL_ASSOC);
    echo '<script type="text/javascript">alert(\''.$res.'\');</script>';
     
    				$_SESSION['login'] = $donnees['LOGIN'];
     
    				$_SESSION['somlit_view'] = $donnees['SOMLIT_VIEW'];
     
    				$_SESSION['somlit_dnld'] = $donnees['SOMLIT_DWLD'];
     
    				$_SESSION['marel_view'] = $donnees['MAREL_VIEW'];
     
    				$_SESSION['marel_dnld'] = $donnees['MAREL_DWLD'];
     
    				$_SESSION['ecoflux_view'] = $donnees['ECOFLUX_VIEW'];
     
    				$_SESSION['ecoflux_dnld'] = $donnees['ECOFLUX_DWLD'];
     
    				$_SESSION['evecos_view'] = $donnees['EVECOS_VIEW'];
     
    				$_SESSION['evecos_dnld'] = $donnees['EVECOS_DWLD'];
     
    				$_SESSION['geomorph_view'] = $donnees['GEOMORPH_VIEW'];
     
    				$_SESSION['geomorph_dnld'] = $donnees['GEOMORPH_DWLD'];
     
    				$_SESSION['meteo_view'] = $donnees['METEO_VIEW'];
     
    				$_SESSION['meteo_dnld'] = $donnees['METEO_DWLD'];
     
    				$_SESSION['argo_view'] = $donnees['ARGO_VIEW'];
     
    				$_SESSION['argo_dnld'] = $donnees['ARGO_DWLD'];
     
    				$_SESSION['hydro_view'] = $donnees['HYDRO_VIEW'];
     
    				$_SESSION['hydro_dnld'] = $donnees['HYDRO_DWLD'];
    echo '<script type="text/javascript">alert(\''.$_SESSION['login'].'\');</script>';
     
    				header("Location:".$_SESSION['redirect']);
     
    			}
     
    			else {
     
    				echo '<script type="text/javascript">alert(\'Identifiants incorrects\');</script>'; 
     
    			}
     
    			pg_free_result($res);
     
    			DBdisconnect($base);
     
    		}
     
    		else {
     
    			$errorMessage = 'Veuillez saisir vos identifiants svp !';
     
    			echo '<script type="text/javascript">alert(\''.$errorMessage.'\');</script>'; 
     
    		}
     
    	}
    quand je fais le echo de la variable $res, ça renvoie :
    je fais ça sous linux (ubuntu), j'avais la même chose sous windows, mais j'interrogeais une base mysql, et ça marchait !

    qu'est ce qui cloche ?

    Merci,

    Nico

  2. #2
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 129
    Points : 127
    Points
    127
    Par défaut
    $res est une ressource résultant de ta requête. Donc c'est normal que tu vois ressource id #5. Elle n'est pas directement exploitable.

    Tu peux faire un var_dump($donnees) et je pense que tu verras pourquoi tu n'obtiens rien

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    justement, il me semble que l'instruction pg_fetch_array() sert à rendre $res utilisable...
    quand je fais un var_dump(), j'obtiens ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array(18) { ["login"]=>  string(20) "GABARRON " ["password"]=>  string(20) "GABARRON " ["somlit_view"]=>  string(1) "t" ["somlit_dnld"]=>  string(1) "t" ["marel_view"]=>  string(1) "t" ["marel_dnld"]=>  string(1) "t" ["ecoflux_view"]=>  string(1) "t" ["ecoflux_dnld"]=>  string(1) "t" ["evecos_view"]=>  string(1) "t" ["evecos_dnld"]=>  string(1) "t" ["geomorph_view"]=>  string(1) "t" ["geomorph_dnld"]=>  string(1) "t" ["meteo_view"]=>  string(1) "t" ["meteo_dnld"]=>  string(1) "t" ["argo_view"]=>  string(1) "t" ["argo_dnld"]=>  string(1) "t" ["hydro_view"]=>  string(1) "t" ["hydro_dnld"]=>  string(1) "t" }
    ça me semble correct au vu de la requête d'origine ...

    Nico

  4. #4
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 129
    Points : 127
    Points
    127
    Par défaut
    Tu as ton "erreur" sous les yeux, postgresql utilise des champs en minuscule donc pour accéder à tes valeurs tu dois en tenir compte.

    Pour la valeur LOGIN, tu dois passer par

    et non

    Bon courage

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    super, ça marche, merci.

    Nico

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Attention, ya pas que les champs en miniscules, les noms des tables aussi
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/03/2013, 09h46
  2. [Lazarus] Problème de requête sur une base de données
    Par bubulemaster dans le forum Lazarus
    Réponses: 1
    Dernier message: 09/11/2007, 18h14
  3. [ASP.NET]Problème de droits sur une base access
    Par dacid dans le forum ASP.NET
    Réponses: 8
    Dernier message: 25/11/2006, 11h04
  4. problème de connexion sur une base mysql
    Par boss_gama dans le forum Installation
    Réponses: 4
    Dernier message: 05/09/2006, 14h13
  5. [SQL-SERVER 2000] Problème de requête sur une seule ligne
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/04/2006, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo