Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/02/2008, 11h54   #1
Membre du Club
 
Inscription : janvier 2008
Messages : 706
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 706
Points : 66
Points : 66
Par défaut [SQL] Affichage de la base dans un tableau

bonjour,
voila mon code :
Code :
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
<?php
include("../../../../../include/session.php");
 
//récupère tous les enregistrements
$description = "";
$keywords = "";
$subject = "";
$title = "";
$fakea = "";
$menu = false;
$body = '';
 $liste_marque = mysql_query('SELECT * FROM imprimante');
$marque = mysql_fetch_array($liste_marque)
 
$sql = ('Select * FROM cartouche INNER JOIN accepter ON imprimante.id_imprimante = accepter.id_imprimante WHERE accepter.id_cartouche = '.$marque['ref_cartouche']);
$bdd -> sendQuery($sql);
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$res = mysql_num_rows($req);
if($res) {
    // debut du tableau
     // première ligne on affiche les titres prénom et surnom dans 2 colonnes
	$body = '<h3>Liste des Devis</h3><center><table bgcolor="#FFFFFF"></br>
			<tr>
       <td bgcolor="#669999"><b><u>Situation</u></b></td>
       <td bgcolor="#669999"><b><u>Nom</u></b></td>
       <td bgcolor="#669999"><b><u>Adresse</u></b></td>       
	   <td bgcolor="#669999"><b><u>CP</u></b></td>
	   <td bgcolor="#669999"><b><u>Ville</u></b></td>
	   <td bgcolor="#669999"><b><u>Pays</u></b></td>
	   <td bgcolor="#669999"><b><u>Telephone</u></b></td>
	   <td bgcolor="#669999"><b><u>Email</u></b></td>
	   <td bgcolor="#669999"><b><u>Description</u></b></td>
	   <td bgcolor=""669999"><b><u>Date de devis</u></b></td>
      </tr></br>';
 
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($req)) {
	$body .= '<tr>
		<td bgcolor="#CCCCCC">'.$row["situation"].'</td>
		<td bgcolor="#CCCCCC">'.$row["nom"].'</td>
		<td bgcolor="#CCCCCC">'.$row["adresse"].'</td>
		<td bgcolor="#CCCCCC">'.$row["cp"].'</td>
		<td bgcolor="#CCCCCC">'.$row["ville"].'</td>
		<td bgcolor="#CCCCCC">'.$row["pays"].'</td>
		<td bgcolor="#CCCCCC">'.$row["tel"].'</td>
		<td bgcolor="#CCCCCC">'.$row["email"].'</td>
		<td bgcolor="#CCCCCC">'.$row["description"].'</td>
		<td bgcolor="#CCCCCC">'.$row["date"].'</td>
 		</tr></br>';
    }
 
	$body .= '</table></center></br>';
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
 
// on libère le résultat
mysql_free_result($req);
 
echo '<center><a href="index.php?page=Admin" title="Admin">Admin</a>';
 
include("../../../../../include/base.php");
?>
je voulais afficher un tableau de mes cartouches coresspondant a la serie.mais cela m ecrit:


Parse error: parse error, unexpected T_VARIABLE in C:\Program Files\EasyPHP 2.0b1\www\suncopy\catalogue\brother\jet d'encre\dcp\110c\index.php on line 15

voici mon mcd pour que cela soit plus clair

imprimante(id_imprimante,nom_imprimante)
cartouche(ref_cartouche,designation_cartouche,...)
accepter(id_cartouche,id_imprimante)

je sais je n ai pas eu le temps de changer les nom des champs, mais ce le select qui ne fonctionne pas.
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 12h02   #2
Membre du Club
 
Inscription : janvier 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 71
Points : 52
Points : 52
Salut déjà est-ce que c'est une erreur de copie/colle mais tu n'as pas de ; sur ta ligne

Code :
$marque = mysql_fetch_array($liste_marque)
Ensuite est ce que tu as essayé d'afficher ta variable $marque['ref_cartouche'] pour voir si elle contenait une valeur ou non?

Dinde
dinde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 14h09   #3
Membre du Club
 
Inscription : janvier 2008
Messages : 706
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 706
Points : 66
Points : 66
merci de me repondre voila c est vrai je n avais pas vus le ; qui manquer mais maintenant il me donne ceci j ai changer de plus le debut avec select * marque par select cartouche:
Code :
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
<?php
include("../../../../../include/session.php");
 
//récupère tous les enregistrements
$description = "";
$keywords = "";
$subject = "";
$title = "";
$fakea = "";
$menu = false;
$body = '';
 $liste_marque = mysql_query('SELECT * FROM cartouche');
$marque = mysql_fetch_array($liste_marque);
 
$sql = ('Select * FROM cartouche INNER JOIN accepter ON imprimante.id_imprimante = accepter.id_imprimante WHERE accepter.id_cartouche = '.$marque['ref_cartouche']);
 
$bdd -> sendQuery($sql);
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$res = mysql_num_rows($req);
if($res) {
    // debut du tableau
     // première ligne on affiche les titres prénom et surnom dans 2 colonnes
	$body = '<h3>Liste des Devis</h3><center><table bgcolor="#FFFFFF"></br>
			<tr>
       <td bgcolor="#669999"><b><u>Situation</u></b></td>
       <td bgcolor="#669999"><b><u>Nom</u></b></td>
       <td bgcolor="#669999"><b><u>Adresse</u></b></td>       
	   <td bgcolor="#669999"><b><u>CP</u></b></td>
	   <td bgcolor="#669999"><b><u>Ville</u></b></td>
	   <td bgcolor="#669999"><b><u>Pays</u></b></td>
	   <td bgcolor="#669999"><b><u>Telephone</u></b></td>
	   <td bgcolor="#669999"><b><u>Email</u></b></td>
	   <td bgcolor="#669999"><b><u>Description</u></b></td>
	   <td bgcolor=""669999"><b><u>Date de devis</u></b></td>
      </tr></br>';
 
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($req)) {
	$body .= '<tr>
		<td bgcolor="#CCCCCC">'.$row["situation"].'</td>
		<td bgcolor="#CCCCCC">'.$row["nom"].'</td>
		<td bgcolor="#CCCCCC">'.$row["adresse"].'</td>
		<td bgcolor="#CCCCCC">'.$row["cp"].'</td>
		<td bgcolor="#CCCCCC">'.$row["ville"].'</td>
		<td bgcolor="#CCCCCC">'.$row["pays"].'</td>
		<td bgcolor="#CCCCCC">'.$row["tel"].'</td>
		<td bgcolor="#CCCCCC">'.$row["email"].'</td>
		<td bgcolor="#CCCCCC">'.$row["description"].'</td>
		<td bgcolor="#CCCCCC">'.$row["date"].'</td>
 		</tr></br>';
    }
 
	$body .= '</table></center></br>';
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
 
// on libère le résultat
mysql_free_result($req);
 
echo '<center><a href="index.php?page=Admin" title="Admin">Admin</a>';
 
include("../../../../../include/base.php");
?>
et l erreur afficher est celui la:
Erreur SQL !Select * FROM cartouche INNER JOIN accepter ON imprimante.id_imprimante = accepter.id_imprimante WHERE accepter.id_cartouche = 1
Champ 'imprimante.id_imprimante' inconnu dans on clause
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 14h47   #4
Membre du Club
 
Inscription : janvier 2008
Messages : 706
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 706
Points : 66
Points : 66
bonjour,une erreur que j avais faite oublier dans from imprimante.

voila mon nouveau code maintenant le tableau apparait bien mais il affiche toute la table des cartouche plutôt que de sélectionner que les cartouche corresponde a la marque.

Merci de votre aide.
Code :
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
<?php
include("../../../../../include/session.php");
 
//récupère tous les enregistrements
$description = "";
$keywords = "";
$subject = "";
$title = "";
$fakea = "";
$menu = false;
$body = '';
 $liste_marque = mysql_query('SELECT * FROM cartouche');
$marque = mysql_fetch_array($liste_marque);
 
$sql = ('Select * FROM cartouche,imprimante INNER JOIN accepter ON imprimante.id_imprimante = accepter.id_imprimante WHERE accepter.id_cartouche = '.$marque['ref_cartouche']);
 
$bdd -> sendQuery($sql);
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$res = mysql_num_rows($req);
if($res) {
    // debut du tableau
     // première ligne on affiche les titres prénom et surnom dans 2 colonnes
	$body = '<h3>Liste des Devis</h3><center><table bgcolor="#FFFFFF"></br>
			<tr>
 
	   <td bgcolor="#669999"><b><u>Designation</u></b></td>
	   <td bgcolor="#669999"><b><u>couleur</u></b></td>
	   <td bgcolor="#669999"><b><u>contenance</u></b></td>
	   <td bgcolor="#669999"><b><u>quantite en stock</u></b></td>
	   <td bgcolor=""669999"><b><u>prix ttc</u></b></td>
      </tr></br>';
 
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($req)) {
	$body .= '<tr>
		<td bgcolor="#CCCCCC">'.$row["designation_cartouche"].'</td>
		<td bgcolor="#CCCCCC">'.$row["couleur_cartouche"].'</td>
		<td bgcolor="#CCCCCC">'.$row["contenance"].'</td>
		<td bgcolor="#CCCCCC">'.$row["qte_cartouche"].'</td>
		<td bgcolor="#CCCCCC">'.$row["prixTTC_cartouche"].'</td>
 
 		</tr></br>';
    }
 
	$body .= '</table></center></br>';
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
 
// on libère le résultat
mysql_free_result($req);
 
echo '<center><a href="index.php?page=Admin" title="Admin">Admin</a>';
 
include("../../../../../include/base.php");
?>
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 14h57   #5
Membre du Club
 
Inscription : octobre 2005
Messages : 103
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : octobre 2005
Messages : 103
Points : 52
Points : 52
Pour moi ta as un prob dans ta requête SQL, tu pourrais pas la tester direct dans phpmyadmin pour voire le résultat. Si le résultat est bon le prob est dans le code mais je suis septique.

Je pense que c'est un prob SQL. Fais le test et dit nous quoi.
Stu76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 15h24   #6
Membre du Club
 
Inscription : janvier 2008
Messages : 706
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 706
Points : 66
Points : 66
je suis complètement perdu aidez moi j ai tout essayer que quelque un m aide svp je ne vois pas d ou cela peut venir voici ma base de donne si voulez tester.
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 15h34   #7
Membre du Club
 
Inscription : janvier 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 71
Points : 52
Points : 52
Il te manquerai pas une jointure dans ta requete? (tu as 3 tables et une seule jointure il y a un souci - dans la théorie c'est une jointure par table si la clé est unique)
(Pis mes des alias a ta table tu t'embeteras moins pour les requetes)


Code :
1
2
3
 
 
$sql = ('Select * FROM cartouche c, imprimante i INNER JOIN accepter a ON i.id_imprimante = a.id_imprimante WHERE accepter.id_cartouche = '.$marque['ref_cartouche'].' AND  c.refcartouche=a.id_cartouche);
Dinde
dinde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 15h39   #8
Membre du Club
 
Inscription : octobre 2005
Messages : 103
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : octobre 2005
Messages : 103
Points : 52
Points : 52
Je veux bien regarder à ton prob mais le plus simple est que tu fasses le test avec phpmyadmin.

Tu vas dans ta base de données, tu sélectionne ta table, au dessus tu as un onglet SQL, tu cliques dessus et tu as une fenêtre exécuter une ou des requêtes sur la base X.

Tu recopie ta requête et tu l'exécute et tu nous donnes le résultat on verra déjà plus clair.

Ici à mon boulot je peux pas mettre ta base, je suis pas le boss désolé, sinon je regarderait un coup chez moi.

Mais fait au moins le test svp.
Stu76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 15h44   #9
Membre du Club
 
Inscription : janvier 2008
Messages : 706
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 706
Points : 66
Points : 66
j ai tester et il me retourne toujours 1 pour l'id de la cartouche pour tous le marque ce qui faux car certains sont a 2 mais rien a faire j ai tout dit que c etait a 2 il continue de me donner tout la table en disant qu'elle fait partie 1 quelqu'un pourrai regarder ma base svp
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 15h56   #10
Membre du Club
 
Inscription : octobre 2005
Messages : 103
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : octobre 2005
Messages : 103
Points : 52
Points : 52
Salut Kate,

Effectivement ta requête ne retourne pas d'erreur, mais à mon sens elle n'est pas correcte ou alors je ne comprend pas ce à quoi tu veux arriver.

J'ai pu installer ta base de données, et effectivement elle est sommaire sans vouloir de choquer. Surtout pour une application qui à un but professionnel.

Explique concrètement ce que tu veux faire en étant le plus précis possible et puis on verra ce que l'on peut faire pour t'aider.

Attention cela ne veut pas dire que je vais faire le boulot. T'aider ok
Stu76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 16h04   #11
Membre du Club
 
Inscription : janvier 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 71
Points : 52
Points : 52
Salut Kate,

As tu essayé ma solution en rajoutant une jointure dans ta requete?
Et si tu l'as fait que ça n'a pas marché est ce que ça a quand même changé quelque chose?

Dinde
dinde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 16h11   #12
Membre du Club
 
Inscription : octobre 2005
Messages : 103
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : octobre 2005
Messages : 103
Points : 52
Points : 52
Salut Dinde,

je suis du même avis je pense qu'il y a un problème de jointure, mais pour ca j'aimerais comprendre parfaitement ce qu'elle veut. Car je comprend pas trop.

Sinon je suis sur que la solution est dans la requête sql, donc rien de bien grave.
Stu76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 16h17   #13
Membre du Club
 
Inscription : janvier 2008
Messages : 706
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 706
Points : 66
Points : 66
voila je vais expliquer les grande lignes je vais créer un page qui affiche la liste des cartouches qui correspond a la marque sélectionner dans la page précédentes oui j ai essayer mais voila il continue il me met ce message:

Erreur SQL !Select * FROM cartouche c, imprimante i INNER JOIN accepter a ON i.id_imprimante = a.id_imprimante WHERE accepter.ref_cartouche = 1 AND c.ref_cartouche=a.ref_cartouche
Champ 'accepter.ref_cartouche' inconnu dans where clause

je precise donc mes tables:
accepter(ref_cartouche,id_imprimante)
cartouche(ref_cartouche,...)
imprimante(id_imprimante,..)
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 16h27   #14
Membre du Club
 
Inscription : octobre 2005
Messages : 103
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : octobre 2005
Messages : 103
Points : 52
Points : 52
Ok, je vois un peu plus clair . Ta table accepter joue le rôle de table lien entre ta table cartouches et imprimantes ?

Si oui pourquoi faire une requête sur tes trois tables.
Stu76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 17h13   #15
Membre du Club
 
Inscription : janvier 2008
Messages : 706
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 706
Points : 66
Points : 66
ce n est pas moi qui est proposer ça, mais je pense que a présent vous avez compris mais moi de mon cote je n arrive toujours pas obtenir ce que je veux.
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 17h19   #16
Membre du Club
 
Inscription : octobre 2005
Messages : 103
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : octobre 2005
Messages : 103
Points : 52
Points : 52
Ok, je termine de régler un prob sur une table pour mon boulot et je look ton prob et te propose une solution.
Stu76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 18h26   #17
Membre régulier
 
Inscription : janvier 2008
Messages : 81
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2008
Messages : 81
Points : 75
Points : 75
Envoyer un message via MSN à jonathan3357
La base de données est quand même un peu louche pour faire les recherches, mais bon, j'ai essayé de faire une requête, qui n'est pas de haut niveau vu que je bosse pas dans les BDD, mais j'ai tenté ca :
Code :
Select * FROM cartouche c WHERE ref_cartouche IN (SELECT id_cartouche FROM accepter WHERE id_imprimante=1)
Qui renvoie toute les cartouches qui sont accepté par l'imprimante d'id 1, peut être que ça peut aider ...
jonathan3357 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 19h05   #18
Membre du Club
 
Inscription : octobre 2005
Messages : 103
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : octobre 2005
Messages : 103
Points : 52
Points : 52
Bonsoir,


Je viens de refaire les tests comme jonathan3357 et j'arrive au même résultat.
Donc pour moi, tu peux franchement travailler sur base de cette requête.

Mais je pense que tu ne dois pas perdre de vue que la structure de ta table est légère pour une application pro.

Test et tiens nous au courant, on pourra encore t'aider.

Bonne soirée
Stu76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2008, 09h14   #19
Membre du Club
 
Inscription : janvier 2008
Messages : 706
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 706
Points : 66
Points : 66
merci encore,mais pourquoi pensez vous qu'elle est legere?je ne pense pas avoir oublier quelques chose.
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2008, 09h51   #20
Membre du Club
 
Inscription : octobre 2005
Messages : 103
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : octobre 2005
Messages : 103
Points : 52
Points : 52
Bonjour Kate,


je suis pas spécialiste en base de données mais tout doucement je prend de l'expérience dans le domaine, moi je suis analyste programmeur. Mais bon passons, quand je développe une BD de ce genre j'essaye de faire en sorte d'éviter les redondances.

Cela prend vite bcp de place, de plus je regarde attentivement si mes tables on un rapport entre elle.

Un exemple concret dans ton cas :

Tu as les tables suivantes imprimantes, marques, séries, cartouches. Toutes ces tables sont indépendantes les unes des autres.

Donc si tu veux faire une recherche à partir de la marque tu vas devoirs faire une requête sql complexe et qui va demander bcp de ressource.

Par contre si dans ta table par exemple imprimantes, tu as un champs id_marque, id_série, id_cartouche, ...
Tu peux à partir d'une recherche sur une table ici imprimante avoir toutes les infos sur cette imprimante. Tu le fais déjà mais ppas avec suffisamment de paramètres, hors tu pourrais le faire sans porb.

Je sais pas si j'ai été claire, il ne faut surtout pas te décourager. On a tous fait ces erreurs, le tout est dans tenir compte pour ne plus les faires.

Voilà si tu veux d'autre info je suis là.
Stu76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h20.


 
 
 
 
Partenaires

Hébergement Web