Page 1 sur 1

formulaire ajax php json et mysql

Posté : 18 juil. 2019, 00:47
par philippe97278
bonjour,

en suivant un tuto j'ai réussi (laborieusement) à mettre en place un formulaire ajax php json qui fonctionne sans liaison avec ma bdd. J'aimerais maintenant qu'il soit en lien avec ma bdd.

je pensais qu'il suffisait d'établir la connexion à la bdd et de récupérer les données par une requête php comme :
 
<?php
 global $con;
 include_once 'connexionMysql.php';
// RECUPERATION D'UN ENREGISTREMENT
 
$peudo=$_POST['pseudo'];
$password=$_POST['password'];
 
$sql = "SELECT pseudo, password, score, varpage, varclic, scoresee, varm, varmdir, vary, varydir, vare, varedir1, varedir2, varc3dir, vargsdir, varn, vars, varcolosdir, varo, varmastadir1, varmastadir2, vari, vark, varkdir1, varkdir2, varkdir3, varr, varrdir FROM diamant WHERE pseudo = '$pseudo' and password = '$password'";
$resultat = $con->query($sql);
 
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysqli_fetch_assoc($resultat))
    {
// on affiche les informations de l'enregistrement en cours
 
        $pseudob=$data['pseudo'] ;
        $passwordb=$data['password'] ;  
        $scoreb=$data['score'] ;
       $varpageb=$data['varpage'] ;
        $varclicb=$data['varclic'] ;
        $varmb=$data['varm'] ;
        $varyb=$data['vary'] ;
        
    }
 
?>
Mais j'ai essayé de mettre ce code dans mon fichier php en lieu et place des variables définies mais cela ne me renvoie pas les données de la bdd (au mieux cela renvoie "NULL")

Voici le fichier ajax_test.html
 
    <html>
    <head>
    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
    <script type="text/javascript">
    $("document").ready(function(){
      $(".js-ajax-php-json").submit(function(){
        var data = {
          "action": "test"
        };
        data = $(this).serialize() + "&" + $.param(data);
        $.ajax({
          type: "POST",
          dataType: "json",
          url: "ajax_retour.php", 
          data: data,
          success: function(data) {
            $(".return").html(
				"<input type='text' id='pseudob' name='pseudob' value='" + data["pseudo"] + "' style='width:100px';><br>" +
				"<input type='text' id='passwordb' name='passwordb' value='" + data["password"] + "' style='width:100px';><br>" +
				"<input type='text' id='scoreb' name='scoreb' value='" + data["score"] + "' style='width:100px';><br>" +
				"<input type='text' id='varpageb' name='varpageb' value='" + data["varpage"] + "' style='width:100px';><br>" +
				"<input type='text' id='varclicb' name='varclicb' value='" + data["varclic"] + "' style='width:100px';><br>" +
				"<input type='text' id='varmb' name='varmb' value='" + data["varm"] + "' style='width:100px';><br>" +
				"<input type='text' id='varyb' name='varyb' value='" + data["vary"] + "' style='width:100px';><br><br>" 
 
            );
 
            alert("Le formulaire a ete transmis avec succes.\nBonjour " + data["pseudo"] + " ton score est de : " + data["score"]);
          }
        });
        return false;
      });
    });
    </script>
    </head>
    <body>
    <form action="ajax_retour.php" class="js-ajax-php-json" method="post" accept-charset="utf-8">
		<input type="text" name="pseudo" value="" placeholder="Pseudo" />
		<input type="text" name="password" value="" placeholder="password" /><br><br>
		<input type="text" id="score" name="score" value="" style="width:50px"; hidden>
		<input type="text" id="varpge" name="varpage" value="" style="width:50px"; hidden>
		<input type="text" id="varclic" name="varclic" value="" style="width:50px"; hidden>
		<input type="text" id="varm" name="varm" value="" style="width:50px"; hidden>
		<input type="text" id="vary" name="vary" value="" style="width:50px"; hidden>
		<input type="submit" name="submit" value="Envoyer"  />
    </form>
 
    <div class="return">
      Retour des donn&eacute;es ajax
    </div>
    </body>
    </html>
et le fichier ajax_retour.php
 
<?php
 
if (is_ajax()) {
  if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
    $action = $_POST["action"];
    switch($action) { //Switch case for value of action
      case "test": test_function(); break;
    }
  }
}
 
//Function to check if the request is an AJAX request
function is_ajax() {
  return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
 
function test_function(){
  $return = $_POST;
 
	//ici les variables définies à remplacer par les valeurs de la requête mysql
 
	$pseudob=$_POST['pseudo'];
	$passwordb=$_POST['password'];
	$scoreb="7";
	$varpageb="150";
	$varclicb="30";
	$varmb="1";
	$varyb="1";
 
	if ($return["score"] == ""){
	$return["pseudo"] = $pseudob;	
	$return["password"] = $passwordb;	
    $return["score"] = $scoreb;
	$return["varpage"] = $varpageb;
	$return["varclic"] = $varclicb;
    $return["varm"] = $varmb;
	$return["vary"] = $varyb;
  }
 
  $return["json"] = json_encode($return);
  echo json_encode($return);
}
?>
Quelqu'un pourra peut-être me dire si ce que je veux faire est possible et/ou si je fais totalement fausse route en voulant modifier mon fichier php de cette façon et/ou si le tuto que j'ai suivi ne concerne en rien une liaison avec une bdd.

Ma bdd en ligne est parfaitement opérationnelle et je sais faire ce que je demande sans ajax (seulement avec php, mysql) mais bien sûr c'est la liaison avec ajax qui m'intéresse.

Par avance merci

Re: formulaire ajax php json et mysql

Posté : 18 juil. 2019, 11:22
par Saian
Salut, ton code sans base de données fonctionne très bien. Tu dois simplement avoir un problème avec la partie base de données...?

Re: formulaire ajax php json et mysql

Posté : 18 juil. 2019, 12:57
par philippe97278
bonjour,
merci de votre réponse

Je sais que le code fonctionne sans bdd.

la bdd et la connexion à la bdd sont tout à fait opérationnelles

ce qui ne fonctionne pas c'est le remplacement de
	$pseudob=$_POST['pseudo'];
	$passwordb=$_POST['password'];
	$scoreb="7";
	$varpageb="150";
	$varclicb="30";
	$varmb="1";
	$varyb="1";
par
 global $con;
 include_once 'connexionMysql.php';
// RECUPERATION D'UN ENREGISTREMENT
 
$peudo=$_POST['pseudo'];
$password=$_POST['password'];
 
$sql = "SELECT pseudo, password, score, varpage, varclic, scoresee, varm, varmdir, vary, varydir, vare, varedir1, varedir2, varc3dir, vargsdir, varn, vars, varcolosdir, varo, varmastadir1, varmastadir2, vari, vark, varkdir1, varkdir2, varkdir3, varr, varrdir FROM diamant WHERE pseudo = '$pseudo' and password = '$password'";
$resultat = $con->query($sql);
 
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysqli_fetch_assoc($resultat))
    {
// on affiche les informations de l'enregistrement en cours
 
	$pseudob=$data['pseudo'] ;
	$passwordb=$data['password'] ;	
	$scoreb=$data['score'] ;
       $varpageb=$data['varpage'] ;
	$varclicb=$data['varclic'] ;
	$varmb=$data['varm'] ;
	$varyb=$data['vary'] ;
 
    }
il doit falloir faire autrement, mais je ne sais pas comment...
cordialement

Re: formulaire ajax php json et mysql

Posté : 18 juil. 2019, 14:27
par or 1
sans bdd, il y a le code :
echo json_encode($return);
qui renvoie les infos au javascript
quel est le code équivalent dans la version bdd ?

Re: formulaire ajax php json et mysql

Posté : 19 juil. 2019, 14:54
par Saian
Bah je vois pas de problème avec ton code. Vérifie la requête, assure toi que $con->query n'est pas en erreur et que tu as bien une ligne de retournée.
Sinon j'imagine qu'un pseudo/password ne peut être présent qu'une fois en base de données donc pas la peine de faire une boucle while.

Re: formulaire ajax php json et mysql

Posté : 01 août 2019, 00:23
par philippe97278
Bonsoir,
Merci à tous de vos réponses
Ma question n'était pas très claire du fait mon manque de connaissance du fonctionnement d'ajax.
Je souhaitais, à partir d'un formulaire avec la saisie d'un couple pseudo / password, obtenir les données bdd liées à ce couple sous la forme d'inputs exploitable ensuite en php

avec ce qui suit, j'obtiens ce que je voulais

le code html essai4.html

Code : Tout sélectionner

<html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <script> function information() { var pseudo = $('#pseudo').val(); var password = $('#password').val(); $.ajax({ type: "POST", url: "essai4.php", data: { pseudo: pseudo, password: password } }).done(function (result) { $("#message").html(result); }); } </script> </head> <body> <table> <tr> <td>Pseudo:</td> <td><input type="text" name="pseudo" id="pseudo" /><td> </tr> <tr> <td>Password:</td> <td><input type="text" name="password" id="password" /><td> </tr> <tr> <td></td> <td><input type="button" name="submit" id="submit" value="Envoyer" onClick = "information()" /></td> </tr> </table> <div id="message"></div> </body> </html>
et le code php essai4.php

Code : Tout sélectionner

<?php $pseudo = $_POST['pseudo']; $password = $_POST['password']; define('DB_USER', 'root'); define('DB_PASSWORD', ''); define('DB_SERVER', 'localhost'); define('DB_NAME', 'diamant'); if (!$db = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME)) { die($db->connect_errno.' - '.$db->connect_error); } $sql = "SELECT score, varpage, varclic from diamant where pseudo='".$pseudo."' AND password='".$password."'"; $result = $db->query($sql) or die($mysqli->error); $row=mysqli_fetch_assoc($result); $json = json_encode($row);; $obj = json_decode($json); echo "score ...... "."<input type='text' id='score' name='score' value='" .$obj->{'score'}."' style='width:100px';><br>"; echo "varpage .. "."<input type='text' id='varpage' name='varpage' value='" .$obj->{'varpage'}."' style='width:100px';><br>"; echo "varclic .... "."<input type='text' id='varclic' name='varclic' value='" .$obj->{'varclic'}."' style='width:100px';>"; ?>
score, varpage et varclic étant les variables que je voulais récupérer dans des "inputs text"

Cordialement