Se connecter / S'enregistrer
Votre question

[HTML] Un tableau

Tags :
  • Html
  • Programmation
Dernière réponse : dans Programmation
4 Mars 2008 18:34:42

Bonjour j'essaie de faire un truc qui me parait tout bête mai je n'arrive pas à le réaliser, je m'explique:

Grace à un script j'affiche le contenu d'une table de ma BD.J'ai donc les résultat qui s'affiche les un après les autre et les un en dessous des autre avec <br>

J'ai 60 données = 60 lignes
Je souhaiterais n'afficher que 30 donnée sur une première collone et les 30 autres sur une deuxième collone

en gros préciser que si les donné extraite de la BD sont supérieures a 30 alors on commence la 31éme sur une deuxième collone.

Merci Bonne soirée à tous.

Autres pages sur : html tableau

4 Mars 2008 19:50:56

SVP !!!!
5 Mars 2008 03:07:59

Salut, partant du principe que tu utilise mysql pour ta base de donnees, tu peux essayer ce genre de script ( en changeant les noms... )

Citation :

<?php
/* Tu enregistre les 30 premières données dans une variable et les 30 dernières dans une autre*/

$trentes_premieres_donnees = mysql_query('SELECT ton_champ FROM ta_table LIMIT 0,30');
$trentes_dernieres_donnees = mysql_query('SELECT ton_champ FROM ta_table LIMIT 30, 30');



/*Puis, tu organise le tout dans la variable $donnees ( petit array multidimensionnel ) en affichant avec une boucle dans un tableau a deux colonnes les données*/

while (($donnees['premieres'] = mysql_fetch_array($trentes_premieres_donnees)) && ($donnees['dernieres'] = mysql_fetch_array($trentes_dernieres_donnees))) {
?>
<table>
<tr>
<td>
<?php
echo $donnees['premieres']['ton_champ'];
?>
</td>
<td>
<?php
echo $donnees['dernieres']['ton_champ'];
?>
</td>
</tr>
</table>
<?php
}
?>


N.B : Sous réserve d'une méthode un peu moins simpliste, celle-ci devrait te satisfaire.

EDIT : les balises <table> et </table> doivent encercler la boucle mais pas se trouver à l'interieur comme dans la citation dsl:D 
Contenus similaires
5 Mars 2008 11:54:17

Merci de ta response mais j'obtien un msg d'erreur :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home.10.26/gg/www/code-promo.php on line 66



Voici mon script :

<?
// information pour la connection à le DB
$host = 'mysql5-22';
$user = 'gg';
$pass = 'xxxx';
$db = 'gg';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

/* Tu enregistre les 30 premières données dans une variable et les 30 dernières dans une autre*/

$trentes_premieres_donnees = mysql_query('SELECT DISTINCT lieninfo, titre, COUNT(*) AS nombre FROM codespromotion GROUP BY Titre HAVING COUNT(*) >= 1 ORDER BY titre ASC LIMIT 0,30');
$trentes_dernieres_donnees = mysql_query('SELECT DISTINCT lieninfo, titre, COUNT(*) AS nombre FROM codespromotion GROUP BY Titre HAVING COUNT(*) >= 1 ORDER BY titre ASC e LIMIT 30, 30');



/*Puis, tu organise le tout dans la variable $donnees ( petit array multidimensionnel ) en affichant avec une boucle dans un tableau a deux colonnes les données*/
?>
<table>
<?php
while (($donnees['premieres'] = mysql_fetch_array($trentes_premieres_donnees)) && ($donnees['dernieres'] = mysql_fetch_array($trentes_dernieres_donnees))) {
?>

<tr>
<td>
<?php
echo $donnees['premieres']['titre'];
?>
</td>
<td>
<?php
echo $donnees['dernieres']['titre'];
?>
</td>
</tr>

<?php
}
?>
</table>
5 Mars 2008 14:02:29

Salut, commence par épurer tes requetes SQL, as-tu vraiment besoin d'autant d'arguments ?

Pourquoi sélectionne-tu les champs lieninfo et titre alors que tu n'afficheras que les titres de toutes façons, pourquoi comptes-tu les entrées ? Dans les 60 titres ( j'imagine que c'est ça les données ), tu en as qui ont le même nom ? Sinon, aucun intérêt à utiliser "distinct" ou "group by"... De plus, je suis pas sûr de la syntaxe et de la logique de tes requêtes...


Bref, va au plus simple et le script fonctionnera, si tu as vraiment besoin d'autant d'arguments, explique mieux ce que contient ta table et à quel résultat tu veux arriver parce que si c'est juste pour afficher les 60 titres contenus dans le champ titre ( comme j'ai compris d'après l'explication au début ) même dans l'ordre croissant, je vois pas pourquoi tu te complique la vie à ce point... ;) 
5 Mars 2008 18:12:44

En fait c'est une table contenant des codes réduction, il y a des doublon(une marque peux avoir 3 ou 5 codes réduction) c'est pour cela que j'utilise DISTINCT et HAVING COUNT comme cela j'obtiens le nom de la marque et à coté le nombre de code réduction qu'il propose.J'ai besoin ensuite du titre biensur et du lien, en fait je met le lien avant et le titre avant </a> comme ca c'est le titre qui est lien enfin ORDER BY pour avoir un affiche alphabétique(plus facile de se repérer).


Merci

*EDIT : Jai simplifier au maximum et ca ne marche toujours pas, il y a une erreure sur cette ligne :

while (($donnees['premieres'] = mysql_fetch_array($trentes_premieres_donnees)) && ($donnees['dernieres'] = mysql_fetch_array($trentes_dernieres_donnees))) {


Je ne comprend pas ['premieres'] et ['dernieres'] , à quoi ca correspond?
5 Mars 2008 20:00:13

La variable $donnees est un array ( ca organise les donnees qu'elle contient comme dans un tableau ) et plus précisément un array multi-dimmensionnel, le array $donnees contient lui-même les arrays premieres et dernieres qui contiennent respectivement les résultats des requetes SQL contenus dans les variables $trentes_premieres_donnees et $trentes_dernieres_donnees organisés donc, en array, grâce à la fonction mysql_fetch_array.

Comme dans un array simple, tu accèdes à une donnée en l'appelant par son numéro dans le tableau ou par la clé qui lui est associé, la tu appelle un tableau ou un autre ( premieres ou dernieres ) contenu dans $donnees en indiquant ensuite le nom du champ que tu veux qu'il affiche ( champ qui as donc été récupéré dans la requête de départ contenu dans $trentes_premieres_donnees ou $trentes_dernieres_donnees selon les conditions spécifiés dans la requête ).

J'espère que c'est clair :D 


Je pense que ça doit pouvoir se résoudre en adaptant simplement le script, car avec des requêtes du type de celles que j'avais mis dans la citation, j'ai testé et ça marche très bien mais là il y a un élément en plus par conséquent, il faudrait soit séparer les requêtes ( une pour les 30 premiers avec 3 codes, une autre avec 5, une autre 30 derniers avec 3 et encore une autre avec 5) ou organiser tout ça différemment ( ce qui pourrait être plus simple... ).

Je vais essayer de regarder ça, je te tiens au courant.
5 Mars 2008 20:03:40

merci pour ses explication :)  et ton aide ;) 


a+++
5 Mars 2008 21:43:48

Dernières précisions pour être sûr :


Donc, dans ta table tu as un champ titre contenant des titres et un champ contenant les liens associés à ses titres.

Et les "marques", ça constitue un autre champ ou non ? Et pour le nombre de codes ?

Et enfin, tu veux que s'affiche les marques avec à coté le nombre de codes de réductions et ensuite le titre qui sert donc de lien, et le tout sur deux colonnes avec 30 lignes par colonne ( tout ça classé par ordre alphabétique ) et 60 lignes "en tout", on est d'accord ?
5 Mars 2008 23:22:18

Voila c'est ca

J'ai une table "codes reduc" qui contien un champ "titre" et un champs "lien"
Comme j'ai noté plus haut, il y a des doublon "titre" (car un meme marchands peut proposer plusieur codes) c'est pour cela que j'utilise le comptage des doublon se qui me permet de savoir combien de code à chaque marchands

En final lors de l'affichage je doit avoir sur 2 colones la liste des marchands par ordre alphabétique.Quand on clic sur un des marchands(titre) on est rediriger vers une page (lien)

merci encore!


7 Mars 2008 12:20:01

Re ;) 

Voilà la simple adaptation du script de départ :

Citation :
$premiere_colonne = mysql_query('SELECT lieninfo, titre, COUNT(*) AS nombre FROM codespromotion GROUP BY titre ORDER BY titre LIMIT 0,?');
$deuxieme_colonne = mysql_query('SELECT lieninfo, titre, COUNT(*) AS nombre FROM codespromotion GROUP BY titre ORDER BY titre LIMIT ?,?');

?>
<table>
<?php
while (($donnees['premiere'] = mysql_fetch_array($premiere_colonne)) && ($donnees['deuxieme'] = mysql_fetch_array($deuxieme_colonne))) {
?>
<tr>
<td>
<?php
echo '<a href="'.$donnees['premiere']['lieninfo'].'">'.$donnees['premiere']['titre'].' ('.$donnees['premiere']['nombre'].')</a>';
?>
</td>
<td>
<?php
echo '<a href="'.$donnees['deuxieme']['lieninfo'].'">'.$donnees['deuxieme']['titre'].' ('.$donnees['deuxieme']['nombre'].')</a>';
?>
</td>
</tr>
<?php
}
?>
</table>


N.B(1): Cette solution n'affichera qu'une fois les doublons par conséquent il faudra que tu adaptes le LIMIT car chaque titre ne sera afficher qu'une fois ( avec le nombre entre parenthèses et le lien comme prévu ).

Mais est-ce que pour les 3 ou 5 titres différents tu as à chaque fois un lien différent ?

N.B(2): Dans ce cas, le plus simple serais de créer un nouveau champ ( appelé nombre comme ça tu n'auras pas à changer le reste du code ) dans ta table qui contiendrait le nombre de codes ( 3 ou 5 ) correspondant à chaque titre et remplacer les requêtes de départ par :

Citation :
$premiere_colonne = mysql_query('SELECT lieninfo, titre, nombre FROM codespromotion ORDER BY titre LIMIT 0,30');
$deuxieme_colonne = mysql_query('SELECT lieninfo, titre, nombre FROM codespromotion ORDER BY titre LIMIT 30,30');


J'ai eu beau essayer plusieurs solutions de tri dans les requêtes, aucune ne donnait le bon résultat... Bref, créer un nouveau champ dans ta table, je vois que ça :) 
7 Mars 2008 12:30:12

Salut!! ca marche :)  maintenan :D 

enfin presque ^^ avec LIMIT 0,20 et 20,20 jai tout bien affiché sauf le 20éme enregistrement qui ne s'affiche pas :( 

voila le script final :


$premiere_colonne = mysql_query('SELECT DISTINCT lieninfo, titre, COUNT(*) AS nombre FROM codespromotion GROUP BY titre ORDER BY titre LIMIT 0,20');
$deuxieme_colonne = mysql_query('SELECT DISTINCT lieninfo, titre, COUNT(*) AS nombre FROM codespromotion GROUP BY titre ORDER BY titre LIMIT 20,20');

?>
<table>
<?php
while (($donnees['premiere'] = mysql_fetch_array($premiere_colonne)) && ($donnees['deuxieme'] = mysql_fetch_array($deuxieme_colonne))) {
?>
<tr>
<td>
<?php
echo '<a href="'.$donnees['premiere']['lieninfo'].'">'.$donnees['premiere']['titre'].' ('.$donnees['premiere']['nombre'].')</a>';
?>
</td>
<td>
<?php
echo '<a href="'.$donnees['deuxieme']['lieninfo'].'">'.$donnees['deuxieme']['titre'].' ('.$donnees['deuxieme']['nombre'].')</a>';
?>
</td>
</tr>
<?php
}
?>
</table>


Merci beaucoup bachoum pour ton aide ;) .
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS