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

PHP compter les téléchargements

Hypoflam
Hypoflam
Niveau 17
21 octobre 2015 à 14:56:19

Salut,
je dois compter le nombre d'images téléchargés par IP le résulat doit afficher ça

172.16.230.233: 2
172.16.230.133: 4

Mon code de base :d)

<?php
$tabLog=array(
array('ip'=>'172.16.230.233','get'=>'koala.jpg'),
array('ip'=>'172.16.230.133','get'=>'koala.jpg'),
array('ip'=>'172.16.230.133','get'=>'girafe.jpg'),
array('ip'=>'172.16.230.233','get'=>'elephant.jpg'),
array('ip'=>'172.16.230.133','get'=>'elephant.jpg'),
array('ip'=>'172.16.230.133','get'=>'elephant.jpg'),
);
foreach($tabLog as $unLog)
{
echo $unLog['ip'],'',$unLog['get'],PHP_EOL;

}
?>

Qui fonctionne mais je dois compter le nbr de dl et ont ma donné cette consigne : Le plus simple est de construire un nouveau tableau associatif dont la clé est l'ip, et la valeur le nombre d'acces de cette ip.
Appelons ce nouveau tableau $stats On initialise $stats à un tableau vide.
On parcourt $tabLog élément par élément, par exemple avec ForEach
Si l'ip courante n'existe pas encore dans $stats, alors on crée une entree dans $stats avec en clé l'ip courante,et en valeur 1
Si l'ip courante existe déja dans $stats, alors on incrémente la valeur correspondante
vous utiliserez la fonction intégrée de PHP array_key_exists() pour tester l'existence d'une clé dans le tableau $stats

Le code que j'ai testé sur Ideone mais qui ne marche pas je ne sais plus quoi faire...

<?php
$tabLog=array(
array('ip'=>'172.16.230.233','get'=>'koala.jpg'),
array('ip'=>'172.16.230.133','get'=>'koala.jpg'),
array('ip'=>'172.16.230.133','get'=>'girafe.jpg'),
array('ip'=>'172.16.230.233','get'=>'elephant.jpg'),
array('ip'=>'172.16.230.133','get'=>'elephant.jpg'),
array('ip'=>'172.16.230.133','get'=>'elephant.jpg'),
);
$a=0;
$b=0;
$stats=array (
array('172.16.230.233' => $a),
array('172.16.230.133' => $b)
);
foreach($tabLog as $unLog)
{
echo $unLog['ip'],'',$unLog['get'],PHP_EOL;

}

if (array_key_exists('172.16.230.233','172.16.230.133', $stats)) {
echo "172.16.230.233 => $a++";
echo "172.16.230.133 => $b++";
}
?>

ça prend beaucoup de place mais j'arrive pas à spoiler le code :hap:
Merci d'avance :)

Candystand
Candystand
Niveau 10
21 octobre 2015 à 15:50:34

Ca bloque où?

A première vue je dirais que ton echo fail car tu mets des ", " et non des "."

Hypoflam
Hypoflam
Niveau 17
21 octobre 2015 à 16:03:22

Il m'affiche ça https://ideone.com/UBVyCF

PHP Notice: Array to string conversion in /home/QcHNxU/prog.php on line 22
PHP Warning: array_key_exists() expects exactly 2 parameters, 1 given in /home/QcHNxU/prog.php on line 22

Soit la ligne où il y a mon if :hap:

Candystand
Candystand
Niveau 10
21 octobre 2015 à 16:07:05

Autant pour moi pour le echo

En ce qui concerne ton erreur, tout simplement tu as envoyé une seule chaine de caractère à la fonction, tu as en effet concatené tes ip avec ton array :hap:

Je t'invite à lire ça http://php.net/manual/fr//function.array-key-exists.php

Hypoflam
Hypoflam
Niveau 17
21 octobre 2015 à 16:15:04

Le 21 octobre 2015 à 16:07:05 Candystand a écrit :
Autant pour moi pour le echo

En ce qui concerne ton erreur, tout simplement tu as envoyé une seule chaine de caractère à la fonction, tu as en effet concatené tes ip avec ton array :hap:

Je t'invite à lire ça http://php.net/manual/fr//function.array-key-exists.php

J'ai pas compris ce que tu as dit, et justement j'ai C/C ce code et je l'ai adapté à mon code mais rien n'y fait...
Je suis perdu, je me dit que je dois peut-être faire un foreach pour mon tableau $stats mais j'en sais rien... :-(

Candystand
Candystand
Niveau 10
21 octobre 2015 à 16:27:59
if (array_key_exists('172.16.230.233'.'172.16.230.133'. $stats))

Tu as utilisé le "." ici, donc php le comprends comme si t'envoyais une seule chaîne de caractère car le "." permet de concaténer des chaînes de caractères (les assembler, au cas où tu connaîtrais pas le sens).

Mais dans tous les cas je ne pense pas que cette fonction soit celle qui résolve ton pb. En effet, tu auras besoin là de l'exécuter comme suit:

if (array_key_exists('ip', $stats))

Or peu importe l'ip, ta clé 'ip' existe, et c'est pas ce que tu veux je suppose :(

Je dois mal m'exprimer mais en tout cas selon moi tu dois trouver une autre fonction qui fait le taf

Hypoflam
Hypoflam
Niveau 17
30 octobre 2015 à 18:26:51

Re bonsoir,

Suite à un gros problème d'internet je n'ai pas pu avancer sur mon code.

Mon nouveau code

<?php
$tabLog=array(
array('ip'=>'172.16.230.233','get'=>'koala.jpg'),
array('ip'=>'172.16.230.133','get'=>'koala.jpg'),
array('ip'=>'172.16.230.133','get'=>'girafe.jpg'),
array('ip'=>'172.16.230.233','get'=>'elephant.jpg'),
array('ip'=>'172.16.230.133','get'=>'elephant.jpg'),
array('ip'=>'172.16.230.133','get'=>'elephant.jpg'),
);
$stats=array (
'172.16.230.233' => $ip,
'172.16.230.133' => $ip2,
);

$a=$ip+1;
$b=$ip2+1;

foreach($tabLog as $unLog)
{
echo $unLog['ip'],'',$unLog['get'],PHP_EOL;

}

if (array_key_exists('172.16.230.133', $stats)) {
echo '172.16.230.133' => $ip2++;
}

if (array_key_exists('172.16.230.233', $stats)) {
echo '172.16.230.233' => $ip++;
}
?>

Quand je l'execute sur Ideone il me donne ça en erreur et j'arrive pas à la trouver

PHP Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ';' in /home/VvN8la/prog.php on line 25

C'est urgent je dois rendre mon code dimanche soir !

Merci d'avance :)

fluxies
fluxies
Niveau 17
30 octobre 2015 à 21:07:32

Relis ton code.

Tu utilse $ip et $ip2 qui sont undefined.
Dans tes echo tu as un '=>' qui un element de syntaxe dans une déclaration d'array, il n'a rien à faire ici.

Sinon j'ai pas tout compris mais logiquement ca ferait un truc ca.


$stats = array(
'172.16.230.133' => 0, // Aucun telechargement sur cette adresse
'172.16.230.233' => 0, // La meme
);

$mesTelechargementsPredefinisEnDur = array(
array('ip'=>'172.16.230.233','get'=>'koala.jpg'),
array('ip'=>'172.16.230.133','get'=>'koala.jpg'),
array('ip'=>'172.16.230.133','get'=>'girafe.jpg'),
array('ip'=>'172.16.230.233','get'=>'elephant.jpg'),
array('ip'=>'172.16.230.133','get'=>'elephant.jpg'),
array('ip'=>'172.16.230.133','get'=>'elephant.jpg'),
);

// JE BOUCLE SUR MES TELECHARGEMENTS DEFINIS EN DUR
foreach ($$mesTelechargementsPredefEnDur as $telechargementInfo)
{
 // La premiere fois quon passe ici : 
// $telechargementInfo == array('ip'=>'172.16.230.133','get'=>'koala.jpg')

 // Si ya '172.X.X133' dans les dl predef :
if(array_key_exists($stats, $telechargementInfo['ip'])
   $stats[ $telechargementInfo['ip'] ] += 1; // Je rajoute un à $stats['172...']
} else { // sinon
 // Je cré la clé dans stats et au passage met 1 dans son compteur
 $stats[ $telechargementInfo['ip'] ] = 1;
}

Ton soucis c'est que tu n'a pas encore bien compris le système de tableaux, et t'auras du mal tant que ce sera pas rentré. Fais des tests, continue à essayer et ca viendra tout seul

Ps : Pour array_key_exist je ne me souviens plus de l'ordre des arguments.

bonne chance

Tartichaude
Tartichaude
Niveau 12
31 octobre 2015 à 10:44:50

Tu mets des virgules après tes derniers élements de tableau, j'pense pas que le compilateur apprécie ce genre de troll.

fluxies
fluxies
Niveau 17
31 octobre 2015 à 18:47:53

Il n'y a pas de compilateur en PHP.
La virgule après le dernier élément de l'array (contrairement au javascript) ne change rien. Je vous conseille même de le faire par réflexe car on se retrouve souvent à ajouter un élément

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