MySQL et Tableau

Résolu/Fermé
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 12 mai 2012 à 16:20
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 12 mai 2012 à 22:15
Bonjour,

Je souhaiterais afficher dans un tableau mes données d'une table MySQL.

<table border="0" cellpadding="0" cellspacing="0" class="scrollTable">
<thead class="fixedHeader">
<tr>
<th><span class="BasPageBlanc"><strong>Imprimantes compatibles</strong></span></th>
</tr>
</thead>
<tbody class="scrollContent">
<tr>'.while($data = mysql_fetch_assoc($req)){.'
<td>'.$data->Printer01.'</td>
'.}.'</tr>
</tbody>
</table>


Seulement voilà le problème, dans ma table, j'ai Printer01, Printer02 et Printer03 que je voudrais afficher chacune dans un ligne de mon tableau dans le <td></td> et éviter le vide si la cellule n'est pas remplie...

cad que si dans ma table :
Printer01 = xxx
Printer02=
Printer03 = xxx

Le tableau m'affichera sur chaque ligne le contenu de Printer01 et Printer03

Pouvez-vous m'aider svp ?

<config>Windows 7 / Firefox 12.0</config>
A voir également:

8 réponses

JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 12/05/2012 à 17:38
Salut !!!

Donc t'as 3 colonnes dans ta table, et tu voudrais afficher pour chaque tuple, chaque colonne dans une ligne !

Soit t'as mal conçu ta table, soit je comprend pas l'interet de tout ça !

bref !

<table border="0" cellpadding="0" cellspacing="0" class="scrollTable">
<tr>
 <th>
  <span class="BasPageBlanc"><strong>Imprimantes compatibles</strong></span>
 </th>
</tr>

<?php
while($data = mysql_fetch_assoc($req)) {
 if(!empty($data['Printer01']))
  echo '<tr>
    <td>'.$data['Printer01'].'</td>
   </tr>';
 
 if(!empty($data['Printer02']))
  echo '<tr>
    <td>'.$data['Printer02'].'</td>
   </tr>';
 
 if(!empty($data['Printer03']))
  echo '<tr>
    <td>'.$data['Printer03'].'</td>
   </tr>';
}
?>
</table>


PS : $data->Printer01, y a pas d'objet ici, tu travaille avec mysql_connect, et non pas avec PDO !

a+

Mettez en résolu quand c'est résolu -.- ...
1
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
12 mai 2012 à 18:40
Merci pour ta réponse... effectivement je passe par PDO (dsl j'ai omis de mentionner)

<table border="0" cellpadding="0" cellspacing="0" class="scrollTable">
<tr>
 <th>
  <span class="BasPageBlanc"><strong>Imprimantes compatibles</strong></span>
 </th>
</tr>'.while($data=mysql_fetch_assoc($req)) {
if(!empty($data->Printer01)) echo '<tr><td>'.$data->Printer01.'</td></tr>'; 
if(!empty($data->Printer02)) echo '<tr><td>'.$data->Printer02.'</td></tr>'; 
if(!empty($data->Printer03)) echo '<tr><td>'.$data->Printer03.'</td></tr>';

}.'</table>


J'ai "essayé" de modifier mais j'ai une erreur :
Parse error: syntax error, unexpected T_WHILE in ......./search.php on line 111
et la ligne 111 est :
</tr>'.while($data=mysql_fetch_assoc($req)) {
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 12/05/2012 à 18:55
tu peut pas concaténer des conditions !!!
</tr>'.while($data ...

C'est faux !

En plus, t'a même pas ouvert la balise "<?php" pour écrire en php !

Donc utilise le code que j'ai donner, tu n'a qu'a changer ce qu'il y a à l'intérieur du while !!
$data = $req->fetch()
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
12 mai 2012 à 19:00
Dsl JooS, je ne m'y connais pas vraiment.

Voici ma page en intégrale si tu peux pousser un peux plus ton aide :

<?php
if(!empty($_POST) && !empty($_POST['search'])){extract($_POST);
$search = strip_tags($search);
try{$bdd = new PDO('mysql:host=xxxxxx;dbname=xxxxxx', 'xxxxxx', 'xxxxxx') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAME utf8');}
catch(Exeption $e){die('Erreur:'.$e->getMessage());}

$req = $bdd->query("SELECT * FROM InkSearch WHERE 
Reference LIKE '%$search%' OR 
Numero LIKE '%$search%' OR 
Printer01 LIKE '%$search%' OR 
Printer02 LIKE '%$search%' OR 
Printer03 LIKE '%$search%' OR 
Printer04 LIKE '%$search%' OR 
Printer05 LIKE '%$search%' OR 
Printer06 LIKE '%$search%' OR 
Printer07 LIKE '%$search%' OR 
Printer08 LIKE '%$search%' OR 
Printer09 LIKE '%$search%' OR 
Printer10 LIKE '%$search%' OR 
Printer11 LIKE '%$search%' OR 
Printer12 LIKE '%$search%' OR 
Printer13 LIKE '%$search%' OR 
Printer14 LIKE '%$search%' OR 
Printer15 LIKE '%$search%' OR 
Printer16 LIKE '%$search%' OR 
Printer17 LIKE '%$search%' OR 
Printer18 LIKE '%$search%' OR 
Printer19 LIKE '%$search%' OR 
Printer20 LIKE '%$search%' OR 
Printer21 LIKE '%$search%' OR 
Printer22 LIKE '%$search%' OR 
Printer23 LIKE '%$search%' OR 
Printer24 LIKE '%$search%' OR 
Printer25 LIKE '%$search%' OR 
Printer26 LIKE '%$search%' OR 
Printer27 LIKE '%$search%' OR 
Printer28 LIKE '%$search%' OR 
Printer29 LIKE '%$search%' OR 
Printer30 LIKE '%$search%' 
ORDER BY Recherche");

if($req->rowCount()>0) {while($data = $req->fetch(PDO::FETCH_OBJ)){

echo '<table width="942" border="0" align="center" cellpadding="0" cellspacing="10" background="../images/Cadre/05.png" style="border:1px solid #FFFFFF">
<tr>
  <td width="359" align="center" valign="top"><table width="359" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td height="21" colspan="3" background="images/cadre/02.png">&nbsp;</td>
    </tr>
    <tr>
      <td background="images/cadre/01.png">&nbsp;</td>
      <td align="center" bgcolor="#FFFFFF"><span class="Espace GrasCyan">'.$data->Reference.' - '.$data->Numero.'</span></span></td>
      <td background="images/cadre/03.png">&nbsp;</td>
    </tr>
    <tr>
      <td background="images/cadre/01.png">&nbsp;</td>
      <td bgcolor="#FFFFFF"><img src="http://alifat-ci.com/InkSearch/images/Cartouches/'.$data->ImageMini.'.png" width="318" height="215" title="'.$data->Reference.'"/></td>
      <td background="images/cadre/03.png">&nbsp;</td>
    </tr>
    <tr>
      <td width="20" background="images/cadre/01.png">&nbsp;</td>
      <td width="318" align="center" bgcolor="#FFFFFF"><span class="BoldRouge Espace">'.$data->Montant.' F</span></td>
      <td width="21" background="images/cadre/03.png">&nbsp;</td>
    </tr>
    <tr>
      <td height="22" colspan="3" background="images/cadre/04.png">&nbsp;</td>
    </tr>
  </table>    <table width="359" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td align="center">&nbsp;</td>
      </tr>
      </table></td>
  <td width="551" align="center" valign="top"><table width="551" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td colspan="3" align="left" valign="top"><table width="551" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td width="481" align="left" class="Espace"><strong> '.utf8_encode($data->Type).'</strong></td>
              <td width="70" align="right" class="Espace">'.utf8_encode($data->Validite).'</td>
            </tr>
          </table></td>
        </tr>
    <tr>
      <td width="126" align="left" valign="top" class="Espace"><strong>Couleur</strong></td>
          <td width="237" align="left" valign="top" class="Espace">'.$data->Couleur.'</td>
          <td width="188" align="right" valign="top"><img src="http://alifat-ci.com/InkSearch/images/'.$data->CouleurImg.'.png" height="22" /></td>
    </tr>
    <tr>
      <td align="left" valign="top" class="Espace"><strong>Capacité</strong></td>
      <td colspan="2" align="left" valign="top" class="Espace">'.$data->Capacite.'</td>
    </tr>
    <tr>
      <td align="left" valign="top" class="Espace"><strong>Quantité</strong></td>
          <td colspan="2" align="left" valign="top" class="Espace">'.$data->Nombre.'</td>
        </tr>
    <tr>
      <td align="left" valign="top" class="Espace"><strong>Rendement</strong></td>
          <td colspan="2" align="left" valign="top" class="Espace">'.$data->Rendement.'</td>
        </tr>
    <tr>
      <td colspan="3" align="left" valign="top">&nbsp;</td>
      </tr>
    </table>
<div id="tableContainer" class="tableContainer">

<table border="0" cellpadding="0" cellspacing="0" class="scrollTable">
<tr>
<th>
<span class="BasPageBlanc"><strong>Imprimantes compatibles</strong></span>
</th>
</tr>'.while($data = mysql_fetch_assoc($req)) {
if(!empty($data->Printer01)) echo '<tr><td>'.$data->Printer01.'</td></tr>'; 
if(!empty($data->Printer02)) echo '<tr><td>'.$data->Printer02.'</td></tr>'; 
if(!empty($data->Printer03)) echo '<tr><td>'.$data->Printer03.'</td></tr>';
}.'</table>


</div>
</td>
</tr>
</table><br>';
}}
else{echo '<h2>Aucun résultat</h2>';}}
else{echo '<h2>Aucun résultat</h2>';}
?>
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 12/05/2012 à 19:13
plus de 30 colonnes ?

Si tu expliquais ce que t'essaye de faire, on pourrais te trouver une meilleure solution !
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
12 mai 2012 à 19:27
Je me suis dis que si la cellule de la table est vide, alors il n'affichera rien et l'enregistrement suivant prendra sa place... donc pas d'espace entre les lignes du tableau.
Puis ce que je dois faire est tellement complexe que je ne saurai pas expliquer sans me faire gueuler dessus :S

C'est un script que j'ai téléchargé et adapté a mon besoin.

Voilà l'idée du projet :
1 cartouche d'encre est unique et prends plus de 2 imprimantes à 30 différentes
et une imprimante prends de 1 à 8 cartouches

J'ai penser concaténer les table mais là je mourrai avant de finir le boulot vu que je ne m'y connais pas.
Voilà pourquoi j'ai mis 30 imprimantes et les références qu'il faut.
voici la page à voir :
http://alifat-ci.com/InkSearch

Lorsqu'on met par exemple Q2612A dans la "Recherche au choix" on obtiendra ce qu'il faut comme informations.
Seul problème est l'affichage dans le tableau des imprimantes compatibles...
"Une ligne par imprimante"
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
12 mai 2012 à 20:24
Ok !
Donc quand l'utilisateur tapera la référence d'une imprimante ou d'une cartouche, tu lui affiche toutes les cartouches concernant cette référence ...

Si c'est le cas, tu aura besoin de 3 tables !
Table 1 : Imprimantes.
Elle contiendra toutes les infos concernant chaque imprimante, "id, reference, description, image ..." .

Table 2 : Cartouches.
Elle contiendra toutes les infos concernant chaque cartouches, "id, reference, couleur, quantite, rendement ..." .

Table 3 : Compatibilité.
Elle contiendra 3 attributs (colonnes), "id, id_imprimante, id_cartouche", c'est ici que tu fera les liens entre les cartouches et les imprimantes.
Exemple, si la cartouche (dont l'id est 21) est compatible avec l'imprimante dont l'id est 35, alors cette table contiendra un tuple (1 | 35 | 21) ... etc
2 | 24 | 12
3 | 1 | 8
4 | 1 | 17

Les deux dernières lignes veulent dire que l'imprimante (dont l'id est 1) est compatible avec deux cartouches (8 et 17) ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
12 mai 2012 à 20:30
C'est exactement ce qu'un ami dis...
Mais il faut que j'avance au moins sur le point dont je t'ai fais mention plus haut (mon problème) étant donné que la table est fini et que j'ai rempli à la main et ce depuis 3 mois que je bosse dessus, 2731 articles. (je suis crevé)

Dis, est-ce que tu peux m'aider pour le tableau au moins pour livrer lundi mon travail et comme ça j'aurai le temps de voir comment faire pour les 3 tables...

Depuis que je t'ai envoyé la précédente question je cherche en PDO le problème avec la ligne mais rien :s
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 12/05/2012 à 21:41
Ok, voici alors le dernier tableau !

PS : a la place du commentaire que j'ai mis, tu dois mettre les 17 if restants, qui correspondent a chaque colonne,

<table border="0" cellpadding="0" cellspacing="0" class="scrollTable"> 
  <tr> 
    <th> 
      <span class="BasPageBlanc"><strong>Imprimantes compatibles</strong></span> 
    </th> 
  </tr>'; 
   
  if(!empty($data->Printer01)) echo '<tr><td>'.$data->Printer01.'</td></tr>';  
  if(!empty($data->Printer02)) echo '<tr><td>'.$data->Printer02.'</td></tr>';  
  if(!empty($data->Printer03)) echo '<tr><td>'.$data->Printer03.'</td></tr>'; 

  //17 lignes restantes 

echo '</table>
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 12/05/2012 à 20:52
Ok !
Je me suis un peut perdu dans les tableaux imbriqués que t'as créer, mais bon, c'est pas ça le prob !
donc désolé pour la question, mais tu cherche a faire quoi au juste, parce que sur le site la requête fonctionne bien !

Donc je vois pas ce que t'essaye d'ajouter dans le while que t'as imbriquer dans un autre while !!!

Mettez en résolu quand c'est résolu -.- ...
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
12 mai 2012 à 21:06
Alors voici le code initial du tableau :
<table border="0" cellpadding="0" cellspacing="0" class="scrollTable">
<thead class="fixedHeader">
<tr>
<th><span class="BasPageBlanc"><strong>Imprimantes compatibles</strong></span></th>
</tr>
</thead>
<tbody class="scrollContent">
<tr>'.while($data = mysql_fetch_assoc($req)){.'
<td>'.$data->Printer01.'</td>
'.}.'</tr>
</tbody>
</table>
A partir du while, je dois afficher le Printer01 jusqu'à Printer30 dans le tableau en sautant les lignes vide de ma table MySQL...

cad que dans ma table MySQL j'ai :
Printer01 = Imprimante CP1015
Printer02= Null
Printer03 = Imprimante DeskJet
Printerxx = Null
Printer30 = Imprimante CP1525n

Lorsque je renseigne la référence de la cartouche "supposons" CE890A et que sur la ligne de ma table CE890A j'ai ces imprimantes, l'affichage se fait dans ce tableau.

Exemple en ligne :
ouvre le site http://alifat-ci.com/InkSearch/ et tape dans la zone Q2612A
Tu auras dans le premier tableau la liste des imprimantes qu'elle prends
et dans la seconde une liste vide.
Dans la première liste aussi on a des lignes vides...
C'est ce que je veux éviter... les lignes vides du tableau
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
12 mai 2012 à 21:52
Merci infiniment JooS pour ton aide et le temps que tu m'as accordé.
Problème résolu enfin !

J'avais des idées en tête et au fur et à mesure que je relisais, je me tenais compte que le problème de toutes ces lignes était de juste supprimer les lignes vides. Tu m'as renforcé l'idée des 3 tables, j'y pencherai comme prévu.

Encore une fois merci !
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
12 mai 2012 à 22:15
de rien :) !
0