11521 sujets

JavaScript, DOM et API Web HTML5

Pages :
(reprise du message précédent)

["test","d","admin@siteamap.com","4","1","0","sfde","sdf"] c'est un tableau, c'est pas du json.
Fl0riba a écrit :
Bonjour,

@JENCAL: j'ai beau copier coller l'exemple qui fonctionne mais sur mon site il ne fonctionne pas je comprend pas...


il faut pas copier coller tel quel.. il faut l'adapter à ton code.
Si quand tu fais ça
				console.log(data);
				$('input').each(function(){
					$(this).val(data)
					i++;
				});


tu as ça
["test","d","admin@siteamap.com","4","1","0","sfde","sdf"]

alors il suffit de faire ça

				console.log(data);
				$('input').each(function(){
					$(this).val(data[j])
					i++;
				});


J'ai écrit volontaire data.[j] au lieu de i car sinon ça chie. mais faut remplacer j par i
Je vais remettre les deux page de code pour voir tous l'ensemble et mettre le résultat des pages.


<?php include('Include/General/connexion.php');?>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<section class="seccreacompte">
<SCRIPT>
<!--
$(document).ready(function() {
    $('select#nom').change(function() {
		//On récupère le nom
		var value = $(this).val();
                //Index
                var i = 0;
		//On prépare l'Ajax
		$.ajax({
			//On indique le fichier ou aller consulter 
			url: "Include/Profil/traitement.php",
			//Le type de l'envoi (POST ou GET)
			type: "GET",
			//On indique que le résultat sera un tableau JSON      
			dataType: "JSON",
			//On lui donne le nom de la personne
			data: {nom : value},
			success:function(data)
			{
				//Nécessite d'avoir les informations du tableau dans le 
				//même ordre que les inputs
				console.log(data);
				$('input').each(function(){
					$(this).val(data[i])
					i++;
				});
			}
		});

	});
});
//-->
</SCRIPT>


	<form method="POST" action="" class="formClassique">
		
		<fieldset class="creacompte">
			   <legend><h3>Infos compte</h3></legend>
			<table>
				<tr><td><br><br>
					<select id="nom" .change>
					<option value=''>Aucun</option>
						<?php
							$requete="select * from Utilisateurs order by login;";
							$res= $mysqli->query($requete) or die ("erreur dans la requete");
							$ligne=mysqli_fetch_array($res);
							while($ligne)
							{
								echo'<option value='.$ligne['login'].'>'.$ligne['login'].'</option>';
								$ligne=mysqli_fetch_array($res);
							}
						?>
					</SELECT>
				</td></tr>
				<tr><td><p> Login :   </td><td> <input type="text" /required></p></td></tr>
				<tr><td><p> Mot de passe:   </td><td> <input type="text" /required></p></td></tr>
				<tr><td><p> Mail : </td><td><input type="email" /required/></p></td></tr>
				<tr><td><p> Grade : </td><td><input type="text" /required/></p></td></tr>
				<tr><td><p> Mail : </td><td><input type="text" /required/></p></td></tr>
				<tr><td><p> Nom : </td><td><input type="text" /required/></p></td></tr>
				<tr><td><p> Prenom : </td><td><input type="text" /required/></p></td></tr>
						
			</table>
		</fieldset>
			<br>
			<center><p><input type="submit" />
			<input type="reset"/></p>
	</form>
</section>


Donc avec ce code la envoi le nom donc la "test" a la page traitement.php en methode GET.


<?php
include('../General/connexion.php');
$nom = $_GET['nom'];
$informations = "";


if ($result = $mysqli->query("SELECT * FROM Utilisateurs WHERE login='$nom'")) 
{

    while ($row = $result->fetch_array(MYSQLI_NUM)) 
	{
		$informations[] = $row;
	}
	
    /* Libération du jeu de résultats */
    $result->close();
}
else
{
	printf("Message d'erreur : %s\n", $mysqli->error);
}

$informations = $informations[0];

echo json_encode($informations);
?>


Ce code reçoit le nom "test" puis il le traite. a la fin dans la variable $informations il y a ça :

["test","d","admin@siteamap.com","4","1","0","sfde","sdf"]

Jusqu’à la je pense que ça va tous ce passe bien mais apres plus rien ne ce passe je sais pas par ces informations et aucuns inputs se remplissent.[/i]
Comme l'a précisé JENCAL, pense bien à faire un data[tonIndexDeLecture] et non pas un simple data qui renverra toujours ton tableau en entier (qui pour moi n'est pas vraiment du JSON, mais que les validateurs acceptent, alors... Smiley confused ) :
$('input').each(function(j){
  // console.info(data[j])  // À décommenter pour tester tes valeurs
  $(this).val(data[j])
})

Modifié par SolidSnake (31 Jul 2015 - 07:35)
Comment je peut rajouter l'id a chaque élément du tableau ?

je vois pas comment je peut passer de ça:

["test","d","admin@siteamap.com","4","1","0","sfde","sdf"]

A ça :

[{"id":"11111"},{"id":"22222"},{"id":"33333"},{"id":"55555"},{"id":"66666"},{"id":"77777"},{"id":"8888"},{"id":"99999"}]}

Je part en vacance demain matin jusqu'à fin août je ne pourrais donc pas travailler sur le code mais je lirais sur ma boite mail ce que vous écrivez.
Bonjour,

Je n'ai pas testé, mais sur ta page PHP je vois un truc du genre :
$row = $result->fetch_array(MYSQLI_ASSOC); // si tu précises le nom de toutes les colonnes que tu souhaites (et donc pas *) dans ton SELECT
echo json_encode($row);

// ou

$row = $result->fetch_array(MYSQLI_NUM);
$tableau["nom"]=$row[0];
$tableau["lettre"]=$row[1];
$tableau["email"]=$row[2];
...
echo json_encode($tableau);
Pages :