IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Apostrophe dans variable php OK mais pas dans <INPUT> [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 32
    Points
    32
    Par défaut Apostrophe dans variable php OK mais pas dans <INPUT>
    Bonjour,

    Le code suivant me permet d'interroger une BDD MySQL et d'afficher un résultat formaté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
                  <?php  include("lib/connexion.inc.php");
     
                  // Déclaration des variables
     
                   $nom = addslashes($_GET['nom']);
                   $prenom = $_GET['prenom'];
     
                  // Requête et affichage
     
                   if(isset($nom, $prenom)) {
                   $result = mysql_query("SELECT *, ROUND(DATEDIFF(CURDATE(),`datenaiss`)/365) AS 'age' FROM fiche AS f
                                                       INNER JOIN datpro AS d ON f.`num_registre` = d.`num_registre`
                                                       WHERE f.`nom` LIKE '%$nom%' AND f.`prenom` LIKE '%$prenom%'");
     
                   echo "<table border='0' cellpadding='0' cellspacing='0' width='600'>";               
                   while ( $row = mysql_fetch_assoc($result)){
                   echo "<tr>
                            	<td align='right' width='155'>Numéro :</td>
                            	<td width='130'><input size='8' name='num' value='".$row['num_registre']."'></td>
                            	<td align='right' width='70'>Entreprise :</td>
                   				<td width='235'><input size='18' name='entreprise' value='".$row['entreprise']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Nom :</td>
                   				<td width='130'><input size='12' name='nom' value='".$row['nom']."'></td>
                   				<td align='right' width='70'>Prénom :</td>
                   				<td width='235'><input size='12' name='prenom' value='".$row['prenom']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Rue :</td>
                   				<td colspan='3'><input size='30' name='prenom' value='".$row['rue']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Code postal :</td>
                   				<td width='130'><input size='6' name='cp' value='".$row['code_postal']."'></td>
                   				<td align='right' width='70'>Ville :</td>
                   				<td width='235'><input size='12' name='prenom' value='".$row['ville']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Date de naissance :</td>
                   				<td width='130'><input size='8' name='daten' value='".dateFR($row['datenaiss'])."'></td>
                   				<td align='right' width='70'>Age :</td>
                   				<td width='235'><input size='2' name='prenom' value='".$row['age']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Lieu de naissance :</td>
                   				<td width='130'><input size='10' name='villen' value='".$row['villenaiss']."'></td>
                   				<td align='right' width='70'>NISS :</td>
                   				<td width='235'><input size='10' name='niss' value='".$row['niss']."'></td>
                   			</tr>
                   			<tr>
                   				<td rowspan='2' align='right' >Téléphone :</td>
                   				<td><input size='9' name='tel' value='".telbe($row['tel'])."'></td>
                   				<td rowspan='2' align='right'>GSM :</td>
                   				<td><input size='10' name='tel2' value='".telbe($row['gsm'])."'></td>
                   			</tr>
                   			<tr>
                   				<td><input size='9' name='gsm' value='".$row['tel2']."'></td>
                   				<td><input size='10' name='gsm2' value='".$row['gsm2']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Date d'entrée :</td>
                   				<td width='130'><input size='8' name='entre' value='".dateFR($row['date_entree'])."'></td>
                   				<td align='right' width='70'>Date de sortie :</td>
                   				<td width='235'><input size='8' name='sortie' value='".dateFR($row['date_sortie'])."'></td>               				
                   			<tr>
                   				<td colspan='4' height='10' align='center'>-------------------------------------------</td>
                   			</tr>";
                   } 
                   echo "</table>";
                   }
     
                  // Déconnexion de la base de données
     
                   mysql_close();
                  ?>
    Mon soucis viens du fait que l'affichage du résultat "brut de décoffrage" par PHP m'affiche bien les noms contenant une apostrophe.

    Dès que j'imbrique la variable qui me retourne le nom au sein d'une balise HTML (INPUT en particulier) le résultat est tronqué au niveau de l'apostrophe.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,
    utilise la fonction addslashes() pour éviter que la chaîne soit tronqué.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    utilise la fonction addslashes() pour éviter que la chaîne soit tronqué.
    Solution déjà essayée sans succès
    Affiche bien D'ASSONZIO.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT value='".$row['nom']."'>
    Afficche D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT value='".addslashes($row['nom'])."'>
    Affiche D\

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Ah quel bonheur que HTML admette les apostrophes comme délimiteurs !

    Ah... En fait non

    Vu que tu rencontres beaucoup plus souvent des apostrophes dans un type INPUT que des guillemets, tu te simplifierais la vie en délimitant tes attributs HTML avec ces derniers.

    Sinon tu peux toujours passer par htmlentities avec l'option ENT_QUOTES

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par Petibidon Voir le message
    Sinon tu peux toujours passer par htmlentities avec l'option ENT_QUOTES
    Ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT value='".htmlentities($row['nom'], ENT_QUOTES)."'>
    Affiche bien D'ASSENZIO

  6. #6
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Bonjour,
    Utilise les guillemets pour les valeurs de tes attributs html.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT type=\"text\" value=\"".$row['nom']."\" />
    et, pour t'épargner les barres obliques inversées,
    si tu n'as pas de variables php à interpréter,
    utilise les quotes simples quand tu fais un echo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<INPUT type="text" value="'.$row['nom'].'" />';
    Fred

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Merci Zarvox !

    micetf : ta solution plantera si j'ai des apostrophes dans mes chaînes à afficher ? non ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 20
    Dernier message: 24/04/2014, 16h11
  2. Variable JavaScript d'un comfirm() dans variable PHP
    Par fullmetalalchemiste dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 19/06/2012, 13h16
  3. Réponses: 6
    Dernier message: 24/03/2010, 17h20
  4. Champ présent dans une table Firebird mais pas dans TIBDataSet
    Par Mirmillon dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/12/2007, 00h41
  5. Réponses: 11
    Dernier message: 09/04/2006, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo