1

Bonjour
Voilà mon problème tout bêtement je ne comprends pas pourquoi le symbole « < » ne s’affiche pas alors que les autre marche bien comme « % * . > ^ …. » bizard !!!!
Le code :
<?php do { ?>
<tr>
<td ><?php echo $row_ArTest['libelle']; ?></td>
</tr>
<?php } while ($row_ ArTest = mysql_fetch_assoc($ArTest)); ?>
…..
<?php
$content = ob_get_clean();
require('../../html2pdf/html2pdf.class.php');
try{
// code
$pdf = new HTML2PDF('P','A4','fr');
$pdf->pdf->SetDisplayMode('fullpage');
$pdf->writeHTML($content);
$pdf->Output(Test.pdf');
// fin code
}catch(HTML2PDF_exception $e) {
die($e);
}
?>

2

3

essaye de le substituer par &lt; -----

str_replace("&lt;","<",$content);


Si bien sa ?

4

t'as essayé? y'a pas de risque d'explosion là...

5

Voilà un test :
http://sciencelab.be/15968452/test.php

ça ne marche pas.

6

pourrais tu poster la source php qui produit cette page ?

7

<?php require_once('sb/Connections/sb.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

mysql_select_db($database_sb, $sb);
$query_ArTest = "SELECT * FROM test";
$ArTest = mysql_query($query_ArTest, $sb) or die(mysql_error());
$row_ArTest = mysql_fetch_assoc($ArTest);
$totalRows_ArTest = mysql_num_rows($ArTest);

ob_start();
?>

<style type="text/css">
hr {background:#009}
table{margin-bottom:120px;border-collapse:collapse; width:100%}
th{padding:5px}
td{font-size:12px; padding:10px; line-height:20px}
td.noborder {border:none}
</style>

<page backtop="160px" backleft="10mm" backright="10mm" backbottom="20mm">

<p align="center" style="font-size:22px;"><strong><u>Liste </u></strong></p>
<table>
<tr>
<th style="width:50%; border:solid 1px #000; text-align:center;font-size:16px"><strong>id</strong></th>
<th style="width:50%; border:solid 1px #000; text-align:center;font-size:16px"><strong>Test</strong></th>
</tr>
<?php do { ?>
<tr>
<td style="width:50%; border:solid 1px #000; text-align:left; margin-left:5px">
<?php echo $row_ArTest['id']; ?>
</td>
<td style="width:50%; border:solid 1px #000; text-align:left; margin-left:5px"">
<?php echo $row_ArTest['libelle']; ?>
</td>
</tr>
<?php } while ($row_ArTest = mysql_fetch_assoc($ArTest)); ?>
</table>
</page>
<?php
$content = ob_get_clean();
require('../html2pdf/html2pdf.class.php');
try{
// code

$pdf = new HTML2PDF('P','A4','fr');
$pdf->pdf->SetDisplayMode('fullpage');
$pdf->writeHTML($content);
$pdf->Output('facture.pdf');

// fin code
}catch(HTML2PDF_exception $e) {
die($e);
}

mysql_free_result($ArTest);
?>

8

tain, tu fais aucun effort.

y'a pas de str_replace dans ce code, du coup, même le html est faux:

<td><</td>

-> pas bon du tout, il faut <td>&lt;</td>

idem, <td>></td> est mauvais, cela doit être <td>&gt;</td>

il s'affiche en html uniquement parce que firefox est suffisamment "gentil", mais html2pdf ne s'en sort pas.

9

<td style="width:50%; border:solid 1px #000; text-align:left; margin-left:5px"">
<?php echo $row_ArTest['libelle']; ?> // <--lecture direct dans la base de donnée
</td>

1er : les autre symbole marche bien > * % ..... mais pas le symbole <
2eme : str_replace ne marche pas j'ai tester , le problème et le même.

tu les donnée son stock en base de donnée . je ne peu pas écrire <td>&lt;</td> , mais <td> <?php echo $row_ArTest['libelle']; ?> </td>

10

mise a jour de site avec : $content = str_replace("&lt;","<",$content);

le même problème ....

<?php
$content = ob_get_clean();
$content = str_replace("&lt;","<",$content);
require('../html2pdf/html2pdf.class.php');
try{
// code

$pdf = new HTML2PDF('P','A4','fr');
$pdf->pdf->SetDisplayMode('fullpage');
$pdf->writeHTML($content);
$pdf->Output('facture.pdf');

// fin code
}catch(HTML2PDF_exception $e) {
die($e);
}

mysql_free_result($ArTest);
?>

11

afficher la source de ta page montre que de toute façon, la fonction n'a eu aucun effet, car tu l'utilises à l'envers. relis la doc
http://php.net/manual/fr/function.str-replace.php
c'était tellement facile que j'ai as pensé à te faire vérifier ça.

as tu essayé de mettre directement &lt; dans la base au lieu de < ? juste pour tester.

d'autre part si tu fais un remplacement c'est sur les données en BASE qu'il faut appliquer le replace, pas globalement, car sinon tu vas remplacer TOUS les < y compris ceux des balises

<td style="width:50%; border:solid 1px #000; text-align:left; margin-left:5px"">
<?php echo str_replace("<","&lt;",$row_ArTest['libelle'] ); ?> // <--lecture direct dans la base de donnée
</td>

12

si j'insert &lt; directement dans la base sa marche tri bien , mais je ne peu pas utiliser sa dans un site commerciale je ne peu pas demander a mais client d'utiliser le &lt; directement , je ne comprend pas pour quoi le symbole > marche lui !!!! pas besoin d'utiliser code html .


j'ai fais une mise a jour avec
<td style="width:50%; border:solid 1px #000; text-align:left; margin-left:5px"">
<?php echo str_replace("&lt;","<",$row_ArTest['libelle'] ); ?> // <--lecture direct dans la base de donnée
</td>

le même problème ....

13

Si c'est un site commercial, il n'y a aucune raison que je continue à faire ton travail à ta place gratuitement. Mes clients payent 750 euros la journée de support technique.

14

ok - merci bien

15

done sa marche tri bien , merci

<td style="width:50%; border:solid 1px #000; text-align:left; margin-left:5px"">
<?php echo htmlspecialchars($row_ArTest['libelle'], ENT_QUOTES) ; ?>
</td>

manual :
http://www.php.net/manual/fr/function.htmlspecialchars.php

16

tu as inversé les arguments de str_replace, c'est pour ça que ça ne marchait pas.

17

oui sa marche b1 .

<td style="width:50%; border:solid 1px #000; text-align:left; margin-left:5px"">
<?php echo str_replace("<","&lt;",$row_ArTest['libelle'] ); ?>
</td>

merci encore une autre fois