PHP : Communication PHP MySQL [Résolu] - Forum PHP - CodeS SourceS
Communication PHP MySQL [Résolu]
- 20 juil. 2011 à 10:30
- 20 juil. 2011 à 16:57
J'ai un problème de communication entre PHP et MySQL. En fait, j'ai réalisé une petite application avec Macromedia Flash 8 et j'ai voulu enregistrer les données entrées dedans. Pour la communication Flash PHP, tout va bien j'arrive à faire communiquer les données (réception et envoi). Par contre, et ce qui est le plus bizarre car je pensais que c'était facile, je n'arrive pas à insérer mes données dans ma table de ma base de données MySQL. Depuis deux jours, je fais le tour des forums mais sans succès. C'est vrai que je n'ai pas l'habitude de programmer en PHP et d'utiliser phpMyAdmin mais je pense avoir un code cohérent (après il se peut que je ne l'ai pas mis au bon endroit ou que j'ai un autre problème ailleurs que dans le code lui-même). Voici mon code :
$link = mysql_connect("localhost", "root", "******")
or die("Impossible de se connecter à MySQL");
if ( !(mysql_select_db("test_moha", $link)) )
die ("Impossible d'utiliser la base");
$requete = "INSERT INTO test_flash_data (id_user, type_transport, distance, duree, type_voiture, type_carburant, nb_jours) VALUES('','voiture','12','30','petite','diesel','2')";
mysql_query($requete) or die ('Erreur '.mysql_errno().' : ' . mysql_error());
Please de l'aide car malgré une dizaine de tuto qui reprennent tous le même concept (mysql_connect, mysql_select_db, mysql_query ...) je n'arrive pas à à voir mes données
dans phpMyAdmin pour pouvoir les administrer.
Connexion android et serveur web php ✓ - Forum - Java
20 juil. 2011 à 15:18
je panse pas que soit le code vu qu'il fonctionne chez moi
en local comme en distant
bizarre, relance voir ton ordi ...
si tu prend mon code tu le copie dans un fichier test.php
et tu le mets dans www/ de wamp
tu appeles http://localhost/test.php
ça dit quoi ...
20 juil. 2011 à 10:39
Il se peut que ce soit à cause d'un mauvais paramétrage de phpMyAdmin ou de WAMPServer
(j'ai le wamp pour php 5.3.0 et mysql 5.1.36). Ma base est sur le serveur localhost et j'ai WampServer en ligne (dans le quick admin, il y a "Passer en ligne" ou "Passer hors ligne").
20 juil. 2011 à 10:52
Autre détail : je viens de vérifier que mon root a bien tout les privilèges et c'est bien le cas.
20 juil. 2011 à 11:32
Et si tu donnais l'erreur qui t'est retournée ?
PHPMyAdmin lui même fonctionne t il bien ?
malgré une dizaine de tuto qui reprennent tous le même concept
Tu es malheureusement tombé sur de mauvais tutos ... les fonctions mysql_* de nos jours sont fortement obsolètes (cf PDO, éventuellement mysqli)
20 juil. 2011 à 12:10
En fait, si je fait directement l'insert du côté de phpMyAdmin avec une requête SQL, ça marche sans problème. Par contre, si je lance mon application qui doit exécuter un code (plus bas) lorsque j'appuie (ou plutôt relâche) un bouton l'application marche normalement mais il n'y a pas d'insertion dans ma base.
Le code Flash :
typetransport = "voiture";
var PhpObject = new LoadVars();
PhpObject.id_user = 2;
PhpObject.type_transport = typetransport;
PhpObject.distance = 20;
PhpObject.duree = 25;
PhpObject.type_voiture = "petite";
PhpObject.type_carburant = "diesel";
PhpObject.nb_jours = 3;
PhpObject.onLoad = function(success) {
//recupere variablePhp2 du script php
_root.variableFlash = this.variablePhp2;
trace(_root.variableFlash);
trace("erreur");
PhpObject.sendAndLoad("test_moha.php", PhpObject, "POST");
Donc pour répondre à ta deuxième réponse, il n'y pas de message d'erreur, seulement la base qui reste inchangée. Sinon, j'ai essayé avec mysqli_* mais sans succès non plus et j'ai décidé de retenter ma chance avec mysql_*.
20 juil. 2011 à 12:13
Je penche de plus en plus pour un problème de réglage avec phpMyAdmin. Je travaille en localhost : est-ce que je dois nécessairement héberger quelque part ma base ou mon appli pour que ça fonctionne? Avec DotNet (j'ai plus d'expérience avec), on pouvait bosser en localhost sans problème.
20 juil. 2011 à 12:23
Je vais essayer avec le PDO, mais si ça ne marche pas, je serai vraiment bloqué à mort.
20 juil. 2011 à 12:47
niente (rien) :
j'ai utilisé le PDO mais toujours le même résultat : l'application marche bien (avec une communication correcte entre le Flash et le PHP) mais aucun changement dans la base. Voici le code PHP :
$bdd = new PDO('mysql:host=localhost;dbname=test_moha', 'root', '*****', $pdo_options);
$bdd->exec('INSERT INTO 'test_flash_data' ('id_user', 'type_transport', 'distance', 'duree', 'type_voiture', 'type_carburant', 'nb_jours') VALUES(\'\',\'voiture\',12,30,\'petite\',\'diesel\',2)');
echo 'OK !';
NB : mysql_* est dépassé, mais fonctionne encore, il y a de fortes chances que PDO et mysqli ne change rien.
Question bête : es tu certain que ton code PHP est appelé ?
Y a t il d'autres lignes de code dans le script PHP que tu fournis ?
Que se passe t-il si tu appelle directement, via la barre d'adresse du navigateur, le fichier PHP ? une erreur ?
20 juil. 2011 à 12:54
Sinon, Macromedia Flash 8 me génère un fichier html avec mon application dedans. Est-ce que je dois le modifier ?
<title>EssaiAppli</title>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="EssaiAppli" align="middle">
20 juil. 2011 à 13:02
En fait, il est appelé (le fichier php) car l'application m'affiche un "ok" que je mets dans la variable variablePhp2 du script PHP grâce à echo et qui est affiché grâce à trace(_root.variableFlash);. J'ai changé le "ok" par autre chose et le changement est pris en compte.
En essayant de l'ouvrir avec le navigateur (chrome et IE), il me le télécharge !!! Bizarre
20 juil. 2011 à 13:05
et lorsque je l'ai mis dans une page html (un bouton qui appelle une fonction lors du onclick, cette fonction contient le script php vu en haut) eh bien, ça fait rien du tout. Là, je bloque.
20 juil. 2011 à 13:38
je suis sur que ta requete est pas juste
si tu dis que direct elle marche par la fenetre sql de phpmyadmin
ecrit ta requete copier coller phpmyadmin dans la variable $requete de ton script est essaie tu dois avoir un prob au niveau de la requete un champs mal rernseigné ...
if ( !(mysql_select_db("test_moha", $link)) ){
echo $requete = "INSERT INTO
test_flash_data
type_transport,
type_voiture,
type_carburant,
'voiture',
'petite',
echo 'y a un prob';
die ('Erreur '.mysql_errno().' : ' . mysql_error());
20 juil. 2011 à 14:07
Essai non concluant. Toujours rien de changé avec ton code (merci quand même de vouloir m'aider). Pour la requête, j'ai fait un truc simple : j'ai écrit en sql ma requête dans phpMyAdmin (ce qui m'a donné un bon résultat) puis je lui ai dit de me la convertir en php (bouton "créer source php").Voici le résultat :
$sql = "INSERT INTO test_flash_data (id_user, type_transport, distance, duree, type_voiture, type_carburant, nb_jours) VALUES(\'\',\'voiture\',12,30,\'petite\',\'diesel\',2);";
20 juil. 2011 à 14:30
Peut-être que le problème se pose du côté du"sendAndLoad" (dans le code Flash) qui ne reprend que la valeur de la variable variablePhp2 et n'exécute pas tout le fichier php? C'est possible?(je ne sais pas trop, en me documentant je n'ai pas trouvé de réponse).
voila jai remarqué une erreur sur une parenthése
voilà ce code marche chez moi jai fait une table bidon ... attention change "a" par ta base ... dans ce code
if ( !(mysql_select_db("a", $link)) ){
echo $requete = "INSERT INTO test_flash_data
echo '<HR>insert ok';
20 juil. 2011 à 14:56
Comme tu dis ... bizarre, et pas normal du tout.
Tu rencontre le même soucis avec d'autres pages php ?
Quel type de fichier détecte le navigateur lorsqu'il te demande d'enregistrer ?
Je venais de voir l'id_user, si il est en AUTOINCREMENT mieux vaut ne pas le préciser, ou alors mettre null comme Cod57
Menfin n'ayant pas la structure de la base il peut y avoir des erreurs partout.
Le plus rapide reste sans aucun doute l'affichage direct dans un navigateur, histoire d'avoir l'intitulé exact de l'erreur.
Toujours rien. Mais rien que pour savoir : pour pouvoir interagir avec ta base de données MySQL grâce aux fichiers php, qu'est ce que t'as fait?Ou plutôt, qu'est ce qu'on doit faire?(je suis sur que j'ai sauté un truc). Pour ce qui est des extensions, ça va j'ai php_mysql (et php_pdo_mysql pour le PDO). J'ai mis le WAMPServer "en ligne" --passer en ligne--.En utilisant la console de MySQL, ça marche aussi. Je ne vois pas ce que j'ai raté mais je suis de plus en plus sûr que c'est pas à cause du code (la preuve, j'ai essayé le code de plusieurs personnes).
20 juil. 2011 à 15:11
oui, avec toutes les pages php et ceci même avec FireFox. Et le type de ficher est le .php.
La structure de la base, la voici, même si je ne pense pas que c'est là le problème, vu que mes requêtes marchent bien sur la console MySQL :
id_user int(99) auto-increment
type_transport varchar(7)
duree int(3)
type_voiture varchar(7)
type_carburant varchar(10)
nb_jours int(1)
Sinon, je ne saisis pas ce qu'est l'affichage direct du navigateur? Tu veux dire que lorsque j'ouvre mon fichier avec le navigateur?
20 juil. 2011 à 15:48
Un très grand grand grand mais très grand merci cod57 !!! En fait le truc était de mettre le fichier php dans le dossier www/ (quand je te disais qu'il y a un truc qui m'échappait).
C'est cool de ta part d'avoir perdu du temps pour m'aider. Et c'est cool pour les autres aussi qui ont essayé de m'aider aujourd'hui (j'ai posté ce pb dans plusieurs forums).
A un nouveau problème!!
Panier d'achat + Session client