Remplacement de caracteres

cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011 - 15 févr. 2007 à 21:39
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011 - 16 févr. 2007 à 20:13
Bonjour, je cherche à enregistrer dans ma DB la valeur de l'input ci dessous dans deux champs de ma table :

Le premiere enregistrement se fait normalement dans le champ "titre"
Tandi que le deuxieme devrait se faire dans le champ "url" apres avoir été passé à la moulinette grace à la fonction suivante :
<?php
function no_accent($str_accent) {
   $pattern = Array("/é/", "/è/", "/ê/", "/ç/", "/à/", "/â/", "/î/", "/ï/", "/ù/", "/ô/", "/&nbsp;/" , "/ /", "/./");
   $rep_pat = Array("e", "e", "e", "c", "a", "a", "i", "i", "u", "o", "-", "-", "");
   $str_noacc = preg_replace($pattern, $rep_pat, $str_accent);
   return $str_noacc;
}
?>
 
L'enregistrement de la valeur dans le champ 'titre' ne me posse pas de probleme mais c'est le passage a la moulinette et l'envoie de la valeur modifier a la basse qui me posse un gros pb.
Pour info j'enregistre la valeur grace à :
GetSQLValueString($_POST['titre'], "text"),

Merci de votre aide
l'objectif et de générer des urls qui posséde le même nom que l'article (comme phpcs)

10 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
15 févr. 2007 à 21:59
Hello,

déjà, pourquoi un preg_replace () ? str_replace suffirait amplement.
Ensuite, cette fonction : GetSQLValueString (), elle fait quoi??
Et enfin...quel est le problème. TU nous dis que tu as un problème...ok...mais pas lequel ?
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
15 févr. 2007 à 22:17
Bonsoir, la fonction GetSQLValueString($_POST['titre'], "text"), récupere la valeur de l'input du même nom pour l'enregistrement dans le champ du même nom.

Ensuite mon probleme est qu'il faudrait que la valeur saisie dans cette input soit aussi converti avec la fonction "no_accent" puis envoyé dans le champs "url" de ma table.

je ne sais pas comment enregistre une variable qui ne se trouva pas dans un input ou textarea ou autre objet de formulaire et je n'arrive pas a appliquer la fonction no_accent" a la valeur de l'input.
Du coups comment récupérer le résultat de la moulinette dans la fonction (SQLValueString($_POST['url'], "text") ?

merci de votre aide
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
15 févr. 2007 à 22:33
Si tu as un $_POST['titre'], c'est que ton formulaire a été saisi.
Tu veux enregistrer ça dans un champ, et le résultat de l'application de ta moulinette sur ce même post, dans un autre champ, c'est ça ?
Si c'est ça, je ne pige pas ton problème, du tout.
Ou j'ai peur de le piger... : tu ne passes QUE par
GetSQLValueString () pour enregistrer tes données en base ?
Bref :

$_POST['url'] =
no_accent ($_POST['titre']);


GetSQLValueString(
$_POST['url']
, "text");
?
Même si j'aimerais bien voir le code de
GetSQLValueString () parce que ça m'intrigue comme fonctionnement...
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
15 févr. 2007 à 22:43
Voici le code d'insertion :
function GetSQLValueString($theValue, $theType, $theDefinedValue "", $theNotDefinedValue "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $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"] == "form_article")) {
  $insertSQL = sprintf("INSERT INTO article (id, day, titre, aff_article, article, menu, s_menu, url) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['id'], "int"),
                       GetSQLValueString($_POST['day'], "text"),
                       GetSQLValueString($_POST['titre'], "text"),
                       GetSQLValueString(isset($_POST['aff_article']) ? "true" : "", "defined","1","0"),
                       GetSQLValueString($_POST['article'], "text"),
                       GetSQLValueString($_POST['menu'], "text"),
                       GetSQLValueString($_POST['sous_menu'], "text"),
                       GetSQLValueString($_POST['url']=no_accent($_POST['titre'])));



  mysql_select_db($database_connect, $connect);
  $Result1 = mysql_query($insertSQL, $connect) or die(mysql_error());



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

Cependant j'ai une erreur que je n'avais jamais vue :

Warning: Missing argument 2 for getsqlvaluestring() in /aaaa/bbbb/cccc/dddd/eeee/mapage.php on line 46
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

La ligne 46 est celle de la déclaration de la fonction
0

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

Posez votre question
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
15 févr. 2007 à 23:08
Salut,

Ta methode pour remplacer les accents est totalement inutilisable, convertie ta chaine avec htmlentities() , fait une array qui remplace les À en A etc.. (tu en as pour 30minutes), un str_replace(), html_entity_decode().
http://www.commentcamarche.net/html/htmlcarac.php3

GetSQLValueString($_POST['url']=no_accent($_POST['titre'])

ça renvoie un seul parametre: TRUE, le deuxieme est omis, remplace = par ,
Mais ça tu as du le remarquer.
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
15 févr. 2007 à 23:30
Trés franchement je n'y comprand plus rien, je ne sais quoi faire .
Ca ne marche tj pas et j'ai testé plusieur varriante.

J'ai tj cette erreur :
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

Je ne sais même pas a quoi correspond cette ligne.

et voici la ligne modifier :
GetSQLValueString($_POST['url'], no_accent($_POST['titre'], "text")));

Un grd merci pour votre aide
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
16 févr. 2007 à 08:16
Non non...

GetSQLValueString (no_accent($_POST['titre']), "text");
Tu as besoin au moins de la chaîne à traiter, et du masque.
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
16 févr. 2007 à 09:35
Mais si j'utilise seulement
GetSQLValueString (no_accent($_POST['titre']), "text");
cela va insére dans le champs "titre" de la base le titre formaté avec la fonction no_accent.
Alors que l'objectif et que dans le champ "titre" il soit inséré normalement (sans traitement) et que dans le champ "url" il soit inséré apres le traitement de la fonction no_accent.
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
16 févr. 2007 à 17:19
j'ai mis un point de débug et voici le résultat de la requete 
<dir>

query:INSERT INTO article (id, day, titre, aff_article, article, menu, s_menu, url) VALUES (0, NULL, 'cette été je part', 1, 'Ecrivez votre article.', '1', '1', )


</dir>

donc on voie bien qu'il n'y a pas de valeur dans la variable url.
je ne sais pas si c'est ma fonction (no_accent) de réécriture d'une chaine ou si c'est la facon dont est codé GetSQLValueString($_POST['url'], no_accent($_POST['titre'], "text")) mais rien ne passe dedant.

Help Me Please
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
16 févr. 2007 à 20:13
En faite c'est bien ma fonction qui est a chier.
j'en fait une autre mais j'aimerais savoir s'il existe de fonction tel que stripslashes pour supprimer les simple ou double quotes


Merci
0
Rejoignez-nous