addslashes

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

14 juin 2005, 15:47

Ben là je suis un peu perdu : c'est LA technique ! y'en a pas d'autre

essaye en forcant la valeur :
/*$service =$_POST['nom_service'];
if(get_magic_quotes_gpc())
    $service=stripslashes($service);
}*/
$service = "CONCESSION de DISTRIBUTION PUBLIQUE d\'argent";
var_dump($service);
$service=mysql_real_escape_string($service);
var_dump($service);
$s = "SELECT DISTINCT  id_service FROM phpgw_workf_services WHERE nom_service = '$service'";
var_dump($s);
$results = mysql_query($s);
$ser=mysql_fetch_array($results, MYSQL_ASSOC);
$idservice=$ser['id_service'];

Eléphant du PHP | 155 Messages

14 juin 2005, 16:03

Voici ce que j'ai en forcant:

string(45) "CONCESSION de DISTRIBUTION PUBLIQUE d\'argent" string(47) "CONCESSION de DISTRIBUTION PUBLIQUE d\\\'argent" string(123) "SELECT DISTINCT id_service FROM phpgw_workf_services WHERE nom_service = 'CONCESSION de DISTRIBUTION PUBLIQUE d\\\'argent'"

Dans ma base de donnée, il n'y a toujours rien.
cette valeur avec \\\ n'est pas la même que celle de ma base sans \ ?

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

15 juin 2005, 12:05

euh, je suis C O N
essaye en forcant avec ca :
$service = "CONCESSION de DISTRIBUTION PUBLIQUE d\'argent";
Pas besoin de proteger le ' puisque la chaine est délimitée par des "

Eléphant du PHP | 155 Messages

15 juin 2005, 14:07

ben, c'est la même chose non?

J'enlève tout le reste?

je vais tester.

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

15 juin 2005, 14:13

euh, je suis (C O N)² je voulais virer le \
(j'y ai pensé très fort mais le clavier a pas dut m'entendre ... dsl :oops:)
$service = "CONCESSION de DISTRIBUTION PUBLIQUE d'argent";
mais garde le reste, c'est le reste qui est important

Eléphant du PHP | 155 Messages

15 juin 2005, 14:13

c'est ce que j'avais compris.(pas que tu etais con hein :wink: )
J'ai tout laissé et viré le \, mais...
... ca n'enregistre rien :?

ca affiche ça:

string(44) "CONCESSION de DISTRIBUTION PUBLIQUE d'argent" string(45) "CONCESSION de DISTRIBUTION PUBLIQUE d\'argent" string(121) "SELECT DISTINCT id_service FROM phpgw_workf_services WHERE nom_service = 'CONCESSION de DISTRIBUTION PUBLIQUE d\'argent'"

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

15 juin 2005, 14:23

ben là je seche, ... il te met pas de message d'erreur ni quoi que ce soit ? ??
essaye d'exécuter ta requete *texto* depuis php dans une appli de requettage autre que php (style http://www.mydb-studio.com ) et voit ce qu'il te dit.
Modifie ta requête (d'ailleur tu devrais utiliser un GROUP BY au lieu d'un distinct) pour avoir le résultat voulu dans le requetteur puis remplace là dans php ... enfin, c'est comme ca que je ferais.

Code : Tout sélectionner

SELECT id_service FROM phpgw_workf_services WHERE nom_service = 'CONCESSION de DISTRIBUTION PUBLIQUE d\'argent' GROUP BY id_service
Sache une chose, MySQL et PHP ont toujours raison (sauf en cas de bug).
Si ca marche pas le probleme se situe derriere le clavier :)
(et j'en sais quelque chose, je suis souvent derrière le sus-nommé clavier :evil: :twisted: :twisted: )

Eléphant du PHP | 155 Messages

15 juin 2005, 14:50

j'ai changer les ' par ds "

en forc&ant, ca fonctionne, mais ca m'affiche le \.

je teste le reste

Eléphant du PHP | 155 Messages

15 juin 2005, 14:54

sans forcer ca marche pas.

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

15 juin 2005, 15:05

Bon, si ca marche en forcant la valeur c'est que la requete est pas en cause.
maintenant faut trouver pkoi la valeur saisie est différente de la valeur forcée, puis corriger la valeur saisie pour qu'elle soit utilisable.
$service =$_POST['nom_service'];
if(get_magic_quotes_gpc())
    $service=stripslashes($service);
}
$serviceForce = "CONCESSION de DISTRIBUTION PUBLIQUE d'argent";
if(strcmp($service,$serviceForce)==0){
    echo "c'est egal ! COOL :) ";
}
else{
    echo "y'a une couil** dans le paté ! :( ";
}

Eléphant du PHP | 155 Messages

15 juin 2005, 15:17

y'a une coul...dans le paté!


pourtant, j'ai beau relire sans cesse, au niveau de l'ecriture, c'est ca hein!

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

15 juin 2005, 15:38

essaye en ajoutant un trim :
$service =trim($_POST['nom_service']);
if(get_magic_quotes_gpc())
    $service=stripslashes($service);
}
$serviceForce = "CONCESSION de DISTRIBUTION PUBLIQUE d'argent";
if(strcmp($service,$serviceForce)==0){
    echo "c'est egal ! COOL :) ";
}
else{
    echo "y'a une couil** dans le paté ! :( ";
}

Eléphant du PHP | 155 Messages

15 juin 2005, 15:44

c'est koi ca: trim,
Ca marche pas, y'a tjs le même mess (paté)

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

15 juin 2005, 16:07

tu lui rentre bien CONCESSION de DISTRIBUTION PUBLIQUE d'argent dans le formulaire ?
trim() retourne la chaîne str, après avoir supprimé les caractères invisibles en début et fin de chaîne. Si le second paramètre charlist a été omis, trim() supprimera les caractères suivants :


" " (ASCII 32 (0x20)), un espace ordinaire.

"\t" (ASCII 9 (0x09)), une tabulation.

"\n" (ASCII 10 (0x0A)), une nouvelle ligne (line feed).

"\r" (ASCII 13 (0x0D)), un retour chariot (carriage return).

"\0" (ASCII 0 (0x00)), le caractère NUL.

"\x0B" (ASCII 11 (0x0B)), une tabulation verticale.
ben on va sortir l'artillerie lourde :
<?
$service =trim($_POST['nom_service']);
if(get_magic_quotes_gpc())
    $service=stripslashes($service);
}
$serviceForce = "CONCESSION de DISTRIBUTION PUBLIQUE d'argent";
echo "$service<br>$serviceForce<br>";

$lenS  = strlen($service);
$lenSF = strlen($serviceForce);
if($lenS!=$lenSF{
	echo "les longueurs diffèrent => c'est déjà pas bon<br>";
}
$max = min($lenS,$lenSF);

for($i=0;$i<$max;$i++){
	if($service{$i}!=$serviceForce{$i}){
		echo "ca bloque au caractère $i : '"
			.$service{$i}."' contre '"
			.$serviceForce{$i}."'";
		break;
	}	
}

if(strcmp($service,$serviceForce)==0){
    echo "c'est egal ! COOL Smile <br>";
}
else{
    echo "y'a une couil** dans le paté ! :( <br>";
}
?>

guy
Eléphant du PHP | 134 Messages

15 juin 2005, 16:16

$service= htmlentities($service, ENT_QUOTES);
Guy