5542 sujets

Sémantique web et HTML

Bonjour à tous, pourriez-vous m'aider s'il vous plaît?

Voici mon problème j'ai plusieurs tableau qui me fond une page qui doit être imprimé, seul problème quand le contenu de la page devient trop important (je récupère les données de ma base) alors certains tableau se superpose. Le code n'ai pas le mien j'ai du reprendre une application Smiley smile

<script type="text/javascript">
  window.onload = function() { 
    window.print(); 
  }
</script>
<link href="../../../css/formulaire.css" rel="stylesheet" type="text/css" />
<link href="../../../css/imprime.css" rel="stylesheet" type="text/css" />
<div style="position: absolute; top: 0;width:98%;height:100%;">
	<div style="position: absolute; top: 0;width:100%;">
		<table class="table">
			<tr>
				<td rowspan=3 class="td center col_1">
					<img alt="" style="width:100px;" src="../../../image/logo.png">
				</td>
				<td colspan=2 class="td_titre center col_4"><?php echo T_('Commande HP'); ?></td>
				<td class="td_g left" ><?php echo T_('Date de création');?></td>
				<td class="td center"><?php echo  $dm['DATE_DM']; ?></td>
			</tr>
			<tr>
				<td colspan=2  class="td_titre center col_4"><?php echo $dm['LABEL_SITE']; ?></td>
				<td class="td_g left"><?php echo T_('N° Projet');?></td>
				<td class="td center"><?php echo $dm['NUM_PROJET']; ?></td>
			</tr>
			<tr>
				<td colspan=2  class="td_titre center col_4"><?php echo T_('Transmissions Prototypes'); ?></td>
				<td class="td_gg center" colspan=2><?php echo $dm['NUM_AFFAIRE']; ?></td>
			</tr>
		</table>
		<table class="table" style="margin-top:40px;">
			<tr>
				<td class="td_g left col_1"><?php echo T_('Emetteur'); ?></td>
				<td class="td center col_2"><?php echo  $dm['PRENOM_PERSONNE'].' '. $dm['NOM_PERSONNE']; ?></td>
				<td class="td_g left col_1" style="border-left:3px double black;"><?php echo T_('Pilote'); ?></td>
				<td class="td center col_2"><?php echo  $prs['PRENOM_PERSONNE'].' '. $prs['NOM_PERSONNE']; ?></td>
			</tr>
		</table>
		<table class="table" style="margin-top:10px;">
			<tr>
				<td class="td_g left col_1" style="width:250px;"><?php echo T_('Client'); ?></td>
				<td class="td center col_2"><?php echo  $dm['LABEL_CLIENT'];?></td>
				<td colspan=2 class="td_g left col_3" style="border-left:3px double black;"><?php echo  T_('Date prévisionnelles de');?>:</td>
			</tr>
			<tr>
				<td class="td_g left col_1" ><?php echo  T_('Résumé');?></td>
				<td class="td center col_2"><?php echo  $dm['RESUME_DM'];?></td>
				<td class="td_g left col_1" style="border-left:3px double black;">-<?php echo  T_('Démarrage en série');?></td>
				<td class="td center col_2"><?php echo  $dm['DATE_PREV_SERIE'];?></td>
			</tr>
			<tr>
				<td class="td_g left"><?php echo  'Application véhicule';?></td>
				<td class="td center"><?php echo  $dm['APPLICATION_DM'];?></td>
				<td class="td_g left" style="border-left:3px double black;"><?php echo T_('Echantillons initiaux'); ?></td>
				<td class="td center"><?php echo  $dm['DATE_ECHANTILLION_INI'];?></td>
			</tr>
		</table>
		<table class="table" style="margin-top:10px;">
			<tr>
				<td class="td_g left col_3"><?php echo T_("Mode d'utilisation"); ?> :</td>
				<td class="td_g left col_3" style="border-left:3px double black;"><?php echo T_("Autre mode d'utilisation"); ?> :</td>
				
			</tr>
			<tr>
				<td class="td left col_3">
					<?php 
					while($util = oci_fetch_assoc($sta_util)){
						echo '- '. $util['LABEL_MODE_UTIL'].'<br>';
					}?>
				</td>
				<td class="td left col_3" style="border-left:3px double black;">
					<?php echo  $dm['AUTRE_MOD_UTIL_DM'];?>
				</td>
			</tr>
		</table>
		<table class="table" style="margin-top:40px;">
			<tr>
				<th class="th_tab center" colspan="2" rowspan="2"><?php echo T_('Produit'); ?></th>
				<th class="th_tab center" colspan="3"><?php echo T_('Référence'); ?></th>
				<th class="th_tab center" rowspan="2"><?php echo T_('Désignation'); ?></th>
				<th class="th_tab center" rowspan="2"><?php echo T_('Qté'); ?></th>
				<th class="th_tab center" colspan="2"><?php echo T_('Prix de vente'); ?><br />(<?php echo T_('Hors Taxe'); ?>)</th>
				<th class="th_tab center" rowspan="2"><?php echo T_('Délai'); ?></th>
				<th class="th_tab center" rowspan="2"><?php echo T_('Commentaires'); ?></th>
			</tr>
			<tr >
				<th class="th_tab center" ><?php echo T_('Client'); ?></th>
			<th class="th_tab center"><?php echo T_(""); ?></th>
			<th class="th_tab center"><?php echo T_("Ind"); ?></th>
				<th class="th_tab center"><?php echo T_('Piéce'); ?></th>
				<th class="th_tab center"><?php echo T_('Total'); ?></th>
			</tr>
			<?php
			$total = 0; // Valeur total du besoin
			$flag_couleur = 0;
			if (isset($tableau)) {
				foreach($tableau as $key => $val) {
					foreach( $val as $key2 => $val2) {
						$type_produit = $val2 -> getType_produit();
						if($type_produit != null){
							$requete1 = "SELECT LABEL_TYPE_PRODUIT,PRIMAIRE_TYPE_PRODUIT
								FROM POP_TYPE_PRODUIT
								WHERE ID_TYPE_PRODUIT =".$type_produit;
							$statement1 = oci_parse($conn, $requete1); 
							oci_execute($statement1,OCI_COMMIT_ON_SUCCESS);
							$list_type_produit = oci_fetch_assoc($statement1);
						}
						
						$prix = $val2 -> getPrix_u();		
						
						$qte = $val2 -> getQte();
						if($prix != null && $qte != null && is_numeric($prix)){
							$valeur = $prix * $qte;
							$valeur_formate = number_format($valeur,2); 
							$valeur_euro = $valeur_formate."€";
						}
						if($prix == null || $qte == null || !is_numeric($prix)){
							$valeur_euro = '';
						}
						
						if($prix == null || !is_numeric($prix)) {
							$prix_euro = '';
						}
						else {
							$prix = number_format($prix,2);
							$prix_euro = $prix."€";
						}
						if($qte == null){
							$qte = '';
						}
						?>
						<tr>
							<td class="td_tab center"><?php if($type_produit != null){echo $list_type_produit['LABEL_TYPE_PRODUIT'];}?></td>
							<td class="td_tab center"><?php 
								if($val2 -> getType_activite() != null){
									$req_activite = "SELECT DIMINUTIF_TYPE_ACTIVITE
									FROM POP_TYPE_ACTIVITE
									WHERE ID_TYPE_ACTIVITE = ".$val2 -> getType_activite();
									$sta_activite = oci_parse($conn, $req_activite);
									oci_execute($sta_activite,OCI_COMMIT_ON_SUCCESS);
									$mon_activite = oci_fetch_assoc($sta_activite);
									echo $mon_activite['DIMINUTIF_TYPE_ACTIVITE'];
								}?>
							</td>
							<td class="td_tab center"><?php echo  $val2 -> getRef_client();?></td>
							<td class="td_tab center"><?php echo  $val2 -> getRef_();?></td>
							<td class="td_tab center"><?php echo  $val2 -> getInd();?></td>
							<td class="td_tab center"><?php echo  $val2 -> getQte();?></td>
							<td class="td_tab center"><?php echo  $prix_euro;?></td>
							<td class="td_tab center"><?php echo  $valeur_euro;?></td>
							<td class="td_tab center">
								<?php 
									if($val2 -> getDelai_c() != null)
										echo  $val2 -> getDelai_c();
									else {
										if($val2 -> getDelai_s() != null)
											echo  "S - ".$val2 -> getDelai_s();
									}
										
								?>
							</td>
							<td class="td_tab center" style="min-width:140px;max-width:200px;word-wrap: break-word;"><?php echo nl2br($val2 -> getCommentaire());?></td>
						</tr>
						<?php
						if($valeur_euro != '' && $key2 == 0){
							$total = $total + $valeur;
						}
						$flag_couleur++;
					}
				}
			}?>
		</table>
		<table class="table" style="margin-top:10px;">
			<tr>
				<td class="td center"><?php echo T_('Valeur total de la commande'); ?> : <?php echo number_format($total,2).' €';?></td>
			</tr>
		</table>
	</div>
	<div style="position: absolute; bottom: 0;width:100%;">
		<table class="table" style="margin-top:10px;">
			<tr>
				<td class="td_g left col_3"><?php echo  T_('Contrôle');?> :</td>
				<td class="td_g left col_3" style="border-left:3px double black;"><?php echo  T_('Contrôle spécifique');?>:</td>
			</tr>
			<tr>
				<td class="td left col_3">
				<?php 
				while($ctr = oci_fetch_assoc($sta_ctr)){
					echo  '- '.$ctr['LABEL_CONTROLE'].'<br>';
				}?>	
				</td>
				<td class="td left col_3" style="border-left:3px double black;"><?php echo $dm['CONTROLE_SPE_DM'];?></td>
			</tr>
		</table>
		<table class="table" style="margin-top:10px;">
			<tr>
				<td class="td_g left col_3"><?php echo  T_('Spéc. Marquage/Conditionnement');?> :</td>
				<td class="td_g left col_3" style="border-left:3px double black;"><?php echo T_('Commentaire Identification'); ?> :</td>
			</tr>
			<tr>
				<td class="td left col_3">
					<?php 
						if($dm['STANDARD_PROTO_DM'] == 1) {
							echo  T_('- Standard Proto (N°HP + N°Pièce)').'<br>';
						}
						if($dm['STANDARD_PROTO_SPE_DM'] != null){
							echo T_("- Standard Proto + "). $dm['STANDARD_PROTO_SPE_DM']."<br>";
						}
						if($dm['SPE_MARQUAGE_DM'] != null){
							echo  $dm['SPE_MARQUAGE_DM'];
						}
						if($dm['MARQUAGE_SERIE_DM'] == 1){
							echo  T_('- Laisser le marquage série').'<br>';
						}
						if($dm['EFFACE_MARQUAGE_SERIE_DM'] == 1){
							echo  T_('- Effacer le marquage série').'<br>';
						}
						if($dm['AUCUN_MARQUAGE_DM'] == 1){
							echo T_("- Aucun marquage")."<br>";
						}
					?>
				</td>
				<td class="td left col_3" style="border-left:3px double black;"><?php echo  $dm['IDENTIFICATION_MARQUAGE_DM'];?></td>
			</tr>
		</table>
		<table class="table" style="margin-top:10px;">
			<tr>
				<th class="td_g" style="width:60px;" ><?php echo T_('Indice'); ?></th>
				<th class="td_g" style="width:80px;" ><?php echo T_('Date'); ?></th>
				<th class="td_g" ><?php echo T_('Par'); ?></th>
				<th class="td_g" style="text-align:left;border-left:3px double black;width:50%;"><?php echo T_('Objet modification'); ?></th>
			</tr>
			<?php
			$o = 0;
			$i = $suivi_nb['NB'];
			$flag_couleur = 0;
			while($suivi_hp = oci_fetch_assoc($sta_suivi_hp)){
				if($o < 3){?>
					<tr>
						<td class='td center' ><?php echo $i;?></td>
						<td class='td center' ><?php echo $suivi_hp['DATE_SUIVI_DM'];?></td>
						<td class='td center' ><?php echo $suivi_hp['PRENOM_PERSONNE']." ".$suivi_hp['NOM_PERSONNE'];?></td>
						<td class='td left' style="border-left:3px double black;"><?php echo $suivi_hp['COMMENTAIRE_SUIVI_DM'];?></td>
					</tr><?php
				}
				$flag_couleur++;
				$i--;
				$o++;
			}?>
		</table>
	</div>
</div>
<?php
if($dm['DETAIL_BESOIN_DM'] != null || $dm['DETAIL_BESOIN_DM'] != ""){?>
<div style="position: absolute; top: 100%;width:98%;">
	<table class="table">
		<tr><td class='td_g center' ><?php echo T_('Détails du besoin'); ?></td></tr>
		<tr><td class='td left' ><?php echo nl2br($dm['DETAIL_BESOIN_DM']);?></td></tr>
	</table>
</div><?php
}?>


avec window.print(); j'imprime le document mais je voudrais qu'au lieu de se superposer quand le tableau devient trop grand alors il se copie sur une autre page.

Voici le css :

.table{
float:left;
width:100%;
border-collapse:collapse;
line-height: normal;
vertical-align: middle;
border: 1px solid black;
font-family:Arial, Helvetica, sans-serif;

}

.td{
font-size:9pt;
border: 1px solid black;
padding:2px 4px;
color:black;
}

.td_etq{
font-size:20pt;
border: 1px solid black;
padding:2px 4px;
color:black;
font-weight: bold;
}

.td_etq_2{
font-size:16pt;
padding:2px 4px;
color:black;
border-left: 1px solid black;
border-right: 1px solid black;
border-bottom: 1px solid black;
font-weight: bold;
}

.td_etq_3{
font-size:10pt;
padding:2px 4px;
color:black;
border-left: 1px solid black;
border-right: 1px solid black;
border-top: 1px solid black;
font-weight: bold;
}

.td_etq_4{
font-size:10pt;
border: 1px solid black;
padding:2px 4px;
color:black;
font-weight: bold;
}

.td_etq_5{
font-size:14pt;
padding:2px 4px;
color:black;
border-left: 1px solid black;
border-right: 1px solid black;
border-bottom: 1px solid black;
font-weight: bold;
}

.td_etq_6{
font-size:14pt;
border: 1px solid black;
padding:2px 4px;
color:black;
font-weight: bold;
}

.td_etq_7{
font-size:38pt;
border: 1px solid black;
padding:2px 4px;
color:black;
font-weight: bold;
}

.td_etq_9{
font-size:34pt;
border-left: 1px solid black;
border-right: 1px solid black;
border-bottom: 1px solid black;
padding:2px 4px;
color:black;
font-weight: bold;
}

.td_etq_8{
font-size:34pt;
border-left: 1px solid black;
border-right: 1px solid black;
border-bottom: 1px solid black;
padding:2px 4px;
color:black;
font-weight: bold;
}

.td_etq_10{
font-size:14pt;
padding:2px 4px;
color:black;
border-left: 1px solid black;
border-right: 1px solid black;
border-top: 1px solid black;
font-weight: bold;
}

.td_g{
font-size:9pt;
border: 1px solid black;
padding:2px 4px;
color:black;
font-weight: bold;
}

.td_no_b{
font-size:9pt;
padding:2px 4px;
color:black;
}

.td_titre_1{
font-size:9pt;
padding:2px 4px;
color:black;
}

.td_gg{
font-size:12pt;
border: 1px solid black;
padding:2px 4px;
color:black;
font-weight: bold;
}

.col_1{
width:20%;
}

.col_2{
width:30%;
}

.col_3{
width:50%;
}

.col_4{
width:50%;
}

.th_tab{
font-size:7pt;
border: 1px solid black;
padding:2px 4px;
color:black;
font-weight: bold;
}

.td_tab{
font-size:7pt;
border: 1px solid black;
padding:2px 4px;
color:black;
}

.td_titre{
font-size:11pt;
border-left: 3px double black;
border-right: 3px double black;
padding:2px 4px;
color:black;
}

.td_titre_bl{
font-size:13pt;
padding:2px 4px;
color:black;
font-weight: bold;
}

.center {
text-align:center;
}

.left {
text-align:left;
}

.right {
text-align:right;
}

th{
font-size:9pt;
font-weight:normal;
border: 1px solid black;
padding:6px 5px;
}

.td2{
font-size:9pt;
text-align:center;
border-left: 1px solid black;
border-right: 1px solid black;
border-top: 1px solid black;
padding:4px 4px;
color:black;
}

.table_no_b{
float:left;
width:100%;
border-collapse:collapse;
line-height: normal;
vertical-align: middle;
font-family:Arial, Helvetica, sans-serif;
}


.td_tab_al{
font-size:9pt;
padding:2px 4px;
border: 1px solid black;
color:black;
max-width:200px;
}

.td_no_b{
font-size:9pt;
padding:2px 4px;
color:black;
}

.td_no_blr{
font-size:9pt;
padding:2px 4px;
border-left: 1px solid black;
border-right: 1px solid black;
color:black;
}

.td_no_blr_p{
height:20px;
font-size:9pt;
padding:2px 4px;
border-left: 1px dashed black;
border-right: 1px dashed black;
color:black;
}



.td_no_blrb{
font-size:9pt;
padding:2px 4px;
border-left: 1px solid black;
border-right: 1px solid black;
border-bottom: 1px solid black;
color:black;
}

.td_no_blrt{
font-size:9pt;
padding:2px 4px;
border-left: 1px solid black;
border-right: 1px solid black;
border-top: 1px solid black;
color:black;
font-weight: bold;
}

.td_no_btb{
font-size:9pt;
padding:2px 4px;
color:black;
}

.td_titre_2{
font-size:10pt;
border: 1px solid black;
padding:2px 4px;
color:black;
font-weight: bold;
}


.td_lrb_d{
height:20px;
font-size:9pt;
padding:2px 4px;
border-left: 1px dashed black;
border-right: 1px dashed black;
border-bottom: 1px dashed black;
color:black;
}


.td_titre_d{
height:20px;
font-size:10pt;
border: 1px dashed black;
padding:2px 4px;
color:black;
}


Merci à vous si vous avez besoin de plus d'information n'hésitez pas Smiley smile
J'aimerai savoir comment imprimer du contenu sur plusieurs pages au lieux qu'il s'entasse ou se superpose ?pour simplifier ma question, j'ai vue qu'on peut utiliser css ou javascript, auriez vous une idée?
Modifié par jikail (21 Jun 2016 - 12:42)
Modérateur
Bonjour Jikail,

Sans rentrer dans les détails je pencherais pour l’application de styles spécifiques au média print.

Donc de deux choses l'une. Soit ta feuille de style principale s'adresse à tous les médias auquel cas tu fais appel à une feuille dédiée à l'impression (déclarer le style général puis la feuille print qui va réécrire les propriétés).
Soit tu distingue ta feuille de style principale en lui indiquant qu'elle s'applique à tous les médias sauf print. Ce qui ne t'affranchira pas de faire une feuille dédiée à l'impression. L'avantage c'est qu'il n'y a pas de réécriture de propriété.

Yoyo Design - Les types de media
Merci de votre réponse,
Ici la page php et css est spécialement faite pour l'impression elle fonctionne très bien, mais ici https://davidwalsh.name/css-page-breaks je ne peut pas utiliser cela dans mon cas car je ne sais pas si le contenu va se superposer et donc si j'ai besoin de plusieurs pages cela dépend entre autre du nombre de lignes dans mon tableau, comment auriez vous fait? merci à vous
Modérateur
jikail a écrit :
Merci de votre réponse,
Ici la page php et css est spécialement faite pour l'impression elle fonctionne très bien, mais ici https://davidwalsh.name/css-page-breaks je ne peut pas utiliser cela dans mon cas car je ne sais pas si le contenu va se superposer et donc si j'ai besoin de plusieurs pages cela dépend entre autre du nombre de lignes dans mon tableau, comment auriez vous fait? merci à vous
Théoriquement, s'ils se superposent c'est qu'ils sont positionnés absolument par rapport à leur ancêtre.
La feuille de style dédiée à l'impression ne devrait pas contenir d'éléments positionnés absolument mais relativement par rapport à leur parent, non ?

(Je réfléchis en même temps et tente un raisonnement logique)

S'ils sont ainsi, la question va être de bien gérer les sauts de page. Quoi que s'il s'agit réellement de tableau (balise table), lorsqu'un tableau est tronqué à l'impression, il me semble le gestionnaire réintroduit les en-têtes et pieds de tableau à chaque troncature automatiquement.

Note : penser à l'orientation du papier.
penser au format (A4, B5 etc).
penser à l'orientation (portrait/paysage)

Espérant que ma réflexion ouverte puisse te guider. Pour l'instant, j'avoue, je sèche un peu.
Salut !

J'ai trouvé au détour d'un forum mention d'un logiciel Prince en des termes élogieux.

Je ne sais pas si cela peut résoudre votre problème... Smiley confus

Smiley smile
Merci de vos retour, le plus propre serait quel méthode d'après vous? j'aimerai éviter de faire de la bidouille, si j'utilise le software prince cela est simple à mettre en place?
jikail a écrit :
Merci de vos retour, le plus propre serait quel méthode d'après vous? j'aimerai éviter de faire de la bidouille, si j'utilise le software prince cela est simple à mettre en place?

Bonjour,

1- Vérifier le besoin réel d'impression... Il faut parfois lâcher prise...
2- Vérifier le besoin réel d'une application tierce (propriétaire et payante)
Si la feuille de styles print fonctionne pour le reste de tes pages, et que tes difficultés se situent uniquement au niveau de l'impression de tes tableaux, il est peut-être judicieux de se tourner vers d'autres solutions...
3- Générer/Proposer une version PDF de ce tableau si le besoin est réel...
Modérateur
6l20 a écrit :

3- Générer/Proposer une version PDF de ce tableau si le besoin est réel...
Ha oui bonne idée !

Voire en xls aussi, ça se fait souvent pour du tabulaire.
Le problème est que je suis stagiaire et que mon chef lui n'ai pas informaticien mais je pense j'ai complexifié un peux le problème, c'est pour générer des commandes
upload/62239-Capture1.PNG
upload/62239-Capture2.PNG

enfaîte cela imprime déjà sur deux pages je n'avais pas vue j'ai le footer dans une autre page, par contre il écrase les tableau, si je m'est en relatif ce problème sera géré?
Modifié par jikail (22 Jun 2016 - 11:42)
Il y a sap mais l'outil développé répond plus au besoin du service enfin c'est ce qu'on ma dis lol , du coup tu me conseil quoi?