PHP - Affichage multiple requete SQL

Résolu/Fermé
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015 - Modifié par Magyc41 le 19/02/2013 à 12:17
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 19 févr. 2013 à 20:55
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

Profil bloqué
19 févr. 2013 à 13:54
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');
?>
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
19 févr. 2013 à 13:59
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();
}

?>
0
Profil bloqué
19 févr. 2013 à 14:01
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());
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
19 févr. 2013 à 14:24
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 />'; 

        ?>
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
19 févr. 2013 à 14:33
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>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 févr. 2013 à 14:34
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 ();   

?> 
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
19 févr. 2013 à 14:37
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 ? )
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 févr. 2013 à 20:55
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
0