CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Alimenter array JS

lvscarf
lvscarf
Niveau 6
17 décembre 2012 à 12:52:34

Salut tout le monde

Je souhaiterais rendre un contenu dynamique, ainsi voir par exemple des infos flash s'actualiser toutes les 5secondes. Le problème, c'est que je ne vois pas comment alimenter un tableau en javascript. Je précise que j'ai créé une fonction renvoyant toutes les valeurs sous forme d'un tableau, mais en php.
Je vous remercie d'avance pour vos réponses

vava740
vava740
Niveau 10
17 décembre 2012 à 13:17:27

Oriente-toi vers AJAX :ok:

Tiddo
Tiddo
Niveau 10
17 décembre 2012 à 13:50:01

En effet il faut utiliser AJAX. Tu renseignes ta callback vers ta page de traitement PHP et le tour est joué. :)

lvscarf
lvscarf
Niveau 6
17 décembre 2012 à 14:03:15

je vais tester, merci

lvscarf
lvscarf
Niveau 6
17 décembre 2012 à 14:24:51

Je ne trouve pas d'exemple concret =/ je vais continuer a chercher encore, si vous avez des pistes, avec du code en exemple, je suis prenneur

Tiddo
Tiddo
Niveau 10
17 décembre 2012 à 15:36:56

En 1 seconde sur Google. :(

/* Exemple d'utilisation asynchrone de l'API Ajax */
// Les fonctions anonymes définies dans "success" et "error" ne s'exécuteront qu'une fois l'appel Ajax terminé,
// et en fonction de la réussite ou de l'échec de celui-ci
$.ajax({
"url": "http://odata.netflix.com/Catalog/Titles" +
"?$filter=substringof('indiana jones',Name)&$format=json&$callback=callback",
"dataType": 'jsonp',
"type": 'GET',
"jsonpCallback": 'callback',
"success": function (data, textStatus, jqXHR) {
console.log("L'appel Ajax est une réussite.");
},
"error": function (jqXHR, textStatus, errorThrown) {
console.log("L'appel Ajax est un échec.");
}
});

Source : http://fguillot.developpez.com/

Tiddo
Tiddo
Niveau 10
17 décembre 2012 à 15:38:02

En PasteBin si ça peut t'aider :
http://pastebin.com/ZQdNTPw6

C'est du jQuery au passage.

deepblue
deepblue
Niveau 16
17 décembre 2012 à 16:11:43

Juste une remarque de terminologie, la callback c'est ce qui est appelé *après* quelque chose. Typiquement, il va faire une requête faire une page est une page est callback sur une fonction quand c'est terminé.

Tiddo
Tiddo
Niveau 10
17 décembre 2012 à 16:54:18

Exact. §

"Tu renseignes ta callback vers ta page de traitement PHP", j'ai mis "vers" au lieu de "et". :o))

lvscarf
lvscarf
Niveau 6
18 décembre 2012 à 18:05:59

Merci pour vos réponses, je vais tester ça!

lvscarf
lvscarf
Niveau 6
21 décembre 2012 à 09:22:56

Bon, après avoir fais quelques tests je me suis ramassé, j'ai fais ça a l'aide de corrigés, mais j'ai un peu de mal :
<script type="text/javascript">

function getRequeteHttp(){
var xhr=null;
if (window.XMLHttpRequest){ //navigateurs non MS
xhr=new XMLHttpRequest();
}
else
if (window.ActiveXObject){ //versions de MS IE
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
else {
alert("navigateur non comptatible Ajax...");
}
return xhr;
}

function recevoirReponse(xhr){
if (xhr.readyState == 4 && xhr.status==200) {
interval=setInterval("changeMessage()(xhr.response
Text)",4000);

//changeMessage()(xhr.responseText);
}
}

function getFlash(idFlash){
var xhr = getRequeteHttp();
xhr.open("POST", "include/chercherFlash.php", true);
xhr.onreadystatechange = function(){
recevoirReponse(xhr);
}
xhr.setRequestHeader('Content-Type','application/x
-www-form-urlencoded');

xhr.send(idFlash);
}

function changeMessage(){
var txtDocument=xhr.responseText;
texte=txtDocument.split('/');
alert(texte[1]);
document.getElementById("libelle").innerHTML=texte
[1];

document.getElementById("contenu").innerHTML=texte
[2];

document.getElementById("dateD").innerHTML=texte[3
];

document.getElementById("dateF").innerHTML=texte[4
];

}
</script>

<div id = "flash"> <span id="libelle"></span>
</div>

lvscarf
lvscarf
Niveau 6
27 décembre 2012 à 10:50:27

Le script Ajax :
<script type="text/javascript">

function getRequeteHttp(){
var xhr=null;
if (window.XMLHttpRequest){ //navigateurs non MS
xhr=new XMLHttpRequest();
}
else
if (window.ActiveXObject){ //versions de MS IE
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
else {
alert("navigateur non comptatible Ajax...");
}
return xhr;
}

function recevoirReponse(xhr){
if (xhr.readyState == 4 && xhr.status==200) {
setInterval(changeMessage(xhr.responseText),4000);

}
}

function getFlash(idFlash){
var xhr = getRequeteHttp();
xhr.open("POST", "chercherFlash.php", true);
xhr.onreadystatechange = function(){
recevoirReponse(xhr);
}
xhr.setRequestHeader('Content-Type','application/x
-www-form-urlencoded');

xhr.send(idFlash);
}

function changeMessage(){
var txtDocument=xhr.responseText;
texte=txtDocument.split('/');
alert(texte[1]);
document.getElementById("libelle").innerHTML=texte
[1];

document.getElementById("contenu").innerHTML=texte
[2];

document.getElementById("dateD").innerHTML=texte[3
];

document.getElementById("dateF").innerHTML=texte[4
];

}
</script>

le script php qui me permet d'afficher les bonnes valeurs :
$pdo = PdoAmicales::getPdoAmicales();
$idFlash = $_POST['idFlash'];
$req = "select * from flash where id=$id";
$rs = PdoAmicales::$monPdo->query($req);
$flash = $rs->fetchAll();

if (count($flash) != 0) {
echo $flash[0]['id'] . "/" . $flash[0]['libelle'] . "/" . $flash[0]['contenu'] . "/"
. $flash[0]['dateD'] . "/" . $flash[0]['dateF'] . "/";
}

Enfin, le jeu d'essais :
<div id="flash"><span id="libelle"></span>
<?php
$i = 1;
foreach ($desFlash as $uneFlash) {
$id = $uneFlash['id'];
?>
<a href='javascript:void(0)' onClick='getFlash(<?php echo $id; ?>.value)'><?php echo $i; ?></a>

<?php
$i++;
}
?>
</div>

je suis un peu perdu, je m’appuie sur plusieurs exemples, mais aucun alert de test ne fonctionne :s

Tiddo
Tiddo
Niveau 10
27 décembre 2012 à 18:38:38

Commence par expliquer complètement ce que tu veux faire en AJAX. Et mets ton code sur wall.deblan ou Pastebin parce que là je n'ai même pas envie de regarder.

lvscarf
lvscarf
Niveau 6
28 décembre 2012 à 00:44:56

pour le code JS :
http://pastebin.com/Rcz0AKms

pour la partie affichage :
http://pastebin.com/kbaFCB85

enfin la fonction ou je récupère la liste des flash :
http://pastebin.com/tSGH1qWm

explication : j'ai une div, qui contiendra des information flash, il peut y en avoir plusieurs, donc il faut les rendre visible, a intervalle régulière, sans que l'utilisateur ai a aller de lui même voir chaque flash.
J'avais donc pensé au JS, puis vous m'avez conseillé Ajax (j'ai un peu de mal avec le JS, je débute) avec le JS je fais appel a une page php qui récupère une flash en fonction de l'id de la flash envoyé, que je retourne sous forme d'une chaine de caractere, et que je split dans le JS pour l'affichage

deepblue
deepblue
Niveau 16
28 décembre 2012 à 01:31:56

Si c'était pour faire un banal copié/collé du code sans indentation avec les retours chariot de JVC, tu aurais plus t'abstenir de poster. Faites des efforts si vous avez envie qu'on vous aide.

lvscarf
lvscarf
Niveau 6
28 décembre 2012 à 09:07:59

pour le code JS :
http://pastebin.com/Rcz0AKms

pour la partie affichage :
http://pastebin.com/kbaFCB85

enfin la fonction ou je récupère la liste des flash :
http://pastebin.com/tSGH1qWm

(mis a jour)

lvscarf
lvscarf
Niveau 6
28 décembre 2012 à 09:09:54

pour la partie affichage
http://pastebin.com/WzDAVnek

pour le code JS :
http://pastebin.com/gGgfmQ9P

enfin la fonction ou je récupère la liste des flash :
http://pastebin.com/sh37esj8

Désolé je croyais qu'on pouvais mettre a jour le code sans avoir a donner un nouveau lien

deepblue
deepblue
Niveau 16
28 décembre 2012 à 16:28:38

Il y a déjà 2 problèmes ici :

$idFlash = $_POST['idFlash'];
$req = "select * from flash where id=$id";

1- mauvais nom de variable
2- injection SQL possible : tu utilises PDO donc tu prépares tes reqêtes et tu bind les paramètres.

lvscarf
lvscarf
Niveau 6
02 janvier 2013 à 09:22:38

Merci, je n'avais pas vus le problème de la variable, et pour ce qui est des injections sql, je m'étais pris la tete au début parce que... la fonction plantait ^^ pdo semble contrer directement les injections sql, enfin c'est ce que j'en ai déduit
Ça ne s'affiche toujours pas :s

lvscarf
lvscarf
Niveau 6
02 janvier 2013 à 09:39:41

j'ai ouvert la console web, et ça m'affiche :
SyntaxError : identifier starts immediatly after numeric literal

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware