J'essaie de faire une gymnastique qui me fait tourner la tête.. Je vais essayer d'être clair.
Sur mon site, j'ai une animation ludique en JS qui propose de "gagner" de manière aléatoire un dossier zip contenant des choses en lien avec le thème de mon site.
J'ai 2 articles, dans chaque article je propose 3 dossiers zip, donc 6 au total.
Voici comment se présente mon code HTML pour 3 de ses dossiers :
Jusque là, pas de problème. Là ou ça se complique, c'est que je souhaite voir la popularité des téléchargements, donc j'ai crée une petite interface administrateur sur mon site, qui me permettrait de compter le nombre de clics sur mes liens. :
(Les "0" sont le nombre de clic sur les liens)
Pour tester que tout fonctionnait correctement avant d'integer le tout à mon animation JS j'ai mis des simples liens dans mon code HTML en dehors de mon animation, comme ceci :
Bonjour je ne suis pas sur d'avoir compris ce que vous voulez faire par "fusionné le test" mais si vous voulez rendre votre code indépendant du nombre d'image en base de données j'imagine que vous pouvez utilisé PHP pour dynamisé votre code (généré de l'HTML)
pour généré les liens il vous faut faire une requête SQL qui lit les entrées pour les parcourir et créé les liens:
<?php
$db = new PDO('<MYSQL_CREDENTIALS>');
// selectionne les images dans la table qui les stock
// la où <TABLE_NAME> devrait être remplacé par le nom réel de la table
$statement = $db->query('SELECT * FROM <TABLE_NAME>');
// parcours les résultat
while($row = $statement->fetch(PDO::FETCH_ASSOC)) {
// génére les liens depuis les résultats
?>
<a href="click.php?id=<?= $row["id"] ?>"><?= $row["id"] ?></a>
<?php
}
?>
Pour construire le tableau javascript dynamiquement le plus simple et d'injecté une variable PHP dans une balise script pour que Javascript puisse l'exploité ensuite:
<script>
// enregistre le nombre de résultats dans une constante Javascript
// pour construire le tableau de liens
const COUNT_IMAGES = <?php $statement->rowCount(); ?>
// les valeurs statique:
// const ar_liens = ["images/test1.zip", "images/test2.zip", "images/test3.zip"];
// const ar_liens2 = ["images/test4.zip", "images/test5.zip", "images/test6.zip"];
// les valeurs dynamique:
const liens = [];
for(let i = 0; i < COUNT_IMAGES; i++) {
liens.push(`images/test${i}.zip`);
}
console.log(liens);
</script>
Ce n'est peut être pas la façon la plus recommandable de faire communiqué Javascript et PHP mais c'est quand même une façon de faire.
Dans d'autre cas Javascript demande l'information au serveur (a PHP) et PHP renvoie l'information (où pas) Javascript doit envoyé une requête au serveur pour que cela fonctionne, te peut voir le guide MDN de l'API Fetch pour en s'avoir plus.
Déjà je te remercie d'avoir pris le temps de me proposer une solution.
Je ne suis pas certain d'avoir tout suivi.. J'essaie de faire en sorte que le compteur de téléchargement soit actif dans mon animation JS quand un utilisateur va cliquer sur un lien test(X).zip. Je ne sais pas trop comment expliquer mon problème.
Je vais te montrer les parties essentiels de mon code. Si jamais tu as envie de te plonger dedans et que tu arrives à t'y retrouver.. confirme moi que nous sommes bien sur la même longueur d'onde. En attendant je vais me plonger un peu plus dans ta solution.
<?php
error_reporting(0);
include ("click-config.php");
?>
<?php
$sql = "SELECT * FROM " . $SETTINGS["data_table"] . " ORDER BY clicks DESC";
$result = $mysqli->query($sql) or die('request "requete SQL impossible" ' . $sql);
if ($result->num_rows > 0)
{
while ($row = $result->fetch_assoc())
{
?>
<a href="<?php echo $row["url"]; ?>" target="_blank"><?php echo $row["url"]; ?></a>
<?php echo $row["clicks"]; ?>
<?php
}
}
else
{
?>
<p>Auncuns résultats trouvés</p>
<?php
}
?>
click.php :
<?php
error_reporting(0);
include ("click-config.php");
// obtenir les détails du lien en fonction de l'ID
$sql = "SELECT * FROM " . $SETTINGS["data_table"] . " WHERE id='" . intval($_REQUEST["id"]) . "'";
$result = $mysqli->query($sql) or die('request "requete SQL impossible" ' . $sql);
// vérifier si l'identifiant du lien existe
if ($result->num_rows > 0)
{
$lien = $result->fetch_assoc();
// augmente le nombre de clic d'1
$sql = "UPDATE " . $SETTINGS["data_table"] . " SET clicks=clicks+1 WHERE id='" . intval($_REQUEST["id"]) . "'";
$mysqli->query($sql) or die('request "requete SQL impossible" ' . $sql);
header("Location: " . $lien["url"]);
}
else
{
echo "Le lien est manquant";
}
?>
click-config.php :
<?php
$SETTINGS["mysql_user"] = '***';
$SETTINGS["mysql_pass"] = '***';
$SETTINGS["hostname"] = '***';
$SETTINGS["mysql_database"] = '***_telechargements';
$SETTINGS["data_table"] = 'telechargements';
$mysqli = new mysqli($SETTINGS["hostname"], $SETTINGS["mysql_user"], $SETTINGS["mysql_pass"], $SETTINGS["mysql_database"]);
/* Je verifie la connexion */
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
?>
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
suggestion de présentation.