Partie admin gérer base de donnée

Résolu/Fermé
val - 5 mars 2011 à 12:02
eternity63 Messages postés 34 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 - 10 mars 2011 à 17:49
Bonjour,
J'ai créé un site avec une partie "admin" pour modifier les texte affichés via ma base de donnée.

Seulement le problème est que
le "titre" n'est pas modifié
Le "texte "est codé ex :
• Le premier entretien est gratuit ; câ€(TM)est lâ€(TM)entretien de la naissance de lâ€(TM)idée, la nature de la demande.
• Jâ€(TM)exerce ma profession dans le cadre strict de mes compétences, si jâ€(TM)estime quâ€(TM)une prestation qui mâ€(TM)est soumise requiert le concours dâ€(TM)un professionnel, jâ€(TM)orienterai mon client vers celui-ci (avocat, notaire, conseil juridique, etc…).
• Devis gratuit.
• Le travail est effectué après signature du devis accepté et signé.
• Tarifs transparents (consultables).


Voici mon code php avec dreamweaver :
<?php require_once('../Connections/Ecrivain_public.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $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;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO texte_acc (titre, texte) VALUES (%s, %s)",
                       GetSQLValueString($_POST['titre'], "text"),
                       GetSQLValueString($_POST['texte'], "text"));

  mysql_select_db($database_Ecrivain_public, $Ecrivain_public);
  $Result1 = mysql_query($insertSQL, $Ecrivain_public) or die(mysql_error());

  $insertGoTo = "mentions.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_Ecrivain_public, $Ecrivain_public);
mysql_query("SET NAMES UTF8");
$query_mentions = "SELECT * FROM texte_acc";
$mentions = mysql_query($query_mentions, $Ecrivain_public) or die(mysql_error());
$row_mentions = mysql_fetch_assoc($mentions);
$totalRows_mentions = mysql_num_rows($mentions);
?>


et celui qui s'affiche dans ma page :
<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
            <table align="center">
              <tr valign="baseline">
                <td nowrap align="right">Titre:</td>
                <td><input type="text" name="titre" value="<?php echo $row_mentions['titre']; ?>" size="32"></td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right" valign="top">Texte:</td>
                <td><textarea name="texte" cols="50" rows="5"><?php echo $row_mentions['texte']; ?></textarea>
                </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">&nbsp;</td>
                <td><input type="submit" value="Insérer l'enregistrement"></td>
              </tr>
            </table>
            <input type="hidden" name="MM_insert" value="form1">
          </form>


Merci d'avance pour votre aide

10 réponses

personne n'a de réponse ????
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 mars 2011 à 19:48
Bonjour
Ce n'est pas quand vous allez exposer tout votre code qu'on saura vous aider.
Quel est le souci avec le titre ?
Et quelle partie du code est concernée ?
0
Bonjour et merci pour votre réponse
En fait lorsque je vais dans mon admin pour modifier le texte d'accueil (par exemple) texte qui s'affiche depuis ma base de donnée. lorsque je clique sur enregistrer les modifs mon texte ressemble plus a rien exemple ci-dessus.

A la base il ressemble a ça AVANT:
Transparence :

* Le premier entretien est gratuit ; c'est l'entretien de la naissance de l'idée, la nature de la demande.
* J'exerce ma profession dans le cadre strict de mes compétences, si j'estime qu'une prestation qui m'est soumise requiert le concours d'un professionnel, j'orienterai mon client vers celui-ci (avocat, notaire, conseil juridique, etc...).
* Devis gratuit.
* Le travail est effectué après signature du devis accepté et signé.
* Tarifs transparents (consultables).


Si je le modifie en rajoutant ex "essai" APRES:

essai modification rajout de texte
• Le premier entretien est gratuit ; câ€(TM)est lâ€(TM)entretien de la naissance de lâ€(TM)idée, la nature de la demande.
• Jâ€(TM)exerce ma profession dans le cadre strict de mes compétences, si jâ€(TM)estime quâ€(TM)une prestation qui mâ€(TM)est soumise requiert le concours dâ€(TM)un professionnel, jâ€(TM)orienterai mon client vers celui-ci (avocat, notaire, conseil juridique, etc…).
• Devis gratuit.
• Le travail est effectué après signature du devis accepté et signé.
• Tarifs transparents (consultables).

Et là je ne vois pas comment éviter ces changement de caractères
Merci d'avance pour votre aide
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 mars 2011 à 20:01
Ce code est-il inclu (en dur) dans du PHP ou bien provient t-il d'une requête de base de données ?
Je pense qu'il faut utiliser une fonction pour applique le bon encodage...
0
requête de la base de donnée pour tous les textes affichés
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 mars 2011 à 20:18
Il faut faire un truc du genre
SELECT CONVERT(mon_champ) using latin1 as monChamp
FROM TABLE

Quand j'ai à faire ça le problème est résolu.
Souvent c'est une fonction utilisée sur la chaine de caractère qui ne sait pas traiter l'encodage qui renvoie cette anomalie.
Si ça persiste.. Faites voir la requete + indiquer la version de mySQL..
0
version MySQL5.0
pour ma page et requête c'est noté dans l'intitulé de mon message
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 mars 2011 à 20:33
Ok. Donc vous avez la réponse. Utiliser cette fonction CONVERT (indiqué plus hat) au niveau de la requete SQL qui renvoie l'anomalie
0
le problème est que je ne sais pas comment faire
je viens d'essayer mais pas bon
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 mars 2011 à 20:50
çà marche çà ?
mysql_query("SET NAMES UTF8");
$query_mentions = "SELECT * FROM texte_acc";

Il faut faire un truc comme j'ai indiqué...
SELECT CONVERT(mon_champ) using latin1 as monChamp
FROM TABLE

Aller vous avez la réponse bon courage
0
oui cette fonction fonctionne bien mes textes venant de la base de donnée s'affichent correctement mais plus si je passe par l'admin.
Je pense que ça doit venir de ce code qui enregistre les données dans ma base :
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO texte_acc (titre, texte) VALUES (%s, %s)",
                       GetSQLValueString($_POST['titre'], "text"),
                       GetSQLValueString($_POST['texte'], "text"));

  mysql_select_db($database_Ecrivain_public, $Ecrivain_public);
  $Result1 = mysql_query($insertSQL, $Ecrivain_public) or die(mysql_error());

  $insertGoTo = "mentions.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

j'ai tenté
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO texte_acc (titre, texte) VALUES (%s, %s)",
                       GetSQLValueString($_POST['titre'], "text", ENT_COMPAT, 'utf-8'), <--------
                       GetSQLValueString($_POST['texte'], "text", ENT_COMPAT, 'utf-8')); <------

  mysql_select_db($database_Ecrivain_public, $Ecrivain_public);
  $Result1 = mysql_query($insertSQL, $Ecrivain_public) or die(mysql_error());

  $insertGoTo = "mentions.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
0
eternity63 Messages postés 34 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 1
7 mars 2011 à 23:11
Bonsoir à tous

Ca avance, encore une petite erreur mais :
voici le texte modifié via l'admin (a comparer avec le premier en intitulé de mon post) :
? Le premier entretien est gratuit ; c?est l?entretien de la naissance de l?idée, la nature de la demande.
? J?exerce ma profession dans le cadre strict de mes compétences, si j?estime qu?une prestation qui m?est soumise requiert le concours d?un professionnel, j?orienterai mon client vers celui-ci (avocat, notaire, conseil juridique, etc?).
? Devis gratuit.
? Le travail est effectué après signature du devis accepté et signé.
? Tarifs transparents (consultables).


Modification apporté à mon code :
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE texte_acc SET titre=%s, texte=%s WHERE id=%s",
                       GetSQLValueString(utf8_decode($_POST['titre']), "text"),
                       GetSQLValueString(utf8_decode($_POST['texte']), "text"),
                       GetSQLValueString($_POST['id'], "int"));

  mysql_select_db($database_Ecrivain_public, $Ecrivain_public);
  $Result1 = mysql_query($updateSQL, $Ecrivain_public) or die(mysql_error());

  $updateGoTo = "/mentions.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}

mysql_select_db($database_Ecrivain_public, $Ecrivain_public);
mysql_query("SET NAMES UTF8");
$query_texte_modif = "SELECT * FROM texte_acc";
$texte_modif = mysql_query($query_texte_modif, $Ecrivain_public) or die(mysql_error());
$row_texte_modif = mysql_fetch_assoc($texte_modif);
$totalRows_texte_modif = mysql_num_rows($texte_modif);


en fait ça :
 GetSQLValueString(utf8_decode($_POST['titre']), "text"),
                       GetSQLValueString(utf8_decode($_POST['texte']), "text"),


Mais j'ai des ? à la place des * et des '
est ce que ça pourrait venir de la fonction ?
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);


Merci d'avance pour votre aide
0
eternity63 Messages postés 34 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 1
7 mars 2011 à 23:29
ps: a savoir que l'affichage si je fais des modif en direct dans ma base donnée tout est nickel.
Mais pas en passant par l'admin... si ça peut aider
0
eternity63 Messages postés 34 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 1
9 mars 2011 à 12:45
Bonjour à tous
je viens encore de passer encore quelques heures (de perdues) pour ma requête.
J'ai téléphoné à mon hébergeur 1&1 qui me dis que j'ai un encodage répété (2 fois) et que pour cela il faut que je fasse un débogage via methode "post"
Je suis allez là :
https://portail.polytechnique.edu/informatique/fr

Mais je n'ai pas réussi car rien compris (trop fatiguée je pense et trop dessus.. je bloque !)
Si quelqu'un pouvais m'aider à comprendre ?????!!!
Merci d'avance

ps: je suis novice en développement alors SVP pas de "essaies la méthode bidule du style machin" parce que cela résulterait encore à passer des heures sur Internet à trouver ce genre de "message codé à demi-mots" pour comprendre ce qu'on tente de me dire ! :$ merci
0
eternity63 Messages postés 34 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 1
10 mars 2011 à 17:49
Comme vous dites moderno31 ....J'avais la réponse... :p

TROUVE !!!!
C'était une broutille comme je l'avais soupçonnée.

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE texte_acc SET titre=%s, texte=%s WHERE id=%s",
					   GetSQLValueString($_POST['titre'], "text"),
                       GetSQLValueString($_POST['texte'], "text"),
                       GetSQLValueString($_POST['id'], "int"));
  
  
  mysql_select_db($database_Ecrivain_public, $Ecrivain_public);
  mysql_query("SET NAMES UTF8");
  $Result1 = mysql_query($updateSQL, $Ecrivain_public) or die(mysql_error());

	
  $updateGoTo = "/mentions.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}


mysql_query("SET NAMES UTF8"); je ne l'avais pas mis au bon endroit lors de mes essais.... Fatiguée la fille.

bonne journée à tous
0