web-dev-qa-db-fra.com

obtenir des données de la base de données mysql à utiliser en javascript

J'ai un javascript qui construit dynamiquement une page HTML. La page html contient des zones de texte dans lesquelles l'utilisateur peut saisir des informations. Ces informations existent déjà dans une base de données. Je voudrais peupler les zones textarea avec la base de données dans la base de données mysql . J'ai un code php qui va se connecter à la base de données et construire une table html avec les données, donc je sais comment faire cela avec php Je ne sais pas comment faire cela depuis le javascrip. J'ai étudié les demandes d'ajax get, etc., mais je ne sais toujours pas comment faire cela.

14
user1892770

La manière la plus simple de le faire est probablement de renvoyer un fichier JSON par un fichier php. Alors disons que vous avez un fichier query.php,

$result = mysql_query("SELECT field_name, field_value
                       FROM the_table");
$to_encode = array();
while($row = mysql_fetch_assoc($result)) {
  $to_encode[] = $row;
}
echo json_encode($to_encode);

Si vous êtes contraint d'utiliser document.write (comme vous le notez dans les commentaires ci-dessous), attribuez à vos champs un identifiant id comme suit: <input type="text" id="field1" />. Vous pouvez référencer ce champ avec cette jQuery: $("#field1").val().

Voici un exemple complet avec le HTML. Si nous supposons que vos champs s'appellent field1 et field2, alors

<!DOCTYPE html>
<html>
  <head>
    <title>That's about it</title>
  </head>
  <body>
    <form>
      <input type="text" id="field1" />
      <input type="text" id="field2" />
    </form>
  </body>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
  <script>
    $.getJSON('data.php', function(data) {
      $.each(data, function(fieldName, fieldValue) {
        $("#" + fieldName).val(fieldValue);
      });
    });
  </script>
</html>

C'est l'insertion après la construction du HTML, ce qui pourrait être plus facile. Si vous souhaitez peupler des données pendant la construction dynamique du code HTML, vous souhaitez tout de même que le fichier PHP renvoie le code JSON, vous devez simplement l'ajouter directement dans l'attribut value.

20
wlangstroth

Avez-vous vraiment besoin de le "construire" à partir de javascript ou pouvez-vous simplement renvoyer le code HTML construit à partir de PHP et l'insérer dans le DOM?

  1. Envoyer la demande AJAX au script php
  2. Le script PHP traite la demande et construit la table
  3. Le script PHP renvoie la réponse à JS sous forme de code HTML codé
  4. JS prend la réponse et l'insère dans le DOM
1
Matt

Pour faire avec javascript, vous pouvez faire quelque chose comme ceci:

<script type="Text/javascript">
var text = <?= $text_from_db; ?>
</script>

Vous pouvez ensuite utiliser ce que vous voulez dans votre javascript pour mettre le texte var dans la zone de texte.

1
Josh

Vous ne pouvez pas le faire avec Javascript seulement. Vous aurez besoin d'un code côté serveur (PHP, dans votre cas) qui sert de proxy entre la base de données et le code côté client.

0
Mike Baranczak