Tableau et SQL

Anthotill Messages postés 127 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 13 mars 2010 - 12 nov. 2005 à 15:34
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 16 nov. 2005 à 21:57
Salut à tous !

j'essaye sans succès depuis pas mal de temps d'obtenir un tableau avec des informations provenant de mysql, un tableau de ce type :
<tr>
<td width="50%">1991</td>
<td width="50%">evenement 1991</td>
</tr>
<tr>
<td width="50%">1992</td>
<td width="50%">evenement 1992</td>
</tr>

en gros la premiere colonne comportera les dates et la deuxieme les évenements en rapport avec ces dates ...

Mais je suis bloqué . Dans mon champ1 j'ai les dates (1991,1992) et dans mon champ2 j'ai les evenement en rapport avec ces dates (evenement 1991, evenement 1992).

J'ai ce code pour l'instant :

 
]<?php include("connexion.php"); $sql "SELECT * FROM table WHERE id '1'"; 
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error()); 
while($data = mysql_fetch_array($req)) { 
$t[] = $data; 
} 
?> 
<?php
$n = 2; // nb de colonne 
for($i = 0; $i <= (count($t) - 1); $i ++) { 
if ($i % $n == 0) { 
?>
<?php 
} 
?>
<tr>
<td width="50%">
<?php
echo $t[$i]['champ1']; 
?>
</td>
<td width="50%">
<?php 
echo $t[$i]['champ2']; 
?>
</td>
</tr>
<?php 
if ($i % $n == (2)) { 
?>
<?php 
} 
} 
?> 


Ca ne fonctionne pas car je pense mal comprendre ce code.... Pourriez vous m'aider ?

Peut etre avez vous des méthode plus rapide et plus simple pour faire tout ça ?

Merci d'avance

Antho

11 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
12 nov. 2005 à 15:47
salut,



dans une page :



<html>



<?php

include(\"connexion.php\");
$sql \"SELECT * FROM table WHERE id '1'\";

$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());

while($data = mysql_fetch_array($req)) {

echo '----
\";

echo ''.$data[0].', ';

echo ''.$data[1].', ';

echo '\";

}

?>




</html>



EN GROS : tu exec ta requete, dans la boucle fetch_array, tu affiches....


ShareVB
0
Anthotill Messages postés 127 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 13 mars 2010
12 nov. 2005 à 19:57
bonsoir ShareVB :)

Merci pour ta réponse !

Ton code est bien mais j'ai plusieurs lignes et la tout es sur la meme ligne en gros sa donne ceci :

___colonne1________________colonne2__________________
1991 1992 1993 |evenement1991 evenement1992 evenement1993

au lieu de donner ceci :

colonne1___colonne2__
1991 | evenement1991
1992 | evenement1992
1993 | evenement1993

As tu une solution ? :D

Mille merci

Antho
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
13 nov. 2005 à 11:32
salut,



es-tu sur d'avoir un enregistrement par année dans ta base...parce que
normalement en affichage ca doit faire le tableau que tu demandes....



par ailleur on pourrait utiliser mysql_fetch_row au lieu de array...et
j'ai fait une faute de frappe, remplace echo '</tr>"; par echo
'</tr>'; et pareil pour le <tr>...

ShareVB
0
Anthotill Messages postés 127 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 13 mars 2010
13 nov. 2005 à 22:10
Salut
j'avais déja corrigé tout ca.

Le tableau s'affiche correctement si jutilise nl2br dans mes echo .... Mais je voudrais que chaque ligne soit faite comme ceci :



1992,
evenement 1992,

----

1993,
evenement 1993

tu vois ? :)

(merci beaucoup de m'aider)
Antho

Antho
0

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

Posez votre question
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
14 nov. 2005 à 07:35
salut,



l'erreur vient du remplissage des champs dans ta base : il me semble
que tu ne dois avoir qu'une ligne dans ta table "table"...or ce n'est
pas le but d'une table...une table c'est, dans ton cas, une date ->
un évènement et pas une liste de dates -> une liste
d'évènements...c'est dans ta base qu'il faut corriger...

ShareVB
0
Anthotill Messages postés 127 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 13 mars 2010
14 nov. 2005 à 10:41
Salut


C'est vrai que dans ma table "profils" (c'est son nom), je fais une liste de date dans un mediumtext, une date par ligne. comment je peux faire des lignes dans SQL ?


Antho
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
14 nov. 2005 à 18:58
salut,



quand tu fais tes INSERT INTO (par du SQL ou par phpmyadmin), tu entres
une date et son evenement, une date un evenement, et ainsi de suite :
le but d'une BD c'est d'avoir des données organisées...

ShareVB
0
Anthotill Messages postés 127 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 13 mars 2010
14 nov. 2005 à 20:08
salut :)

oui je procede ainsi.

dans le champ date je met les dates (une par ligne)
dans le champ evenelent je met les evenements (un par ligne)

ensuite jutilise ton code pour tout orgagnisé avec la fonction nl2br() (pour qu'il y è chaque date a la ligne pareil pour les evenement) moi j'aurias aimer que chaque ligne de la base se transforme en ligne d'un tableau (avec nl2br c'est des retours a la ligne seulement).

Mes dates sont bien en rapport avec mes evenements (il sont bien en face) mais au lieu du saut de ligne nl2br() j'aurais préféré une ligne de tableau ...

Un peu compliqué a expliquer lol mais merci pour ton aide :D

Antho
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
14 nov. 2005 à 22:39
salut,



ce que je veux dire, c'est que ce n'est pas une date par ligne qu'il
faut mais une date par enregistrement donc plusieurs
enregistrements...ce n'est pas ce que tu sembles faire puisque tu as un
enregistrement avec plusieurs dates et évenement avec des retours à la
ligne...



si, en ligne de commande, en tapant



mysql -u root -p

> ton mot de passe

use tabase;

select * from table;



tu obtiens

+-------------------+-----------------+

| date1 |evenement1 |

| date2 |evenement2 |

+-------------------+-----------------+



et pas



+-------------------+-----------------+


| date1 |evenement1 |

+-------------------+-----------------+


| date2 |evenement2 |


+-------------------+-----------------+



c'est que ta base est mal organisée...


ShareVB
0
Anthotill Messages postés 127 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 13 mars 2010
15 nov. 2005 à 01:37
Salut

Une date par enregistrement c'est pas jouable car il y en a beaucoup ... ca fera pas mal de champs

C'est tout a fait jouable en mettant une date par ligne et ensuite en utilisant nl2br() mais bon ..

En tous cas merci pour ta patience et ton aide, ca m'aura permis d'apprendre deux trois pti truc :p

Antho
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
16 nov. 2005 à 21:57
salut,



champ=colonnes et enregistrements=lignes

en faisant ainsi tu perds une grosse partie de l'intérêt d'une base de
données...plus dure et long à mettre à jour,et beaucoup plus lent à
afficher....

ShareVB
0
Rejoignez-nous