Mettre un chiffre en exposant

loic20h28
Invité n'ayant pas de compte PHPfrance

06 juin 2011, 18:41

Bonjour,

Je suis actuellement entrain de réaliser un site marchand vendant des moto pour mon propre plaisir.
Je suis plus précisément entrain de créer la génération d'une facture via FPDF. Pour cette Facture, j'affiche donc quelques détails de chaque produit commandé tel que la couleur, le cylindre...
Mon problème est le suivant, pour le cylindre j'aimerais pouvoir écrire centimètre cube de la manière suivante : "cm3" avec le 3 en exposant.
Voici la partie de mon code concerné par mon souci :
$designation = "CONCAT(ArtNeuf_marque,' ',ArtNeuf_modele,'\n   * Coloris : ',Col_lib,'\n   * Poids : ',ArtNeuf_poids,' Kg\n   * Cylindre : ',ArtNeuf_cylindre,' cm3') AS description";
	$sql = "SELECT Art_id, ".$designation.", LCde_quantite, CONCAT(LCde_prixHT,' ','".chr(128)."') AS LCde_prixHT, CONCAT((LCde_quantite*LCde_prixHT),' ','".chr(128)."') AS montant
			FROM ligne_commande
			LEFT JOIN article_neuf ON Art_id = ArtNeuf_id
			LEFT JOIN coloris ON ligne_commande.Col_id = coloris.Col_id
			WHERE Cde_id = '".$cde."'";
	$res = mysql_query($sql);
	$i = 0;
	$montantHT = 0;
	$lib_cols = array_keys($cols);  
	while($ligne = mysql_fetch_assoc($res)){
	   ++$i;
	   $lib_ligne = array_keys($ligne); 
	   for($j=0;$j<count($lib_cols);$j++) {
			$donnee[$lib_cols[$j]] = $ligne[$lib_ligne[$j]];
		}
		$size = $pdf->addLine($y, $donnee);
		$y   += $size + 2;
		$montantHT = ($montantHT + $ligne['montant']);
	}	
	$pdf->addCadreEurosFrancs($montantHT);
Au départ, j'avais pensé qu'une fonciton existait peut être sous mysql mais après des heures de recherche j'ai pensé me résigner à utiliser PHP pour mettre un texte en exposant mais après plusieurs recherche je ne trouve aucune fonction, c'est pour cela que je vient vers vous, en existe-t'il une bien caché ou dois-je la créer moi-même ?(si je doit la faire moi-même, quelqu'un pourrait-il m'aider s'il vous plait car je voit pas du tout comment faire).

Merci d'avance!!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 juin 2011, 19:57

C'est de l'affichage donc rien a voir avec MySQL. Pour afficher dans le html:

Code : Tout sélectionner

cm<sup>3</sup>
Je ne sais plus comment marche FPDF, tu lui envoyes du html ou c'est un syntaxe speciale?

loic20h28
Invité n'ayant pas de compte PHPfrance

06 juin 2011, 20:28

Bonjour,

Tout d'abord merci pour ta réponse.
Je n'utilise pas de HTML avec FPDF.
Avec FPDF je sait qu'il y a la méthode 'subWrite' mais je n'arrive pas à l'utiliser vu que je peux avoir 1 ou plusieurs ois à mettre "cm3".
C'est pour cela que je souhaiterais utilisé une fonction en pur PHP.

Cordialement.

Mammouth du PHP | 1511 Messages

06 juin 2011, 21:09

PHP ne sert pas a faire de la mise en page.
Les caractères en exposant ne font pas partie des caractères présents dans les charset (que ce soit les charset iso ou utf).

Cordialement ;)

loic20h28
Invité n'ayant pas de compte PHPfrance

07 juin 2011, 19:22

Je sais bien que PHP n'est pas pour la mise en page mais alors comment puis-je faire ?

Cordialement.

Mammouth du PHP | 2278 Messages

07 juin 2011, 20:18

Bonjour,
Et si en FPDF pour afficher 500 cm3
au lieu de les balancer par pdf->write(); comme je suppose que tu fais;
tu tentais :
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="fr">
	<LINK rel="stylesheet" href="../gestion/ressources.css" type="text/css">
<head>
<?php

	require 'fpdf.php';
error_reporting(E_ALL);
// Quelques variables qu'on suppose extraites de la base de données...
	$cylindree = "500";
	$unite = "cm";
	$exposant = "3";
	
	// creation de l'objet je choisis les points à cause des tailles de fonte qui sont forcément en points
	$pdf = new FPDF('P', 'pt', 'A4');
	// ajout d'une page
	$pdf->addPage();
	
	// 28 points pour un centimètre
	$marge = 12 /0.35;
	$taille_fonte_courante = 10;
	$increment_v_courant = ceil ($taille_fonte_courante*1.25);
	$taille_fonte_grande = 14;
	$taille_fonte_moyenne = 12;
	$taille_fonte_petite = 8;
	$nom_fonte = "Arial";
	$increment_v_grand =ceil ($taille_fonte_grande*1.25);
	$largeur_page = (210/0.35) - ($marge*2);
	$hauteur_page = (297/0.35) - ($marge*2);
	
	$hauteur_ligne = ceil ($taille_fonte_courante*1.1);	
	
	$pdf->SetFont('Arial','I',$taille_fonte_courante);
	
	$longueur_cylindree  = $pdf->GetStringWidth($cylindree);
	$longueur_unite  = $pdf->GetStringWidth($unite);
	$longueur_exposant =  $pdf->GetStringWidth($exposant);
	$y = 100; // arbitraire
	$pdf->SetXY ($marge, $y);
	$pdf->Cell($longueur_cylindree,$hauteur_ligne,$cylindree,0,0,'R');	
	$x =  $marge+ ($longueur_cylindree*1.2);
	$pdf->SetXY ($x, $y);
	$pdf->Cell($longueur_unite,$hauteur_ligne,$unite,0,0,'R');	
	$y = $y - ($hauteur_ligne/4);
	$x += $longueur_unite*.6;
	$pdf->SetXY ($x, $y);
	$pdf->SetFont('Arial','I',6);
	$pdf->Cell($longueur_exposant,$hauteur_ligne,$exposant,0,0,'L');	
	$nom_fic = "/var/www/htdocs/sibyllin/execution/annexes/questionnaire_27/essai.pdf";

	
	$pdf->Output($nom_fic,'F');
	
?>
J'espère ne pas m'être trompé en copiant/ collant; je garde l'original un temps
Le fichier résultat ne peutb pas être joint (pdf interdits)...
à tout hasard
[email protected]
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD