Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/03/2011, 08h24   #1
Membre du Club
 
Avatar de alain78
 
Homme Alain
Développeur informatique
Inscription : mai 2008
Messages : 117
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 59
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 117
Points : 55
Points : 55
Par défaut les apostrophes disparaissent

Bonjour,

Voici un énième problème de disparition d'apostrophe. Pourtant je maitrise (enfin je crois) ce problème depuis des années.

Aujourd'hui, mes apostrophes disparaissent lorsque j'utilise un tableau. Il doit y avoir une chose que je ne comprend pas. Mais laquelle ?

Voici la structure de mon script

1- récupération d'un tableau

Code :
1
2
3
4
5
6
 
if (isset($_POST['tabrapport'])) {
    $tab_rapport=$_POST['tabrapport'];
}else{
    $tab_rapport=array();
}
2 - enregistrement d'un équipement noté dans un tableau
Code :
1
2
3
4
5
 
if (isset($_POST['ok']))  {
    $tab_rapport[$_POST['ref_equipement']]=array("notes"=>$_POST[notes]);
 
}
3 - formulaire n°1 (F1) - sélection d'un équipement et affichage de ses notes
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
echo "<form method='POST' action='{$_SERVER['PHP_SELF']}' >";
 
     $sql="SELECT `ref_referentiel`,`libelle`
    FROM `referentiel_fr`
    WHERE `objet` = 'services immobiliers'
    ORDER BY `libelle`";
    $resultat=mysql_query($sql);
 
echo "<select name='ref_equipement' size='7' >";
    while ($row = mysql_fetch_assoc($resultat)) {
    	    echo "<option value={$row[ref_referentiel]}>$row[libelle]
            </option>";
 
    }
echo "</select>";
 
bouton_nok('zoom'); // cette fonction est un champ INPUT dont le nom est 'zoom'
echo "</form>";
4 - formulaire n°2 - saisie de notes pour un équipement
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
if (isset($_POST['zoom']))
 
    echo "<form method='POST' action='{$_SERVER['PHP_SELF']}' >";
 
    foreach ($tab_rapport as $key=>$value){
        echo "<input type='hidden' name='tabrapport[$key][notes]'
        value='{$tab_rapport[$key][notes]}'>";
    }
 
    $notes_equipement=$tab_rapport[$_POST['ref_equipement']]['notes']);
 
    echo "<textarea NAME='notes' ROWS='30' COLS='120'
    >$notes_equipement</textarea>";
 
   bouton_ok(); //cette fonction est un champ INPUT dont le nom est 'ok'
   echo "</form>";
 
 
}
5-formulaire 3 - liste des équipements notés avec possibilité de'afficher les notes (zoom)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
echo "<form method='POST' action='{$_SERVER['PHP_SELF']}' >";
 
    foreach ($tab_rapport as $key=>$value){
        echo "<input type='hidden' name='tabrapport[$key][notes]'
        value='{$tab_rapport[$key][notes]}'>";
    }
 
    echo "<select name='ref_equipement' readonly size=3 >";
    if (!empty($tab_rapport)){
        foreach ($tab_rapport as $key=>$value){
	        echo "<option value=$key
            >{$tab_equipements[$key][libelle]}</option>";
        }
    }
    echo "</select>";
 
    bouton_zoom();
    echo "</form>";
Voici ce qui se passe
Lorsqu'un équipement est appelé (formulaire 1), on saisi une note (formulaire 2) par exemple "l'équipement est obsolète".

Cet équipement est alors affiché dans la liste des équipements notés (formulaire 3). Si on demande l'affichage de cet équipement (dans formulaire 3 avec affichage dans formulaire 2) la note est tronquée après l'apostrophe.

Ce qui est sur est que la valeur saisie est bien enregistrée dans le tableau $tab_rapport (vérification faite)
J'ai essayé de protéger la valeur saisie avec addslashes, avec mysql_real_escape_string...cela ne change rien.

mes doutes
je me demande si la syntaxe de passage du tableau en POST est correcte
Code :
1
2
3
4
5
 
    foreach ($tab_rapport as $key=>$value){
        echo "<input type='hidden' name='tabrapport[$key]['notes']'
        value={$tab_rapport[$key][notes]}>";
    }
Voilà, cette disparition d'apostrophe me bloque depuis plusieurs jours.

Si vous avez déjà rencontré (et solutionné) ce problème, ou si vous avez une idée, je vous remercie par avance pour votre aide.

Bonne journée.
Alain
alain78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 09h58   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
utilise toujours htmlspecialchars dans le HTML
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h15.


 
 
 
 
Partenaires

Hébergement Web