Communication PHP MySQL

Résolu
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 - 20 juil. 2011 à 10:30
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 20 juil. 2011 à 16:57
Salut,

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 :
<?php
$link = mysql_connect("localhost", "root", "******") 
     or die("Impossible de se connecter à MySQL"); 
echo 'Connexion réussie';
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.

Merci

Forza Taraji!!

25 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
20 juil. 2011 à 15:18
oui
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 ...



Bonne programmation !
3
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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").
Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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.


Forza Taraji!!
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 juil. 2011 à 11:32
Salut,

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)

Cordialement,

Kohntark -
0

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

Posez votre question
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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 :


on (release) { 
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) { 
if (success) { 
//recupere variablePhp2 du script php 
_root.variableFlash = this.variablePhp2; 
trace(_root.variableFlash); 
} else { 
trace("erreur"); 
} 
}; 
PhpObject.sendAndLoad("test_moha.php", PhpObject, "POST"); 
gotoAndPlay(3); 
} 


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_*.

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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.

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
20 juil. 2011 à 12:23
Je vais essayer avec le PDO, mais si ça ne marche pas, je serai vraiment bloqué à mort.
(je vous tiens au courant)


Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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 :

<?php 
try 
{ 
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; 
$bdd = new PDO('mysql:host=localhost;dbname=test_moha', 'root', '*****', $pdo_options); 

// On ajoute une entrée dans la table jeux_video 
$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 !'; 
} 
catch(Exception $e) 
{ 
die('Erreur : '.$e->getMessage()); 
} 
?>


Forza Taraji!!
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 juil. 2011 à 12:47
Re,

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 ?



Cordialement,



Kohntark -
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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 ?
Voici son code :

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>EssaiAppli</title>
</head>

<!--url's used in the movie-->
<!--text used in the movie-->
<!--

-->
<!-- saved from url=(0013)about:internet -->
<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">


</object>

</html>



Encore merci pour votre aide.

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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


Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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.

Forza Taraji!!
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
20 juil. 2011 à 13:38
bonjour

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é ...

essaie
 <?php
$link = mysql_connect("localhost", "root", "******") 
or die("Impossible de se connecter à MySQL"); 

echo 'Connexion réussie';

if ( !(mysql_select_db("test_moha", $link)) ){
die ("Impossible d'utiliser la base"); 
}

echo $requete = "INSERT INTO 
            
            test_flash_data
             
            (
            id_user,
            type_transport,
            distance,
            duree,
            type_voiture,
            type_carburant,
            nb_jours
            )
            
            VALUES
            (
            NULL,
            'voiture',
            '12',
            '30',
            'petite',
            'diesel',
            '2'
            )
            
            "; 

if(mysql_query($requete)){
echo 'insert ok';
}else(
echo 'y a un prob';
die ('Erreur '.mysql_errno().' : ' . mysql_error());
)   

?>



Bonne programmation !
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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);";




Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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).

Forza Taraji!!
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
20 juil. 2011 à 14:35
re
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

<?php
$link = mysql_connect("localhost", "root", "") 
or die("Impossible de se connecter à MySQL"); 

echo 'Connexion réussie';

if ( !(mysql_select_db("a", $link)) ){
die ("Impossible d'utiliser la base"); 
}

echo $requete = "INSERT INTO test_flash_data            
            (
            id_user,
            type_transport,
            distance,
            duree,
            type_voiture,
            type_carburant,
            nb_jours
            )
            
            VALUES
            (
            NULL,
            'voiture',
            '12',
            '30',
            'petite',
            'diesel',
            '2'
            )
            
            "; 

if(mysql_query($requete)){
echo '<HR>insert ok';
}else{
echo 'y a un prob';
die ('Erreur '.mysql_errno().' : ' . mysql_error());
}   

?>




-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 juil. 2011 à 14:56
En essayant de l'ouvrir avec le navigateur (chrome et IE), il me le télécharge !!! Bizarre

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 ?


@Cod57
voila jai remarqué une erreur sur une parenthése

où ça ?

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.

Cordialement,


Kohntark -
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
20 juil. 2011 à 15:04
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).

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
20 juil. 2011 à 15:11
Tu rencontre le même soucis avec d'autres pages php ?


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)
distance float
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?


Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
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).

Merci beaucoup

A un nouveau problème!!

Forza Taraji!!
0
Rejoignez-nous