Procédure stockée MySQL/PHP
Fermé
flodotsoft
Messages postés
70
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 juillet 2008
-
1 juil. 2008 à 15:50
Amarazak - 4 août 2009 à 16:30
Amarazak - 4 août 2009 à 16:30
A voir également:
- Procédure stockée MySQL/PHP
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
- Le point d'entrée de procédure est introuvable dans la bibliothèque de liens dynamiques ✓ - Forum Logiciels
- Expert php pinterest - Télécharger - Langages
12 réponses
[o.o]REplay
Messages postés
357
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
28
1 juil. 2008 à 15:54
1 juil. 2008 à 15:54
Bonjour,
essaies:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Au debut de ta page.
:)
essaies:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Au debut de ta page.
:)
flodotsoft
Messages postés
70
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 juillet 2008
3
1 juil. 2008 à 15:59
1 juil. 2008 à 15:59
Merci pour ta réponse.
Mais ca n'a rien a voir avec l'affichage en lui même, c'est en amont que les données ne sont pas bien encodées.
Soit dans la proc stock, soit dans la récupération en PHP.
Au niveau de la page il affiche bien ce qu'on lui donne, enfin presque, y'a un peu trop d'erreurs ...
Mais ca n'a rien a voir avec l'affichage en lui même, c'est en amont que les données ne sont pas bien encodées.
Soit dans la proc stock, soit dans la récupération en PHP.
Au niveau de la page il affiche bien ce qu'on lui donne, enfin presque, y'a un peu trop d'erreurs ...
[o.o]REplay
Messages postés
357
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
28
1 juil. 2008 à 16:06
1 juil. 2008 à 16:06
Essaies dans ce cas de faire un utf8_encode($tachaine de caractère) avant de l'afficher.
Sinon le mieux serai de faire des echo de tes chaines de caractères au fur et a mesure de leur manipulation, pour voir où ça ne va plus :)
++
~• Coin Coin •~
replay.homeunix.com
Sinon le mieux serai de faire des echo de tes chaines de caractères au fur et a mesure de leur manipulation, pour voir où ça ne va plus :)
++
~• Coin Coin •~
replay.homeunix.com
flodotsoft
Messages postés
70
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 juillet 2008
3
1 juil. 2008 à 16:22
1 juil. 2008 à 16:22
En fait je vais reprendre:
Coté affichage tout se passe bien, il m'affiche bien le tableau dans le désordre avec des données incompréhensibles. Mais ce tableau lui est passé tel quel, donc on ne peut rien faire sur l'affichage.
C'est au niveau du traitement (PHP ou MySQL avec proc stock) que le problème intervient.
Il faudrait que je puisse définir le type d'encodage directement dans ma proc stock ou bien dans l'appel en PHP.
Et ca je ne sais pas comment faire.
Coté affichage tout se passe bien, il m'affiche bien le tableau dans le désordre avec des données incompréhensibles. Mais ce tableau lui est passé tel quel, donc on ne peut rien faire sur l'affichage.
C'est au niveau du traitement (PHP ou MySQL avec proc stock) que le problème intervient.
Il faudrait que je puisse définir le type d'encodage directement dans ma proc stock ou bien dans l'appel en PHP.
Et ca je ne sais pas comment faire.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
flodotsoft
Messages postés
70
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 juillet 2008
3
2 juil. 2008 à 10:30
2 juil. 2008 à 10:30
up !
pliz ^^
pliz ^^
[o.o]REplay
Messages postés
357
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
28
2 juil. 2008 à 10:48
2 juil. 2008 à 10:48
"[...] le mieux serai de faire des echo de tes chaines de caractères au fur et a mesure de leur manipulation, pour voir où ça ne va plus".
avant leur manipulation == avant leur stockage dans les tables..
As-tu essayé la fonction utf8_encode() comme je t'ai conseillé? essaie d'encoder directement les mots de tes tables avant de les afficher et dis moic e que ca donne.
avant leur manipulation == avant leur stockage dans les tables..
As-tu essayé la fonction utf8_encode() comme je t'ai conseillé? essaie d'encoder directement les mots de tes tables avant de les afficher et dis moic e que ca donne.
flodotsoft
Messages postés
70
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 juillet 2008
3
2 juil. 2008 à 11:37
2 juil. 2008 à 11:37
C'est justement ca le problème.
<?
$dbh = new PDO('mysql:host=localhost;dbname='.$database, $username, $password);
$maproc = "CALL ps_chercher(ma, liste, de, param)";
$appelSP = $dbh->prepare($maproc);
$appelSP->execute();
while($row = $appelSP->fetchAll(PDO::FETCH_ASSOC)) print_r($row);
?>
La proc stock me ramène les bons résultats bien codés, mais ds le traitement PHP, lors de la récupération c'est la qu'il merde. Et impossible de faire des echos avant le while .... ou alors je vois pas du tout ...
pour l'utf8_encode pareil, impossible de l'utiliser sauf dans le while et meme en affichant un élément du tableau ca ne change rien.
Je commence à desepérer ...
<?
$dbh = new PDO('mysql:host=localhost;dbname='.$database, $username, $password);
$maproc = "CALL ps_chercher(ma, liste, de, param)";
$appelSP = $dbh->prepare($maproc);
$appelSP->execute();
while($row = $appelSP->fetchAll(PDO::FETCH_ASSOC)) print_r($row);
?>
La proc stock me ramène les bons résultats bien codés, mais ds le traitement PHP, lors de la récupération c'est la qu'il merde. Et impossible de faire des echos avant le while .... ou alors je vois pas du tout ...
pour l'utf8_encode pareil, impossible de l'utiliser sauf dans le while et meme en affichant un élément du tableau ca ne change rien.
Je commence à desepérer ...
flodotsoft
Messages postés
70
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 juillet 2008
3
3 juil. 2008 à 10:39
3 juil. 2008 à 10:39
Je commence à me demander si on peut bien récupérer un resultset en php avec une proc stock ...
[o.o]REplay
Messages postés
357
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
28
3 juil. 2008 à 10:51
3 juil. 2008 à 10:51
Yo,
Aucune idée, je ne sais pas ce qu'est une proc stock, mais a priori si tu affiche bien des résultats avec des données incompréhensibles, c'est que c'est possible. Est-ce que tous les caractères affichés sont comme ça, ou ça ne concerne que les accents?
++
Aucune idée, je ne sais pas ce qu'est une proc stock, mais a priori si tu affiche bien des résultats avec des données incompréhensibles, c'est que c'est possible. Est-ce que tous les caractères affichés sont comme ça, ou ça ne concerne que les accents?
++
flodotsoft
Messages postés
70
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 juillet 2008
3
3 juil. 2008 à 11:00
3 juil. 2008 à 11:00
non c'est aléatoire
certain accents passent bien, d'autres ne passent pas, mais c'est surtout qu'il mélange les colonne en piochant un peu partout.
enfin bon merci qd meme, je vais voir pour faire autrement ;)
certain accents passent bien, d'autres ne passent pas, mais c'est surtout qu'il mélange les colonne en piochant un peu partout.
enfin bon merci qd meme, je vais voir pour faire autrement ;)
login08
Messages postés
32
Date d'inscription
vendredi 24 avril 2009
Statut
Membre
Dernière intervention
5 juin 2009
3
29 avril 2009 à 14:01
29 avril 2009 à 14:01
Dsl si je répond à côté car j'ai pas le temps de lire totalement le sujet. Mais si j'ai bien compris pour afficher une chaine de caractère en PHP sans être embêté par les caraactère spéciaux, il faut utiliser la fonction htmlentities
ex:
$chaine = "plein de é partout et de ç et de à";
echo htmlentities($chaine);
ex:
$chaine = "plein de é partout et de ç et de à";
echo htmlentities($chaine);
Salut,
Pour le htmlentities() il faut aussi que toutes les données de la base soient codées en HTML afin que la comparaison puisse être faite et certaine fois il bloquait sur le "&" donc je n'ai pas pu retenir cette solution.
Je me suis aperçu que MySQL zappait les accents, tu peux essayer de passer chaque paramètre dans cette fonction, qui effectue aussi un addslashes() :
<?
function stripAccents($str){
$str = htmlentities($str, ENT_NOQUOTES, "utf-8");
$str = preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#', '\1', $str);
$str = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $str); // pour les ligatures e.g. 'œ'
$str = preg_replace('#\&[^;]+\;#', '', $str); // supprime les autres caractères
return addslashes($str);
}
$dbh = new PDO('mysql:host=localhost;dbname='.$database, $username, $password);
$maproc = "CALL ps_chercher(stripAccents($mes), stripAccents($paramètres))";
$appelSP = $dbh->prepare($maproc);
$appelSP->execute();
while($row = $appelSP->fetchAll(PDO::FETCH_ASSOC)) print_r($row);
?>
Pour le htmlentities() il faut aussi que toutes les données de la base soient codées en HTML afin que la comparaison puisse être faite et certaine fois il bloquait sur le "&" donc je n'ai pas pu retenir cette solution.
Je me suis aperçu que MySQL zappait les accents, tu peux essayer de passer chaque paramètre dans cette fonction, qui effectue aussi un addslashes() :
<?
function stripAccents($str){
$str = htmlentities($str, ENT_NOQUOTES, "utf-8");
$str = preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#', '\1', $str);
$str = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $str); // pour les ligatures e.g. 'œ'
$str = preg_replace('#\&[^;]+\;#', '', $str); // supprime les autres caractères
return addslashes($str);
}
$dbh = new PDO('mysql:host=localhost;dbname='.$database, $username, $password);
$maproc = "CALL ps_chercher(stripAccents($mes), stripAccents($paramètres))";
$appelSP = $dbh->prepare($maproc);
$appelSP->execute();
while($row = $appelSP->fetchAll(PDO::FETCH_ASSOC)) print_r($row);
?>