[PHP/mySQL] afficher une clé sur une page
Résolu
Eastchild
Messages postés
319
Date d'inscription
Statut
Membre
Dernière intervention
-
Eastchild Messages postés 319 Date d'inscription Statut Membre Dernière intervention -
Eastchild Messages postés 319 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un petit problème avec une clé qui ne veut pas s'afficher. Pour vous expliquer le problème, voici un bout de code :
$sql='SELECT * FROM CLIENT, FACTURE, COMMANDE WHERE devis=0';
$res=mysql_query($sql);
while($row=mysql_fetch_array($res))
{
echo'<table border="2" align="center">';
echo'<tr align="center">';
echo'<td><center><font> <b>'.$row["n°facture"].'F</b> </font></center></td>'; //ici le numero de la facture avec un F pour confirmer qu'il ne s'agit pas d'un devis
le soucis étant que n°facture est la clé primaire de FACTURE et aussi une clé étrangère de COMMANDE. D'où mon problème pour identifier la clé par rapport à la bonne table à savoir FACTURE.
Merci d'avance.
j'ai un petit problème avec une clé qui ne veut pas s'afficher. Pour vous expliquer le problème, voici un bout de code :
$sql='SELECT * FROM CLIENT, FACTURE, COMMANDE WHERE devis=0';
$res=mysql_query($sql);
while($row=mysql_fetch_array($res))
{
echo'<table border="2" align="center">';
echo'<tr align="center">';
echo'<td><center><font> <b>'.$row["n°facture"].'F</b> </font></center></td>'; //ici le numero de la facture avec un F pour confirmer qu'il ne s'agit pas d'un devis
le soucis étant que n°facture est la clé primaire de FACTURE et aussi une clé étrangère de COMMANDE. D'où mon problème pour identifier la clé par rapport à la bonne table à savoir FACTURE.
Merci d'avance.
A voir également:
- [PHP/mySQL] afficher une clé sur une page
- Comment supprimer une page sur word - Guide
- Clé usb non détectée - Guide
- Clé windows 8 - Guide
- Formater une clé usb - Guide
- Imprimer tableau excel sur une page - Guide
7 réponses
Bonjour,
je pense que le n° facture doit être préfixé par le nom de la table
select facture.nofac, client.nofac, facture.nofac ...from CLIENT, COMMNADE, FACTURE where ...
cela pourra peut être solutionner le problème
je pense que le n° facture doit être préfixé par le nom de la table
select facture.nofac, client.nofac, facture.nofac ...from CLIENT, COMMNADE, FACTURE where ...
cela pourra peut être solutionner le problème
Commence par éviter le '°' dans un nom de colonne, SQL n'aime pas toujours les caractères spéciaux ('_' passe bien).
Ensuite, une requête comme la tienne sur plusieurs tables dont des noms de colonnes sont les mêmes, renverra une erreur "Column 'XXX' in where clause is ambiguous " et donc pas de données. Tu ne risque pas de retrouver un n° de facture donc.
Pour faire une requête sur plusieurs tables liées, qui ont par exemple, le n° de facture/de client commun, il faut utiliser les jointures
Par exemple :
Je te renvois sur un tutoriel complet et clair sur les jointures SQL et requêtes sur plusieurs table:
https://sqlpro.developpez.com/cours/sqlaz/jointures/
Ensuite, une requête comme la tienne sur plusieurs tables dont des noms de colonnes sont les mêmes, renverra une erreur "Column 'XXX' in where clause is ambiguous " et donc pas de données. Tu ne risque pas de retrouver un n° de facture donc.
Pour faire une requête sur plusieurs tables liées, qui ont par exemple, le n° de facture/de client commun, il faut utiliser les jointures
Par exemple :
SELECT Fac.*, Cli.*, Com.* FROM facture as Fac JOIN client as Cli ON Cli.client_id = Fac.client JOIN commande as Com ON Com.n_facture = Fac.n_facture WHERE Fac.n_facture = 1
Je te renvois sur un tutoriel complet et clair sur les jointures SQL et requêtes sur plusieurs table:
https://sqlpro.developpez.com/cours/sqlaz/jointures/
bonjours,
En fait le promblème ne vient pas de SQL mais de la ligne
(
En fait le promblème ne vient pas de SQL mais de la ligne
echo'<td><center><font> <b>'.$row["n°facture"].'F&l t;/b> </font></center></td>'qui ne semble pas reconnaitre les jointures.
(
echo'<td><center><font> <b>'.$row["facture.n°facture"].'F&l t;/b> </font></center></td>'ne marche pas)
echo '<td><center><font> <b>'.$row["n°facture"].'F</b> </font></center></td>'
Cette ligne ne comporte aucune erreur syntaxique.
Si effectivement ta reqûete SQL renvois des résultats correcte, vérifie la structure de ton tableau $row avec un var_dump($row), tu sauras ainsi quel index utiliser pour retrouver ton numéro de facture.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Comment je sélectionne l'index dans la ligne de code
je note echo '<td><center><font> <b>'.$row["index correct"].'F</b> </font></center></td>' ?
je note echo '<td><center><font> <b>'.$row["index correct"].'F</b> </font></center></td>' ?
l'index d'un tableau est le "nom" donné à une case. Par défaut c'est 0 pour la première, 1, 2, 3, etc
D'ailleurs tu viens de me faire tilter sur un détail que je n'avais pas remarqué.
En utilisant mysql_fetch_array(), les index de ton tableau de retour seront 0, 1, 2, etc
Si tu veux pouvoir appeler tes variables par $row["nom_colonne"], il faut utiliser mysql_fetch_assoc()
https://www.php.net/manual/fr/function.mysql-fetch-assoc.php
D'ailleurs tu viens de me faire tilter sur un détail que je n'avais pas remarqué.
En utilisant mysql_fetch_array(), les index de ton tableau de retour seront 0, 1, 2, etc
Si tu veux pouvoir appeler tes variables par $row["nom_colonne"], il faut utiliser mysql_fetch_assoc()
https://www.php.net/manual/fr/function.mysql-fetch-assoc.php