PHP - Affichage multiple requete SQL [Résolu/Fermé]

Signaler
Messages postés
56
Date d'inscription
dimanche 17 février 2013
Statut
Membre
Dernière intervention
9 décembre 2015
-
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
-
Bonjour,

J'essaye désespérément d'afficher le résultat d'un requête SQL sur ma page.
Ma requête SQL marche et me retourne plusieurs résultats (les différents utilisateurs de ma table users).

Je regarde des tuto et autres et je vois qu'il faut utiliser une boucle While. Je chope un tuto qui a l'air pas mal et j'essaye de l'afficher ... mais j'ai une erreur et je n'arrive pasà la résoudre.

Je précise que ma connexion à ma BDD est correctement effectuée en début de page (j'ai d'autres requêtes qui marchent) .
Je suis sous Wamp.

Ma table se nome users et comporte plusieurs champs :
ID_USERS
login
NOM
PRENOM

mon code (quasi un c/c du tuto) :

<?php 

// lancement de la requête (on impose aucune condition puisque l'on désire obtenir la liste complète des propriétaires 
$sql = ('SELECT login, NOM, PRENOM, STATUT FROM users ORDER BY TYPE,login ASC') ;   
  
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());   
  
// on va scanner tous les tuples un par un 
while ($data = mysql_fetch_array($req)) {  
      // on affiche les résultats 
      echo 'Nom : '.$data['NOM'].'<br />';  
      echo 'Prenom : '.$data['PRENOM'].'<br /><br />';   
}   
mysql_free_result ($req);   
mysql_close ();   

?> 


le résultat :

Erreur SQL !
SELECT login, NOM, PRENOM, STATUT FROM users ORDER BY TYPE,login ASC
No database selected


4 réponses


si il te dit ca c'est que tu as mal fait ta connexion
essaie avec un code du genre :
<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = '';
$mysql_base = 'tabase';
$link = @mysql_connect($mysql_host,$mysql_user,$mysql_password) or mysqlerr(mysql_error());
@mysql_select_db($mysql_base) or mysqlerr(mysql_error());
mysql_query('SET NAMES UTF8');
?>
Messages postés
56
Date d'inscription
dimanche 17 février 2013
Statut
Membre
Dernière intervention
9 décembre 2015

C'est bizarre sa marche très bien pour mes autres requêtes !

Je dois remettre une connexion pour cette requête ? Je place ton code où ?

mon code de connexion, que j'ai en début de page :

<?php
// GESTION DES ERREURS


Try {
// PARAMETRE DE LA CONNEXION
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_port=''; // port du serveur
$PARAM_nom_bd='projet'; // le nom de votre base de données
$PARAM_utilisateur='root'; // nom d'utilisateur
$PARAM_mot_passe=''; // mot de passe
// CONNEXION
$connexion = new
PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.'
;dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe, array(
PDO::ATTR_ERRMODE =>PDO::ERRMODE_EXCEPTION
// ,PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
));

}

// RECUPERATION ET AFFICHAGE DES ERREURS

catch(Exception $e)
{
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N : '.$e->getCode();
}

?>
Profil bloqué
ton code a l'air correct
si tu remets cette ligne juste au dessus de ta requete ca fait quoi ?

@mysql_select_db('projet') or mysqlerr(mysql_error());
Messages postés
56
Date d'inscription
dimanche 17 février 2013
Statut
Membre
Dernière intervention
9 décembre 2015

Je le place comme ça ?
car j'ai ça du coup : Fatal error: Call to undefined function mysqlerr() in D:\Magyc\programme\wamp\www\Projet\index2.php on line 85

J'ai mis un ; à la fin de ta ligne, si je ne le mets pas j'ai à la place de ma page, alors qu'avec j'ai juste les erreurs au niveau de la requetes.

Parse error: syntax error, unexpected T_VARIABLE in D:\Magyc\programme\wamp\www\Projet\index2.php on line 86

<?php
        // Question 1 
        @mysql_select_db('projet') or mysqlerr(mysql_error());  
        $resultat=$connexion->query("SELECT client.CLI_NOM as client, CLI_ADD, DATE_LIV, DATE_COM, FOUR_NOM, (PRIX*QTE_VENTE) as PRIX
                FROM client
                JOIN commande on 'client'.'CLI_NOM' = 'commande'.'CLI_NOM'
                JOIN ligne_commande on 'commande'.'ID_LIGNE_CMD' = 'ligne_commande'.'ID_LIGNE_CMD'
                JOIN stock on 'ligne_commande'.'ID_STOCK' = 'stock'.'ID_STOCK'
                Where ID_CLIENT = '1' ");
        $lignes=$resultat->fetch(PDO::FETCH_OBJ);

        echo "Client : "; echo $lignes->client.'<br />';
        echo "Adresse de Livraison : ";  echo $lignes->CLI_ADD. '<br />'; 
        echo "Date_de_Livraison : "; echo $lignes->DATE_LIV. '<br />'; 
        echo "Date_de_la_commande: "; echo $lignes->DATE_COM. '<br />'; 
        echo "Fournisseur : "; echo $lignes->FOUR_NOM. '<br />'; 
        echo "Prix  : "; echo $lignes->PRIX. '<br />'; 

        ?>
Messages postés
56
Date d'inscription
dimanche 17 février 2013
Statut
Membre
Dernière intervention
9 décembre 2015

J'ai il me semble résolu le problème.
J'ai simplifié tout ce que j'avais fait .. il me semble.

Le problème est que je n'arrive pas à savoir pourquoi ça ne marchait pas avec mon premier code de connexion à ma bdd .. et je ne vois pas trop la différence entre les deux code.

la connexion maintenant

<?php

// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');

// on sélectionne la base
mysql_select_db('projet',$db);

?>



ma requête :

<select name="choix">
<option value="Votre choix">---Votre choix---</option>


<?php
$sql= "SELECT DISTINCT login FROM users ";
$liste = mysql_query($sql);
while ($valeur=mysql_fetch_array($liste))
{
echo "<option>".$valeur["login"]."</option>";
}
?>
<option value="Autres">Autres</option>
</select>
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
884
essayes comme ça:

<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = '';
$mysql_base = 'tabase';
$link = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die("Pb connexion serveur: ".mysql_error());
mysql_select_db($mysql_base) or die("Pb selection base: ".mysql_error());
$query="SELECT login, NOM, PRENOM, STATUT FROM users ORDER BY TYPE,login ASC"; 
$req=mysql_query($query);
while ($data = mysql_fetch_array($req)) {  
      // on affiche les résultats 
      echo 'Nom : '.$data['NOM'].'<br />';  
      echo 'Prenom : '.$data['PRENOM'].'<br /><br />';   
}   
mysql_free_result ($req);   
mysql_close ();   

?> 
Messages postés
56
Date d'inscription
dimanche 17 février 2013
Statut
Membre
Dernière intervention
9 décembre 2015

Ce que tu viens de m'envoyer marche !

Il faut que je mette une connexion dans chaque requête ? (ou que je mette tous mes requêtes dans les balises php de ma connexion ? )
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
884
non tu mets seulement une connexion au début de ta page php

puis ensuite tu peux faire autant de requettes que tu veux

à condition bien sur le ne mettre mysql_close() qu'a la fin de la page après les différentes requettes