par
speccy666 » 15 août 2008, 11:43
J'ai un gros problème pour sauvegarder mes données à partif d'une appli Flash... Pb de codage je pense.... mais j'ai passé 10heures dessus hier et rien n'y fait....j'ai parcouru tout les forums de l'univers... ce doit pas être compliqué pourtant de trouver une appli Flash-PHP-MySQL du style carnet d'adresse avec SendAndLoad??!!
j'ai donc fait une version épurée qui peut intéresser les amateurs...c'est une appli qui lit 4 enregistrements et les affichent sous flash 8 dans un texte dynamique... Si l'utilisateur modifie le texte et appuie sur suivant ou précédent, il est sauvegardé.... et là le problème se pose! comment éviter les déformations de texte. J'ai tout essayé encodage, passer mes bases en UTF8... bref! rien n'y fait...
Je soumet donc à la participation collective un fichier PHP avec la base TEST et mon fichier FLASH pour ceux qui voudraient essayer de parvenir à un résultat.
Merci pour votre aide, c'est un projet très important pour moi et finalisé à 95% (10 mois que j'y suis dessus).
Jean Marc
Interclassement pour la connection MysSQL : UTF8_unicode_ci....
avec le jeu de caractère aussi UTF8_unicode <== default-character-set=utf8 dans WAMP.
Version MySQL : 5.0.37
Version Flash 8.0
CODE PHP (fichier à appeler test.php ou à télécharger ici : http://questar.free.fr/test.phpSAVE )
<?php
//intègre le fichier de connection qui sera différent en LOCAL ou sur le SERVEUR
include('donneesconnection.php');
//pour le local avec WAMP , vous pouvez activer le code ci-dessous :
//mysql_connect("localhost", "root", ""); // Connexion à MySQL
//mysql_select_db("questar") or die("Impossible d'ouvrir la base de donnees "); // Attention de bien remplacer le nom de la base qui ici est :QUESTAR
//$codage=mysql_query("SET NAMES 'UTF8'");
//récupère les variables passées par Flash
$actionsql=$_GET['actionsql'];
$idm=$_GET['idm'];
$message=$_GET['contenumessage'];
//on active le codage plus tard pour peaufiner petit à petit
//$message=mysql_real_escape_string(utf8_encode($message));
//remplace(&$message) si nécessaire et cela ne résoud pas tout en plus;
// selon action, lancer le code associé
//*** action=0 --> AFFICHAGE du PREMIER ENREGISTREMENT
if ($actionsql==0)
{
//affiche le premier enregistrement de la base
$rq="SELECT * FROM test ORDER BY id ASC limit 1";
$resultat=mysql_query($rq) or die(mysql_error());
$donnees = mysql_fetch_array($resultat);
$idm=$donnees['id'];
$message=$donnees['message'];
}
//*** action=1 --> Quest SUIVANTE ou affichage de la première message de la table active
if ($actionsql==1)
{
//SAUVEGARDE le message en cours à activer dans un second temps quand on lira et affichera parfaitement les données
//$rq="UPDATE test SET message='$message' WHERE id='$idm'";
//$resultat=mysql_query($rq) or die(mysql_error());
//ouvre la table du QCM et cherche le message suivant dont l'id est supérieur à l'ID reçu
$rq="SELECT * FROM test WHERE id>".$idm." ORDER BY id ASC limit 1";
$resultat=mysql_query($rq) or die(mysql_error());
$donnees = mysql_fetch_array($resultat);
$idm=$donnees['id'];
$message=$donnees['message'];
}
//*** action=2 --> Quest PRECEDENTE
if ($actionsql==2)
{
//sauvegarde le message en cours à activer dans un second temps quand on lira et affichera parfaitement les données
//$rq="UPDATE test SET message='$message' WHERE id='$idm'";
//$resultat=mysql_query($rq) or die(mysql_error());
//ouvre la table du QCM et cherche la message dont l'id est supérieur à l'ID reçu
$rq="SELECT * FROM test WHERE id<".$idm." ORDER BY id DESC limit 1";
$resultat=mysql_query($rq) or die(mysql_error());
$donnees = mysql_fetch_array($resultat);
$idm=$donnees['id'];
$message=$donnees['message'];
}
//renvoie les variables remplies à Flash
//echo "&idmessage=".$idquest."&message=".utf8_encode($message)."&r1=".utf8_encode($r1)."&r2=".utf8_encode($r2)."&r3=".utf8_encode($r3)."&numreponse=".$numreponse."&commentaire=".utf8_encode($commentaire);
echo "&idmessagephp=".$idm."&messagephp=".urlencode(utf8_encode($message));
//
// Code suivant : non appliqué si pas besoin.
//remplace les caractères accentués qui déforment le texte si la fonction est appelée
function remplace($a)
{
$a = str_replace("è","è",$a);
$a = str_replace("é","é",$a);
$a = str_replace("ê","ê",$a);
$a = str_replace("î","î",$a);
$a = str_replace("ù","ù",$a);
$a = str_replace("ô","ô",$a);
$a = str_replace("ë","ë",$a);
//$a = str_replace("à§","ç",$a);
$a = str_replace("ç","ç",$a);
$a = str_replace("ë","ë",$a);
}
?>
Code SQL de la petite base de test
-- phpMyAdmin SQL Dump
-- version 2.10.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Ven 15 Août 2008 à 11:29
-- Version du serveur: 5.0.41
-- Version de PHP: 5.2.3
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `questar`
--
-- --------------------------------------------------------
--
-- Structure de la table `test2`
--
CREATE TABLE `test2` (
`id` mediumint(9) NOT NULL auto_increment,
`message` varchar(100) character set utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
--
-- Contenu de la table `test2`
--
INSERT INTO `test2` (`id`, `message`) VALUES
(1, 'hélène est un peu coinçée; désolé c''est à cause du test.'),
(2, 'hélène bêle'),
(5, 'l''été à coté de la côte.'),
(4, 'où que j''aille, ça grêle.');
Code FLASH à charger - petit fichier test.fla
http://questar.free.fr/test.fla
J'ai un gros problème pour sauvegarder mes données à partif d'une appli Flash... Pb de codage je pense.... mais j'ai passé 10heures dessus hier et rien n'y fait....j'ai parcouru tout les forums de l'univers... ce doit pas être compliqué pourtant de trouver une appli Flash-PHP-MySQL du style carnet d'adresse avec SendAndLoad??!!
j'ai donc fait une version épurée qui peut intéresser les amateurs...c'est une appli qui lit 4 enregistrements et les affichent sous flash 8 dans un texte dynamique... Si l'utilisateur modifie le texte et appuie sur suivant ou précédent, il est sauvegardé.... et là le problème se pose! comment éviter les déformations de texte. J'ai tout essayé encodage, passer mes bases en UTF8... bref! rien n'y fait...
Je soumet donc à la participation collective un fichier PHP avec la base TEST et mon fichier FLASH pour ceux qui voudraient essayer de parvenir à un résultat.
Merci pour votre aide, c'est un projet très important pour moi et finalisé à 95% (10 mois que j'y suis dessus).
Jean Marc
[i]Interclassement pour la connection MysSQL : UTF8_unicode_ci....
avec le jeu de caractère aussi UTF8_unicode <== default-character-set=utf8 dans WAMP.
Version MySQL : 5.0.37
Version Flash 8.0[/i]
[b]CODE PHP (fichier à appeler test.php ou à télécharger ici : http://questar.free.fr/test.phpSAVE )[/b]
[php]<?php
//intègre le fichier de connection qui sera différent en LOCAL ou sur le SERVEUR
include('donneesconnection.php');
//pour le local avec WAMP , vous pouvez activer le code ci-dessous :
//mysql_connect("localhost", "root", ""); // Connexion à MySQL
//mysql_select_db("questar") or die("Impossible d'ouvrir la base de donnees "); // Attention de bien remplacer le nom de la base qui ici est :QUESTAR
//$codage=mysql_query("SET NAMES 'UTF8'");
//récupère les variables passées par Flash
$actionsql=$_GET['actionsql'];
$idm=$_GET['idm'];
$message=$_GET['contenumessage'];
//on active le codage plus tard pour peaufiner petit à petit
//$message=mysql_real_escape_string(utf8_encode($message));
//remplace(&$message) si nécessaire et cela ne résoud pas tout en plus;
// selon action, lancer le code associé
//*** action=0 --> AFFICHAGE du PREMIER ENREGISTREMENT
if ($actionsql==0)
{
//affiche le premier enregistrement de la base
$rq="SELECT * FROM test ORDER BY id ASC limit 1";
$resultat=mysql_query($rq) or die(mysql_error());
$donnees = mysql_fetch_array($resultat);
$idm=$donnees['id'];
$message=$donnees['message'];
}
//*** action=1 --> Quest SUIVANTE ou affichage de la première message de la table active
if ($actionsql==1)
{
//SAUVEGARDE le message en cours à activer dans un second temps quand on lira et affichera parfaitement les données
//$rq="UPDATE test SET message='$message' WHERE id='$idm'";
//$resultat=mysql_query($rq) or die(mysql_error());
//ouvre la table du QCM et cherche le message suivant dont l'id est supérieur à l'ID reçu
$rq="SELECT * FROM test WHERE id>".$idm." ORDER BY id ASC limit 1";
$resultat=mysql_query($rq) or die(mysql_error());
$donnees = mysql_fetch_array($resultat);
$idm=$donnees['id'];
$message=$donnees['message'];
}
//*** action=2 --> Quest PRECEDENTE
if ($actionsql==2)
{
//sauvegarde le message en cours à activer dans un second temps quand on lira et affichera parfaitement les données
//$rq="UPDATE test SET message='$message' WHERE id='$idm'";
//$resultat=mysql_query($rq) or die(mysql_error());
//ouvre la table du QCM et cherche la message dont l'id est supérieur à l'ID reçu
$rq="SELECT * FROM test WHERE id<".$idm." ORDER BY id DESC limit 1";
$resultat=mysql_query($rq) or die(mysql_error());
$donnees = mysql_fetch_array($resultat);
$idm=$donnees['id'];
$message=$donnees['message'];
}
//renvoie les variables remplies à Flash
//echo "&idmessage=".$idquest."&message=".utf8_encode($message)."&r1=".utf8_encode($r1)."&r2=".utf8_encode($r2)."&r3=".utf8_encode($r3)."&numreponse=".$numreponse."&commentaire=".utf8_encode($commentaire);
echo "&idmessagephp=".$idm."&messagephp=".urlencode(utf8_encode($message));
//
// Code suivant : non appliqué si pas besoin.
//remplace les caractères accentués qui déforment le texte si la fonction est appelée
function remplace($a)
{
$a = str_replace("è","è",$a);
$a = str_replace("é","é",$a);
$a = str_replace("ê","ê",$a);
$a = str_replace("î","î",$a);
$a = str_replace("ù","ù",$a);
$a = str_replace("ô","ô",$a);
$a = str_replace("ë","ë",$a);
//$a = str_replace("à§","ç",$a);
$a = str_replace("ç","ç",$a);
$a = str_replace("ë","ë",$a);
}
?>[/php]
[b]Code SQL de la petite base de test[/b]
[php]-- phpMyAdmin SQL Dump
-- version 2.10.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Ven 15 Août 2008 à 11:29
-- Version du serveur: 5.0.41
-- Version de PHP: 5.2.3
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `questar`
--
-- --------------------------------------------------------
--
-- Structure de la table `test2`
--
CREATE TABLE `test2` (
`id` mediumint(9) NOT NULL auto_increment,
`message` varchar(100) character set utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
--
-- Contenu de la table `test2`
--
INSERT INTO `test2` (`id`, `message`) VALUES
(1, 'hélène est un peu coinçée; désolé c''est à cause du test.'),
(2, 'hélène bêle'),
(5, 'l''été à coté de la côte.'),
(4, 'où que j''aille, ça grêle.');
[/php]
[b]Code FLASH à charger - petit fichier test.fla [/b]
http://questar.free.fr/test.fla