Se connecter / S'enregistrer
Votre question

Choisir le bon encodage

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
30 Mai 2011 17:29:25

Bonjour à tous,

je viens vous pour que vous m'éclairiez à propos de l'encodage de mes pages PHP.
J'utilise cette balise :

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

mais j'ai un problème avec les accents alors j'utilise utf-8

et là j'ai un autre problème c'est que les apostrophes sont remplacés par \'

L'autre souci c'est que j'ai un script PHP qui doit enregistrer des infos dans une BDD, le problème est que si ma clé primaire (en l’occurrence le titre de l'info) contient un apostrophe l'info ne s'enregistre pas dans la BDD.
Est-ce que je dois changer dans PHPMyAdmin l'interclassement (latin1_swedish_ci).

Pouvez-vous m'aider et me donner une solution ?

Merci d'avance

Autres pages sur : choisir bon encodage

31 Mai 2011 09:36:25

up
m
0
l
a c 145 L Programmation
31 Mai 2011 10:17:52

Il faut que tu harmonises tout.
Si tes headers sont en ISO-8859, tout doit être en ISO-8859. Et pour tes accents, utilises des entités HTML (é = é, ...).

Si tu veux être en UTF-8, utilises UTF-8 partout, même (et surtout) dans tes headers.
Au niveau MySQL, interclassement utf8_general_ci, et il y a la commande MySQL "SET NAMES utf8" qui est très pratique.
Et au niveau PHP, l'utilisation de utf8_encode().
m
0
l
Contenus similaires
31 Mai 2011 10:29:41

Merci pour ta réponse !
A quoi sert la commande "SET NAMES utf8" et utf8_encode() ?

Mon problème c'est que j'affiche des infos qui viennent d'une BDD donc je ne peux pas directement remplacer les é par des é, est-ce que justement la fonction utf8_encode sert à ça ?

Autre question j'ai un formulaire PHP qui rentre des infos dans une BDD et j'utilise ces infos après pour les afficher mais je rencontre quelques problèmes avec les apostrophes ? est-ce que ça peut venir des échappements (avec addslashes ou htmlspecialchars) ?

Merci
m
0
l
31 Mai 2011 10:37:58

Et je voulais savoir aussi ce que je dois mettre dans mon éditeur de texte ?
Encodage > Encoder en UTF-8 ?
m
0
l
31 Mai 2011 11:01:47

boss183 a dit :
Et je voulais savoir aussi ce que je dois mettre dans mon éditeur de texte ?
Encodage > Encoder en UTF-8 ?

si tu as choisis UTF-8 : oui :) 
m
0
l
31 Mai 2011 11:36:48

J'ai tout mis en utf-8 (dans l'entête, dans l'éditeur et dans ma base de données) et j'ai plein de problèmes, mes infos s'enregistrent sous la forme éé dans la BDD.
Y'a plus rien qui marche ...
m
0
l
31 Mai 2011 12:02:58

boss183 a dit :
J'ai tout mis en utf-8 (dans l'entête, dans l'éditeur et dans ma base de données) et j'ai plein de problèmes, mes infos s'enregistrent sous la forme éé dans la BDD.
Y'a plus rien qui marche ...

dans ce cas, si tu ne sais pas comment corriger la bdd, il faut ré-installer ... après tu n'auras plus ces problèmes ;) 
m
0
l
a c 145 L Programmation
31 Mai 2011 12:06:54

Il y a une conversion en utf8 en trop. Si ta page est en UTF-8 et ta base aussi, il ne faut donc pas faire de utf8_encode sur tes données avant l'insertion.
m
0
l
31 Mai 2011 12:12:11

ok merci je vais essayer.

et est-ce que je dois utiliser SET NAMES utf8 ?
m
0
l
31 Mai 2011 12:13:56

autre question quand, dans notepad ++, je met encoder en utf-8 ça foire tous les accents de mon script (ceux dans les commentaires par exemple) c'est normal ?
m
0
l
a c 145 L Programmation
31 Mai 2011 14:04:28

C'est normal, oui.
Lorsque tu passes en utf8, Notepad++ essaye de convertir et forcément ça fait n'importe quoi. Il faut que tu refasses tes accents "à la main" (habituellement, un find&replace marche bien).
m
0
l
31 Mai 2011 14:29:04

Ok bon je pense que pour les accents le problème est résolu, ça s'enregistre sous la forme é dans la BDD mais les traitements se font correctement donc ça me va ^^
Par contre j'ai une autre petite chose à te demander (désolé de te solliciter encore) mais j'ai un problème avec les apostrophes je n'arrive pas à insérer dans la BDD des infos dont le titre contient un apostrophe.
Je pense que j'ai un problème avec l'échappement que j'utilise :
$title = (isset($_POST['title'])) ? htmlspecialchars($_POST['title']) : '';

j'ai également essayé avec addslashes :
$title = addslashes($_POST['title']);

avec cette méthode le résultat est un peu mieux mais toujours pas top : j'ai une page où on choisit une info à modifier (avec une checkbox) ça retrouve la fiche de l'info pour la modifier (jusque là tout va pas de souci avec les apostrophes) mais la page qui effectue la mise à jour avec UPDATE pose problème puisqu'elle ne récupère pas correctement le titre de l'info : elle ne prend pas tout ce qui est après l'apostrophe dc la modif ne se fait pas dans la BDD. il ne faut peut être pas faire deux échappements sur 2 pages consécutives ?

Peux-tu m'éclairer ?

Merci
m
0
l
a c 145 L Programmation
31 Mai 2011 14:33:10

Il faudrait que tu me montres ta requête d'update.
Et mieux que htmlspecialchars() ou addslashes(), utilise mysql_real_escape_string().
m
0
l
31 Mai 2011 14:44:59

Ah oui j'ai oublié de préciser dans mon fichier qui effectue la requête update, je récupère les infos comme ça :
$title = addslashes($_POST['title']);
$logiciel = addslashes($_POST['logiciel']);
$version = addslashes($_POST['version']);
$link = addslashes($_POST['link']);
$description = addslashes($_POST['description']);

et la commande update est la suivante (je crois que c'est toi qui m'avait aidé à la faire) :
$query = "UPDATE `infolog` SET logiciel='".mysql_real_escape_string($logiciel)."', version='".mysql_real_escape_string($version)."', link='".mysql_real_escape_string($link)."', description='".mysql_real_escape_string($description)."' WHERE title='".mysql_real_escape_string($title)."'";
mysql_query($query) or die (mysql_error());

j'ai essayé d'enlever les mysql_real_escape_string mais pas mieux
m
0
l
a c 145 L Programmation
31 Mai 2011 14:54:23

Enlève tes addslashes et garde les mysql_real_escape_string.
Et idem pour ta requête d'insert, ce qui te permettra d'avoir exactement les mêmes données.

Maintenant, si je puis me permettre, il te manque un index numérique (autoincrément), qui te fera beaucoup moins de soucis que des index "titre".
m
0
l
31 Mai 2011 15:41:51

Alors j'ai fait ce que tu m'as dit :

Pour ajouter mes infos :

1)je récupère sans échapper
  1. $title = $_POST['title'];
  2. $logiciel = $_POST['logiciel'];
  3. $version = $_POST['version'];
  4. $link = $_POST['link'];
  5. $description = $_POST['description'];


2) et je fais l'échappement direct dans la requête

  1. mysql_query("INSERT INTO infolog (title,logiciel,version,link,description) VALUES('".mysql_real_escape_string($title)."','".mysql_real_escape_string($logiciel)."','".mysql_real_escape_string($version)."','".mysql_real_escape_string($link)."','".mysql_real_escape_string($description)."')") or die (mysql_error());

pour ajouter pas de souci, le problème est quand je veux modifier :

1) dans validmodif.php, je récupère "la fiche" de l'info --> pas de souci
  1. $title = mysql_real_escape_string($_POST['title']);
  2.  
  3. $requete = "SELECT title, logiciel, version, link, description FROM infolog WHERE title='$title'";


... et les echo pr réafficher le formulaire avec les données de l'info

2) dans validmodifok.php je fais la msie à jour :

a) je récupère les infos :
  1. $title = $_POST['title'];
  2. $logiciel = $_POST['logiciel'];
  3. $version = $_POST['version'];
  4. $link = $_POST['link'];
  5. $description = $_POST['description'];


b) je fais ma requête update :
  1. $query = "UPDATE `infolog` SET logiciel='".mysql_real_escape_string($logiciel)."', version='".mysql_real_escape_string($version)."', link='".mysql_real_escape_string($link)."', description='".mysql_real_escape_string($description)."' WHERE title='".mysql_real_escape_string($title)."'";
  2. mysql_query($query) or die (mysql_error());


--> et là ça ne marche pas

Deux choses que je trouve bizarre :
- il ne me met pas d'erreur mysql il fait comme s'il avait réussi à faire la requête UPDATE alors que c'est pas le cas, aucune modif dans la BDD

- la page supprinfo.php marche et permet de suppruimer l'info

  1. $title = mysql_real_escape_string($_POST['title']);
  2.  
  3. mysql_query("DELETE FROM infolog WHERE title='$title'");





m
0
l
a c 145 L Programmation
31 Mai 2011 17:05:29

As tu essayé, dans validmodifok.php, de faire:
  1. $query = "UPDATE `infolog` SET logiciel='".mysql_real_escape_string($logiciel)."', version='".mysql_real_escape_string($version)."', link='".mysql_real_escape_string($link)."', description='".mysql_real_escape_string($description)."' WHERE title='".mysql_real_escape_string($title)."'";
  2. echo '<pre>', var_dump($query), '</pre>';
  3. exit;
  4. mysql_query($query) or die (mysql_error());

m
0
l
31 Mai 2011 17:09:18

string(144) "UPDATE `infolog` SET logiciel='mx management server', version='', link='http://lolo.fr', description='exemple d\'info 2' WHERE title='exemple d'"

au lieu de :
...... WHERE title='exemple d'info"
m
0
l
a c 145 L Programmation
31 Mai 2011 17:29:29

C'est très étrange, ton $title n'est pas échappé.
Mais encore une fois, tu ajouterais un index numérique à ta table, tu n'aurais pas ce souci. Parce que tu l'auras aussi quand il y aura des " ou d'autres caractères particuliers dans ton titre.
m
0
l
31 Mai 2011 17:32:19

c'est fait j'ai fait ce que tu m'avais dit j'ai ajouté un champ id qui s'incrémente et qui est ma clé primaire
m
0
l
31 Mai 2011 17:42:27

du coup j'ai essayé de faire passer l'id en champ caché dans le formulaire de le récupérer et du coup je modifie la requête UPDATE : .... WHERE id='".mysql_real_escape_string($id)."'";

et là je comprends pas il me prend pas le $id ?!?
m
0
l
a c 145 L Programmation
31 Mai 2011 21:41:00

Montre ton formulaire, ma boule de cristal est en panne.
m
0
l
1 Juin 2011 09:47:28

lol, bon je te met les 3 fichiers :

1)modifinfo.php : qui permet de sélectionner l'info que l'on souhaite modifier

  1. $link = DBconnect($serveur,$user,$mdp,$bdd);
  2.  
  3. $tmp = 0;
  4. $requete = 'SELECT title, link FROM infolog';
  5. $resultat = mysql_query($requete) or die ('Ex&eacutecution de la requète impossible');
  6. echo "<P align='center'><FONT SIZE=5 COLOR='#377693'><span style='font-variant: small-caps;'><B>Modifier/Supprimer information</B></SPAN></FONT><BR><BR></P>";
  7. echo '<form name="monform" id="monform" action="validmodif.php" method="post">';
  8. while ($liste=mysql_fetch_array($resultat))
  9. {
  10. print '<div style="width:50%;margin:auto;"><p style="text-align:justify;">'.'<input type="radio" value="'.$liste['title'].'" name="title"><A HREF="'.$liste['link'].'">'.$liste['title'].'</A></p></div>'.'</radio>';
  11. $tmp = $tmp + 1;
  12. }
  13. if ($tmp == 0)
  14. {
  15. echo '<BR>'.'<p align="center"><font size=3><i>Aucune info enregistrée</i><font size=3></p>';
  16. }
  17. else
  18. {
  19. echo '<BR>';
  20. echo '<p align="center">';
  21. echo '<input type="submit" name="modifier" id="modifier" value="Modifier" />';
  22. echo '        ';
  23. echo '<input type="button" name="supprimer" id="supprimer" value="Supprimer" onclick="document.getElementById(\'monform\').action=\'supprinfo.php\';document.getElementById(\'monform\').submit();return false;" />';
  24. echo '</p>';
  25. echo '<form>';
  26. }
  27. ?>


2)validmodif.php : qui affiche la "fiche" de l'info et qui nous permet donc de faire des modifications

  1. $link2 = DBconnect($serveur,$user,$mdp,$bdd);
  2.  
  3. $title = mysql_real_escape_string($_POST['title']);
  4.  
  5. $requete = "SELECT id, title, logiciel, version, link, description FROM infolog WHERE title='$title'";
  6. $resultat = mysql_query($requete);
  7.  
  8. if(empty($title))
  9. {
  10. echo "<P align='center'><BR><BR><B>Veuillez choisir une info à modifier !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;';><FONT SIZE=2'><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Choisir à nouveau une info à modifier</B></SPAN></FONT></A></P>";
  11. }
  12. else
  13. {
  14. while ($row= mysql_fetch_array($resultat))
  15. {
  16. $id = $row[0];
  17. $title = $row[1];
  18. $logiciel = $row[2];
  19. $version = $row[3];
  20. $link = $row[4];
  21. $description = $row[5];
  22. }
  23.  
  24. echo '<table align="center" width="800" height="390" border="0" cellpadding="0" cellspacing="0">';
  25. echo '<form action="validmodifok.php" method="post">';
  26. echo '<tr>';
  27. echo '<!--<td width="6%"> </td>-->';
  28. echo '<td colspan="5"><P ALIGN="center"><FONT SIZE=5 COLOR="#377693"><span style="font-variant: small-caps;"><B>Modifier une Information</B></SPAN></FONT><BR><BR><BR></P></td>';
  29. echo '</tr>';
  30.  
  31. echo '<tr>';
  32. echo '<td><div><font size=4 COLOR="#377693"><span style="font-variant: small-caps;"><B>Titre</B></SPAN></font></div></td>';
  33. echo '</tr>';
  34. echo '<tr>';
  35. echo "<td colspan='35'><b><FONT SIZE=4><span style='font-variant: small-caps;'><input type='hidden' name='title' value='$title'>$title</hidden></span></FONT></b></td>";
  36. echo '</tr>';
  37. echo '<tr>';
  38. echo '<td><div><font size=4 COLOR="#377693"><span style="font-variant: small-caps;"><B>Logiciel / Matériel</B></SPAN></font></div></td></tr>';
  39. echo '<tr>';
  40. echo '<td colspan="5"><input type="text" name="logiciel" size="50" maxlength="50" value="', $logiciel, '"></td>';
  41. echo '</tr>';
  42.  
  43. echo '<tr>';
  44. echo '<td><div><font size=4 COLOR="#377693"><span style="font-variant: small-caps;"><B>Version</B></SPAN></font></div></td>';
  45. echo '</tr>';
  46. echo '<tr>';
  47. echo '<td colspan="5"><input type="text" name="version" size="50" maxlength="50" value="', $version, '"></td>';
  48. echo '</tr>';
  49.  
  50. echo '<tr>';
  51. echo '<td><div><font size=4 COLOR="#377693"><span style="font-variant: small-caps;"><B>Lien</B></SPAN></font></div></td></tr>';
  52. echo '<tr>';
  53. echo '<td colspan="5"><input type="text" name="link" size="50" maxlength="50" value="', $link, '"></td>';
  54. echo '</tr>';
  55.  
  56. echo '<tr>';
  57. echo '<td><BR><div><font size=4 COLOR="#377693"><B><span style="font-variant: small-caps;">Description</SPAN></B></font></div></td>';
  58. echo '</tr>';
  59. echo '<tr>';
  60. echo "<td colspan='5'><textarea rows='5' cols='76' name='description'>$description</TEXTAREA></td>";
  61. echo '</tr>';
  62.  
  63. //On passe en hidden l'id
  64. echo '<input type="hidden" name="id" value="', $id, '">';
  65.  
  66. echo '<tr>';
  67. echo '<td height="24"></td>';
  68. echo '<td> </td>';
  69. echo '<td> </td>';
  70. echo '</tr>';
  71. echo '<tr>';
  72. echo '<td height="14"></td>';
  73. echo '<td width="28%"><left><input type="submit" name="Submit" value="Modifier l\'info"></left></td>';
  74. echo '</tr>';
  75. }
  76.  
  77.  
  78. mysql_close();
  79. ?>


3) validmodifok.php : qui effectue la mise à jour dans la BDD

  1. $link2 = DBconnect($serveur,$user,$mdp,$bdd);
  2.  
  3. $id = $_POST['id'];
  4. $title = $_POST['title'];
  5. $logiciel = $_POST['logiciel'];
  6. $version = $_POST['version'];
  7. $link = $_POST['link'];
  8. $description = $_POST['description'];
  9.  
  10. if(empty($title))
  11. $erreur = "<P align='center'><BR><B>Veuillez saisir le titre de l'info !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";
  12.  
  13. if(empty($logiciel))
  14. $erreur = "<P align='center'><BR><B>Veuillez saisir le nom du logiciel / matériel !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";
  15.  
  16. if(empty($link))
  17. $erreur = "<P align='center'><BR><B>Veuillez saisir un lien pour l'info !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";
  18.  
  19. if(empty($description))
  20. $erreur = "<P align='center'><BR><B>Veuillez saisir la description de l'info !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";
  21.  
  22. if (isset($erreur))
  23. {
  24. echo $erreur;
  25. }
  26. else
  27. if (preg_match("#(((https?|ftp)://(w{3}\.)?)(?<!www)(\w+-?)*\.([a-z]{2,4}))#", $link))
  28. {
  29. $query = "UPDATE `infolog` SET logiciel='".mysql_real_escape_string($logiciel)."', version='".mysql_real_escape_string($version)."', link='".mysql_real_escape_string($link)."', description='".mysql_real_escape_string($description)."' WHERE id='".mysql_real_escape_string($id)."'";
  30. //echo '<pre>', var_dump($query), '</pre>';
  31. //exit;
  32. mysql_query($query) or die (mysql_error());
  33. echo "<p align='center'><font size=4><BR><B>L'info suivante a bien ét&eacute modifiée :</B></FONT></P>";
  34. echo "<P align='center'><I><B>"."<A HREF='$link'><FONT SIZE=4>".$title."</FONT></A></B></I></P><BR><BR>";
  35. echo "<A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=4><P align='center'><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Modifier/Supprimer une autre info</B></SPAN></FONT></A></P>";
  36. }
  37. else
  38. {
  39. echo "<P align='center'><BR><B>Le lien de l'info que vous avez saisi n'est pas correct !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau l'info</B></SPAN></FONT></A></P>";
  40. }
  41. mysql_close();
  42.  
  43. ?>



je m'excuse d'avance pour le code qui est un peu "bizarre" et je te remercie.
m
0
l
a c 145 L Programmation
1 Juin 2011 09:55:51

validmodif.php: echo '<input type="hidden" name="id value="', $id, '">';
Il te manque un " après name="id.

Ensuite, dans modifinfo.php, vu que tu as maintenant un id numérique, sert-en dans les radios, plutôt que d'utiliser le titre. Et dans tes requêtes aussi.
Il faut tout rendre homogène, sinon tu vas t'y perdre.
m
0
l
1 Juin 2011 10:05:29

Alors en fait maintenant la modif se fait bien donc c'est cool par contre dans validmodifok.php il m'affiche :

L'info suivante a bien été modifié :
exemple d' (au lieu de "exemple d'info")
m
0
l
1 Juin 2011 10:09:14

oui j'ai vu ça donc j'avais corrigé le problème par contre quand tu me dis d'utiliser l'id numérique c à d ? refaire à chaque fois une requête qui me permet d'obtenir le title WHERE id = ... ?
m
0
l
a c 145 L Programmation
1 Juin 2011 11:00:50

Je me suis permis de reprendre tes codes, je pense qu'au bout d'un moment, il vaut mieux te donner quelque chose de juste et que tu le comprennes.

J'ai fait quelques modifications sur la logique (entre autre de certains tests), je n'ai pas testé mais ça doit être à peu près fonctionnel:

modifinfo.php

  1. <?php
  2. $link = DBconnect($serveur,$user,$mdp,$bdd);
  3. $tmp = 0;
  4. $requete = 'SELECT id, title, link FROM infolog';
  5. $resultat = mysql_query($requete) or die (mysql_error());
  6. echo "<P align='center'><FONT SIZE=5 COLOR='#377693'><span style='font-variant: small-caps;'><B>Modifier/Supprimer information</B></SPAN></FONT><BR><BR></P>";
  7. echo '<form name="monform" id="monform" action="validmodif.php" method="post">';
  8. if (@mysql_num_rows($resultat) == 0) {
  9. echo '<BR>'.'<p align="center"><font size=3><i>Aucune info enregistrée</i><font size=3></p>';
  10. } else {
  11. while ($liste=mysql_fetch_array($resultat)) {
  12. echo '<div style="width:50%;margin:auto;"><p style="text-align:justify;"><input type="radio" value="', $liste['id'], '" name="id"><a href="', $liste['link'], '">', $liste['title'], '</a></p></div>';
  13. }
  14. echo '<br />';
  15. echo '<p align="center">';
  16. echo '<input type="submit" name="modifier" id="modifier" value="Modifier" />';
  17. echo '        ';
  18. echo '<input type="button" name="supprimer" id="supprimer" value="Supprimer" onclick="document.getElementById(\'monform\').action=\'supprinfo.php\';document.getElementById(\'monform\').submit();return false;" />';
  19. echo '</p>';
  20. echo '<form>';
  21. }
  22. ?>

validmodif.php
  1. <?php
  2. $link = DBconnect($serveur,$user,$mdp,$bdd);
  3. $id = intval($_POST['id']);
  4. if ($id == 0) {
  5. echo '<p align="center"><br /><br /><b>Veuillez choisir une info à modifier !</b><br /><br /><br /><a href="modifinfo.php" style="text-decoration:none; font-variant: small-caps;"><font size="2"><span style="border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;"><b>Choisir à nouveau une info à modifier</b></span></font></a></p>';
  6. } else {
  7. $requete = "SELECT id, title, logiciel, version, link, description FROM infolog WHERE id=".$id;
  8. $resultat = mysql_query($requete);
  9. echo '<form action="validmodifok.php" method="post">';
  10. while ($row= mysql_fetch_array($resultat)) {
  11. echo '<input type="hidden" name="id" value="', $row['id'], '" />';
  12. echo '<table align="center" width="800" height="390" border="0" cellpadding="0" cellspacing="0">';
  13. echo '<tr><th colspan="2"><font size="5" color="#377693"><span style="font-variant: small-caps;">Modifier une Information</span></font></th></tr>';
  14. echo '<tr><th>Titre :</th><td>', $row['title'], '</td></tr>';
  15. echo '<tr><th>Logiciel / Matériel :</th><td><input type="text" name="logiciel" size="50" maxlength="50" value="', $row['logiciel'], '"></td></tr>';
  16. echo '<tr><th>Version :</th><td><input type="text" name="version" size="50" maxlength="50" value="', $row['version'], '"></td></tr>';
  17. echo '<tr><th>Lien :</th><td><input type="text" name="link" size="50" maxlength="50" value="', $row['link'], '"></td></tr>';
  18. echo '<tr><th colspan="2">Description</th></tr>';
  19. echo '<tr><td colspan="2" align="center"><textarea rows="5" cols="76" name="description">', $row['description'], '</textarea></td></tr>';
  20. echo '<tr><td colspan="2" align="left"><input type="submit" name="Submit" value="Modifier l\'info"></td></tr>';
  21. echo '</table>';
  22. }
  23. echo '</form>';
  24. }
  25. mysql_close();
  26. ?>

validmodifok.php
  1. <?php
  2. $link = DBconnect($serveur,$user,$mdp,$bdd);
  3. $id = intval($_POST['id']);
  4. $title = $_POST['title'];
  5. $logiciel = $_POST['logiciel'];
  6. $version = $_POST['version'];
  7. $link = $_POST['link'];
  8. $description = $_POST['description'];
  9. if ($id == 0)
  10. $erreur = "<P align='center'><BR><B>Aucun programme selectionné !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";
  11. /*
  12. if(empty($title))
  13. $erreur = "<P align='center'><BR><B>Veuillez saisir le titre de l'info !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";
  14. */
  15. if(empty($logiciel))
  16. $erreur = "<P align='center'><BR><B>Veuillez saisir le nom du logiciel / matériel !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";
  17. if(empty($link) || !preg_match("#(((https?|ftp)://(w{3}\.)?)(?<!www)(\w+-?)*\.([a-z]{2,4}))#", $link))
  18. $erreur = "<P align='center'><BR><B>Veuillez saisir un lien pour l'info !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";
  19. if(empty($description))
  20. $erreur = "<P align='center'><BR><B>Veuillez saisir la description de l'info !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";
  21. if (isset($erreur)) {
  22. echo $erreur;
  23. } else {
  24. $query = "UPDATE `infolog` SET logiciel='".mysql_real_escape_string($logiciel)."', version='".mysql_real_escape_string($version)."', link='".mysql_real_escape_string($link)."', description='".mysql_real_escape_string($description)."' WHERE id=".$id;
  25. //echo '<pre>', var_dump($query), '</pre>';
  26. //exit;
  27. mysql_query($query) or die (mysql_error());
  28. echo "<p align='center'><font size=4><BR><B>L'info suivante a bien ét&eacute modifiée :</B></FONT></P>";
  29. echo "<P align='center'><I><B>"."<A HREF='$link'><FONT SIZE=4>".$title."</FONT></A></B></I></P><BR><BR>";
  30. echo "<A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=4><P align='center'><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Modifier/Supprimer une autre info</B></SPAN></FONT></A></P>";
  31. }
  32. mysql_close();
  33. ?>
m
0
l
1 Juin 2011 15:04:24

Alors j'ai fait les changements mais ça ne marche pas, déjà il met que je n'ai pas saisi le titre et puis la modification ne se fait pas.
m
0
l
a c 145 L Programmation
1 Juin 2011 15:24:45

Ah ben oui, j'ai viré l'input title qui ne sert plus à rien (à moins que tu ne veuilles le rendre modifiable), donc la vérification sur le titre est à enlever.

(Post précédent modifié)
m
0
l
3 Juin 2011 11:12:20

ça me met :

Aucun programme sélectionné !
m
0
l
a c 145 L Programmation
3 Juin 2011 14:37:15

En effet, j'ai inversé les lignes 10 et 11 de validmodif.php (source corrigée).
m
0
l
3 Juin 2011 16:00:48

j'ai fait le changement mais j'ai la même erreur
m
0
l
3 Juin 2011 16:05:29

ah ok c'est bon inptu --> input
m
0
l
a c 145 L Programmation
3 Juin 2011 18:22:26

Oups, désolé, j'ai tapé trop vite :) 
m
0
l
6 Juin 2011 09:38:33

C'est pas grave et merci pour ton aide par contre j'avais pas fait attention mais je me rends compte que maintenant j'ai un autre problème qui apparaît :
le fichier modifinfo.php liste les infos (avec des boutons radio) et on a le chox entre modifier et supprimer et maintenant que j'ai fait tes modifs lorsque je choisis une info et que je clique sur supprimer il me met que je n'ai pas choisi d'info

Voici le code du fichier qui doit effectuer la suppression :
  1. $link = DBconnect($serveur,$user,$mdp,$bdd);
  2.  
  3. $title = mysql_real_escape_string($_POST['title']);
  4.  
  5. mysql_query("DELETE FROM infolog WHERE title='$title'");
  6.  
  7. if(empty($title))
  8. {
  9. echo "<P align='center'><BR><BR><BR><B>Veuillez choisir une info à supprimer !</B><BR><BR><BR><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;';><FONT SIZE=2'><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Choisir à nouveau une info à supprimer</B></SPAN></FONT></A></P>";
  10. }
  11. else
  12. {
  13. echo '<br><p style="text-align:center;"><span style="font-weight: bold; font-size: 1.2em;">Vous avez supprimé les info(s) suivante(s) : <BR><BR></span><span style="text-decoration: italic; font-weight: bold;">'.$title.'</span></p>';
  14. echo "<BR><BR>";
  15. echo "<p align='center'><A HREF='modifinfo.php' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=4><span style='border:solid 2px; border-color:#E7634D; margin-left:50; padding:10px; border-radius:1em;'><B>Modifier/Supprimer une autre info</B></SPAN></FONT></A></P>";}
  16. ?>
m
0
l
6 Juin 2011 09:42:42

je suis très bête

j'avais oublié qu'on faisait avec les id maintenant, faut que je m'y remette ^^
m
0
l
6 Juin 2011 11:43:24

J'ai une autre question qui n'a pas forcément rapport alors je sais pas trop si je dois créer un autre sujet (comme je suis à peu près sur que c'est toi qui va répondre) :
en fait, mon application permet à l'utilisateur d'ajouter des infos sur des logicielsou matériel par l'intermédiaire de formulaire. L'utilisateur écrit donc la description de son info et le logiciel (ou matériel) concerné (dans un input type='text') et moi je souhaiterais aller chercher les noms de logiciel qui sont dans une base de données et donc afficher avec une liste déroulante. La même chose pour les matériels mais il se trouve dans une autre table de ma BDD.

Comment je peux faire ? je pensais utiliser "optgroupe" mais je vois pas comment utiliser ça :

<td><div><font size=4 COLOR='#377693'><span style="font-variant: small-caps;"><B><label for="logiciel">Logiciel / Matériel *</label></B></SPAN></font></div></td></tr>
<tr>
<?php
$resu=mysql_query("SELECT nom FROM ouapi_software")
while ($liste=mysql_fetch_array ($resu))
{
print '<div style="width:50%;margin:auto;"><p style="text-align:justify;">'.'<input type="select" value="'.$liste['nom'].'" name="id[]">">'.$liste['title'].'</A></p></div>'.'</select>';
}
?>

Merci d'avance
m
0
l
a c 145 L Programmation
6 Juin 2011 12:21:05

La, c'est les bases du HTML qu'il faut revoir:
  1. <td><div><font size=4 COLOR='#377693'><span style="font-variant: small-caps;"><B><label for="logiciel">Logiciel / Matériel *</label></B></SPAN></font></div></td></tr>
  2. <tr>
  3. <div style="width:50%;margin:auto;"><p style="text-align:justify;"><input type="select" name="logiciel">
  4. <?php
  5. $resu=mysql_query("SELECT id, nom FROM ouapi_software" )
  6. while ($liste=mysql_fetch_array ($resu)) {
  7. echo '<option value="', $liste['id'], '">', $liste['nom'], '</option>';
  8. }
  9. ?>
  10. </select>
  11. </p></div>
m
0
l
6 Juin 2011 12:34:05

euh ça marche pas trop, tous les logiciels s'affichent mais pas trop sous forme de menu déroulant et je peux pas en sélectionner un
m
0
l
6 Juin 2011 12:38:12

c'est bon j'ai changé <input type="select"> en <select>
m
0
l
a c 145 L Programmation
6 Juin 2011 14:16:15

Oups oui, désolé :) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS