Php, Mysql, javascript.
Voilà ce que je désirais faire au départ.
J'ai une table suivante :
Code : Tout sélectionner
CREATE TABLE `t_items_connus` (
`num_item_connu` mediumint(9) NOT NULL auto_increment,
`nom_item` text,
`type` text,
`categorie` text,
`description` text,
PRIMARY KEY (`num_item_connu`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;J'ai réussi à faire tout ça. Mais le problème vient du fait que je peux avoir des retours à la ligne dans mon champ description et je n'arrive pas à les gérer.
Pour résoudre l'erreur unterminated string literal, j'ai essayé les fonctions suivantes urlencode() et urldecode() - str_replace() - nl2br() - Mais je ne sais pas où les utiliser dans mon code.
Pourriez vous m'aider Svp, celà fait une semaine que je bloque dessus.
Mon code ci-desous :
<?php
// Convertit un tableau PHP en déclaration d'un tableau javascript
// $tableau : variable tableau PHP à convertir
// $monjs : nom de la variable tableau en javascript
// $prempass : /!\ NE PAS UTILISER : sert à différentier le premier passage
// des passages récursifs, je n'ai pas déclaré une seconde fonction pour des
// raisons de portabilité...
//
// Utilisation commune : conv_tabjs($tableau, "nomJS");
// Concepteur : Rivenbis
// Src : http://www.phpcs.com/codes/CONVERSION-TABLEAU-PHP-DECLARATION-TABLEAU-JAVASCRIPT_22362.aspx
function conv_tabjs($tableau, $nomjs, $prempass=true)
{
if($prempass)
{
$taille = count($tableau);
echo "var ".$nomjs." = new Array(".$taille.");\n";
foreach($tableau as $key => $val)
{
if(is_string($key)) $key = "'".$key."'";
conv_tabjs($val, $nomjs."[".$key."]", false);
}
}
else
{
if(is_array($tableau))
{
echo($nomjs." = new Array(".count($tableau).");\n");
foreach($tableau as $key => $val)
{
if(is_string($key)) $key = "'".$key."'";
conv_tabjs($val, $nomjs."[".$key."]", false);
}
}
else
{
if(is_string($tableau)) $tableau = "'".addcslashes($tableau,"'")."'";
echo($nomjs." = ".$tableau.";\n");
}
}
}
?>
<?php
// Mettre le resultat de la requete dans le tableau $tab_php
$req_item_connu=mysql_query("SELECT * FROM t_items_connus ORDER BY nom_item ASC");
$elem=1;
while($champs=mysql_fetch_array($req_item_connu))
{
$tab_php[$elem]=$champs;
$elem++;
}
?>
<?php
// Mettre le resultat de la requete dans le tableau $tabtype_php
$req_type=mysql_query("SELECT * FROM t_type");
$elemtype=1;
while($champstype=mysql_fetch_array($req_type))
{
$tabtype_php[$elemtype]=$champstype;
$elemtype++;
}
?>
<?php
// Mettre le resultat de la requete dans le tableau $tabcate_php
$req_cate=mysql_query("SELECT * FROM t_categorie ORDER BY id_categorie ASC");
$elemcate=1;
while($champscate=mysql_fetch_array($req_cate))
{
$tabcate_php[$elemcate]=$champscate;
$elemcate++;
}
?>
<script language="JavaScript">
// Cette fonction est appelé par la fonction onchange() du select qui contient le nom des items.
function majchamp()
{
<?php
// Convertir le tableau $tab_php en tableau tabtype javascript
conv_tabjs($tab_php,"num_item_connu");
?>
<?php
// Convertir le tableau $tabtype_php en tableau tabtype javascript
conv_tabjs($tabtype_php,"tabtype");
?>
<?php
// Convertir le tableau $tabcate_php en tableau tabcate javascript
conv_tabjs($tabcate_php,"tabcate");
?>
var chx_lst_item = $idobjet('lst_items_connus').options[$idobjet('lst_items_connus').selectedIndex].text;
document.forms['frm_ajout_inventaire'].elements['chp_objet'].value=chx_lst_item;
for (i=1;i < <?php echo $elem;?>;i++)
for (t=1;t < <?php echo $elemtype;?>;t++)
for (z=1;z < <?php echo $elemcate;?>;z++)
// Trouver l'item pour connaitre le nom, le type et la categorie
if (num_item_connu[i][1] == chx_lst_item)
{
if (num_item_connu[i][2] == tabtype[t][1])
{
if (num_item_connu[i][3] == tabcate[z][1])
{
//alert(num_item_connu[i][4]);
document.getElementById('lst_type').selectedIndex=tabtype[t][0];
document.getElementById('lst_catagorie').selectedIndex=tabcate[z][0];
// textarea
document.getElementById('id_description').value =num_item_connu[i][4];
}
}
}
}
</script>
En espérant que vous pourrez m'aider, merci d'avance.