peut-on en php délimité un tableau en taille?

romain
Invité n'ayant pas de compte PHPfrance

01 déc. 2006, 13:26

salut a tous,

je suis un nouveau en php, avec quelques base appris sur le tas, mais j'arrive face a un probleme que ne sais pas résoudre.

Pour vous expliquer, je génère un tableau pour faire des factures, mes donné sont prise dans ma base de donnée mysql, et ensuite inscrit dans mon tableau qui s'imcrémente en fonction du nombre de ligne, jusque la tous va bien.
ensuite les choses se compliquent, je voudrais pouvoir délimité mon tableau en pixel ou autre pour dire a celui-ci lorsque la saisie n'est pas fini de continuer dans un autre tableau plus bas ou j'aurai remi toute lentete de ma facture et ensuite finir de saisir le tableau.
en faite tous ca pour pouvoir sortir une facture sur deux pages si besoin est avec l'entete et la suite du tableau.

je sais pas si c'est possible, si vous avez besoin de plus d'info n'esiter pas a me demander.

Merci a tous!

ViPHP
ViPHP | 3607 Messages

01 déc. 2006, 13:35

as-tu déja fait des essais ?
Sinon essaye des petites choses, avec par exemple: l'opérateur % (modulo)

romain
Invité n'ayant pas de compte PHPfrance

01 déc. 2006, 13:48

je ne connaissais la fontion modulo je vien d'allez voir ca me renvoi le reste d'un division j'aurai pu men douté ! lol

mais je ne vois pas comment me servir du modulo.

jai trop fais d'essaie car j'ai pas de solution pour le moment.
je sais pas comment faire pour compter le nom de pixel du tableau, donc je vois pas comment faire pour le moment
pour l'instant jai un code un peu pres comme ceci :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>facture</title>
</head>

<body>
<table width="100%" border="1">
  <tr> 
    <td width="6%" > <div align="center">Date</div></td>
    <td width="7%" > <div align="center">N°Facture </div></td>
    <td width="7%" ><div align="center">N&deg;Devis</div></td>
    <td width="8%"> <div align="center">Client </div></td>
    <td width="11%"> <div align="center">Prix HT </div></td>
    <td width="7%"> <div align="center">TVA </div></td>
    <td width="6%"> <div align="center">Prix TTC </div></td>
    <td width="11%"><div align="center">Acompte</div></td>
    <td width="13%"> <div align="center">Restant d&ucirc; </div></td>
    <td width="24%"><div align="center">Date &eacute;ch&eacute;ance</div></td>
  </tr> (mon entete de tableau celle que j'aimerai répété ensuite apres une certaine taille)

<?
include("connect.php");
$req = mysql_query("SELECT ......") or die ("erreur sql ".mysql_error()); //ma req


while ( $resultat = mysql_fetch_array($req))
{
$tvaa=$resultat[pxTTC]-$resultat[pxHT];

print '<tr><td>'.$resultat[dateedit].'</td><td><a href="refact.php?nfact='.$resultat[n_fact].'" target="blank">'.$resultat[n_fact].'</a></td><td><a href="reconstitution.php?n_devis='.$resultat[n_devis].'" target="blank">'.$resultat[n_devis].'</a></td><td>'.$resultat[client].'</td><td>'.$resultat[pxHT].'</td><td>'.$tvaa.'</td><td>'.$resultat[pxTTC].'</td><td>- '.$resultat[acompte].'</td><td><a href="javascript:ouvreFenetre(\'\pay.php?nfact='.$resultat[n_fact].'\', 300, 200)">'.$resultat[soldu].'</a></td><td>- '.$resultat[dateech].'</td></tr>';
}
mysql_close();
?>
</table>
dc ca c'est ma base ca fonctionne.

si d'autres question n'ésite pas !

Merci

ViPHP
ViPHP | 3607 Messages

01 déc. 2006, 16:47

je ne pense pas qu'il faille penser en nombre de pixels... mais plutôt en nombre de ligne, et suivant ton design, tu verras combien de ligne tu mettras avant de remttre les intitulés.
un exemple avec le modulo
<?php
$nbrLignes=3;
for($i=0;$i<30;$i++){
  if(($i%$nbrLignes)==0){
    echo "Entêtes...";
  }
  echo "blabla n°".$i;
}
?>
essaye ce code, modifie le habitue toi avec le %, peut-être qu'il te viendra une idée quand à ton problème

romain
Invité n'ayant pas de compte PHPfrance

04 déc. 2006, 12:12

oui, c'est vrai je devrais compter en nbe de lignes, mais le souci c'est que je ne sais pa a l'avance le nbe de ligne que jai dans mes enregistrements puisque je charge les element de ma base :
while ( $resultat = mysql_fetch_array($req)) 
{ 
$tvaa=$resultat[pxTTC]-$resultat[pxHT]; 

print '<tr><td>'.$resultat[dateedit].'</td><td><a href="refact.php?nfact='.$resultat[n_fact].'" target="blank">'.$resultat[n_fact].'</a></td><td><a href="reconstitution.php?n_devis='.$resultat[n_devis].'" target="blank">'.$resultat[n_devis].'</a></td><td>'.$resultat[client].'</td><td>'.$resultat[pxHT].'</td><td>'.$tvaa.'</td><td>'.$resultat[pxTTC].'</td><td>- '.$resultat[acompte].'</td><td><a href="javascript:ouvreFenetre(\'\pay.php?nfact='.$resultat[n_fact].'\', 300, 200)">'.$resultat[soldu].'</a></td><td>- '.$resultat[dateech].'</td></tr>'; 
} 
il me faudrait un moyen de compter le nbe de ligne saisi, en faite je dois compter le nbe de <br> que jai dans mon enregistrement,
existe-til une fonction pour faire ca ???

Merci d'avance

ViPHP
ViPHP | 3607 Messages

04 déc. 2006, 12:39

comment ça tu ne onait pas le nombre de ligne saisie?
Tu récupère bien tes enregistrements en bdd, donc un mysql_num_rows() te retourneras le nombre d'enregistrement... ou alors j'ai mal saisie la structure de table, si c'est le cas, merci de détailler cette dernière ;-)

romain
Invité n'ayant pas de compte PHPfrance

04 déc. 2006, 15:58

bein en faite je ne connais pas la longueur de mon champ, si tu veu je sais qu'au maxi il sera de 255 caractères,mais il varit (c'est une description) mais j'aimerai savoir combien de ligne il me prendra une fois mit en page dans mon tableau.

dans mon champ on trouve des <br> pour les sauts de ligne donc je me disais que je peut justement me servir du nombre de <br> pour savoir le nombre de ligne par enregistrement.

j'espere que tu réussi a me comprendre sinon dit le moi jessayerai d'etre plus claire.

merci

ViPHP
ViPHP | 3607 Messages

04 déc. 2006, 18:13

j'ai à peu près compris (en gros), mais tu faits une erreur d'analyse, si tu as une phrase un peu longue sans saut de ligne, et que la colonne de ton tableau n'est pas très large, le texte va revenir à la ligne malgrès tout, tu auras donc plus de ligne que de <br />, ça n'est pas l abonne méthode il me semble,
essaye de mettre en ligne une page où tu n'auras pas mit les entêtes, mais où le tableau sera formé, pour que je vois au moins de quoi ça à l'air...

Romain
Invité n'ayant pas de compte PHPfrance

05 déc. 2006, 17:11

javais penser a ceux que tu m'a remarquer, mais les description qui se trouve ici font rarement toutes la largeur de la collone.
pour te montrer un exemple de facture jai mi en ligne une page.

http://www.globanet.fr/exemplefact.html


pour t'expliquer l'entete cest tous simplement tous se qu'il y a avant le début de tableau, cest a dire le logo, ladresse du client,le premier tableau avec le mode de règlement et bien sur les titres des colone de mon tableau(ref, designantion, pu HT...)


Jespere que tu va pouvoir m'aider et si tu veux plus de précisions n'ésite pas a demander.

Merci D'avance !

Romain

ViPHP
ViPHP | 3607 Messages

05 déc. 2006, 17:15

est-ce que le tableau remarque fait partie d'un pied de page?
ou bien est-il seulement inclus à la fin?
Sinon, pour tout te dire, je pense qu'il va falloir te tourner vers les propriétés css du type page-break-*
Mais je ne suis pas des plus doué dans ce domaine :) renseigne toi la dessus, et reviens nous voir avec une ébauche!

romain
Invité n'ayant pas de compte PHPfrance

14 déc. 2006, 17:38

nan ce n'est pas dans le pied de page !
si tu veux ce que je dois faire aparaitre en bas c'est la somme total de la facture et en haut l'entete adresse logo...
je sais pas si je vais pas essayer en comptant les br.
quelqu'un peut me donner une fonction qui cherche dans une chaine de caractere contenu dans une variable les caractere suivant "<br>" et qui me les compte ?

Merci !