Aide sur code PHP

Bonjour,
Je cherche à récupérer (pour des stats) un seul candidat d’une liste de X candidats.
Chaque ligne de la table Mysql représente un bureau de vote (I V Abs…) et X colonnes pour chaque candidat. Pour chaque candidat il y a 5 colonnes prenom1 nom1 parti1 voix1 pourcent1
Je crois avoir tout essayé pour récupérer les éléments d’un seul candidat en partant sur ce qui les distingue le nom du parti.
Je cherche donc la colonne qui contient “LFI” et la colonne +1 je devrais avoir le nbr voix et le % pour colonne +2.
Je récupère les données, mais pas toutes les bonnes de chaque ligne.
Je pars avec un select
Puis avec un for je parcours les colonnes pour récupérer “LFI” mais bon ce n’est pas satisfaisant à 100%
Comment feriez-vous ?
Merci,
Michel

Bonjour,

ça dépend beaucoup de la structure de ta bdd. Si lesite candidats sont dans le même ordre à chaque ligne, i.e. ont toujours le même nom de colonne, tu peux régler ça avec le select. Sinon, tu vasur devoir créer un objet supplémentaire pour stocker les candidats à chaque fois, trouver le bon et faire tes stars.
Si tu dis que tu ne trouve pas les même résultats à chaque ligne c’est probablement qu’ils sont trié en fonction de leur score pour chaque bureau (data.gouv je suppose). Et dans ce cas, il n’y a que la deuxième méthode.
Le php n’étant pas mon langage, je ne peux pas trop aider sur l’implémentation concrète en revanche. Pour plus de précisions, il faudrait du code…

Bonjour,
Merci pour ta réponse.
Justement les données sont fournies par ordre de nbr voix. Du coup le résultat qui en sort et aléatoire.
J’ai pensé de traiter le problème dès le début dans le $recup qui se présente de cette faon dans la variable :
"2ème circonscription Bureau n°0001
Inscrits 426 Blancs et Nuls 2.47%
Votants 243 Abstention 42.96%

Résultats définitifs
37,55%
soit 89 voix
Matthieu PEYRAUD
La République en marche - MoDem
22,36%
soit 53 voix
Fabrice BRUN
Les Républicains
13,08%
soit 31 voix
Alain JOFFRE
La France insoumise
12,66%
soit 30 voix…"
J’arrive à récupérer la ligne d’ “Alain jusqu’à voix” avec mb_eregi successifs, mais comment faire pour la placer en tête de la variable recup tout en supprimant cette ligne initiale ?
Il me semble que le traitement serait mieux ainsi plutôt que passer via enregistrement bdd et recup ou bien passer par des fichiers texte (fopen).
Si une idée.
Merci,
Cdl
Michel

Bonjour,
Voici un début, mais après…
$recup=“
2ème circonscription Bureau n°0001
Inscrits 426 Blancs et Nuls 2.47%
Votants 243 Abstention 42.96%
Résultats définitifs
Matthieu PEYRAUD
La République en marche - MoDem
22,36%
soit 53 voix
Fabrice BRUN
Les Républicains
13,08%
soit 31 voix
Alain JOFFRE
La France insoumise
12,66%
soit 30 voix
Sabine BUIS
Parti socialiste
5,49%
soit 13 voix
Thierry ARSAC
Front national
4,22%
soit 10 voix
Guillaume VERMOREL
Ecologiste
2,11%
soit 5 voix
Amandine MOLLIER
Divers droite
0,84%
soit 2 voix
Carole DAUDAN
Parti communiste français - Front de gauche
0,84%
soit 2 voix
Laurent TOUZET
Divers droite
0,42%
soit 1 voix
Caroline BALDAN
Autres/Divers
0,42%
soit 1 voix
Jean-Pierre MÉJEAN
Debout la France
0%
soit 0 voix
Coralie LAURENT
Extrême gauche
0%
soit 0 voix
Alain COPPENS
Extrême droite”;
$cpt_candidats= substr_count($recup, ‘%’);
$cpt_candidats = $cpt_candidats;

$lfi = 3;
$recup = str_replace(“soit”,"",$recup);
$recup = str_replace("%",“XX”,$recup);
$recup = explode(“XX”,$recup);
for( $i=0;$i<=$cpt_candidats;$i++ )
{
$tablo[]= $recup;
}
$i=0;
foreach( $tablo as $valeur ) //sachant que $valeur peut être lui même un tableau ça te permet de récupérer directement une valeur
{
$valeur1=trim($tablo[$i][$i]);
echo ‘’.$i.’ - ‘.$valeur1.’
‘;//’.$valeur2.’ ‘.$valeur3.’.$valeur4.’ ‘.$valeur5.’’ ;
$i++;
}
Ce qui affiche pour ce bureau :


Castries 2ème circonscription
Bureau 1 inscrits 426
Votants 243 Blancs_nuls 2.47% Voix blancs et nuls 6
Exprimés 237 Abstention 42.96% Voix abstention 183
nbr candidats 13
0 - Matthieu PEYRAUD La République en marche - MoDem 22,36
1 - 53 voix Fabrice BRUN Les Républicains 13,08
2 - 31 voix Alain JOFFRE La France insoumise 12,66
3 - 30 voix Sabine BUIS Parti socialiste 5,49
4 - 13 voix Thierry ARSAC Front national 4,22
5 - 10 voix Guillaume VERMOREL Ecologiste 2,11
6 - 5 voix Amandine MOLLIER Divers droite 0,84
7 - 2 voix Carole DAUDAN Parti communiste français - Front de gauche 0,84
8 - 2 voix Laurent TOUZET Divers droite 0,42
9 - 1 voix Caroline BALDAN Autres/Divers 0,42
10 - 1 voix Jean-Pierre MÉJEAN Debout la France 0
11 - 0 voix Coralie LAURENT Extrême gauche 0
12 - 0 voix Alain COPPENS Extrême droite


Maintenant comment faire pour que la ligne 3 devienne la ligne 0 et la ligne 0 la ligne 1 ?
Cdl,
Michel

Bonjour,
Avant réveillon j’ai fait autrement
recup num ligne (qui sera col de la Bdd)
enregistrement Bdd
update avec le lfi qui devient col 1 et le 1 qui devient l’ex col de lfi

Si vous pouvez m’aider sur les regex (mettre un trait d’union entre deux mots en majuscule, qui se suivent, exemple : DUPONT DURAND qui doit s’enregistrer dans la Bdd comme ceci DUPONT-DURAND).
Pour l’instant je récupère les deux noms… sans trait d’union à la sortie…
Merci,

Par contre fait gaffe, peut-être que tu l’as vu, mais il y a une erreur de split : le nombre de voix est attribué au candidat suivant.
Pour le reste, si ça marche c’est l’important !

Bonjour,
Je te remercie pour cette observation.
Mais l’affichage de la récup :
Matthieu PEYRAUD La République en marche - MoDem 22,36% soit 53 voix
Fabrice BRUN Les Républicains 13,08% soit 31 voix
Alain JOFFRE La France insoumise 12,66% soit 30 voix
Et l’affichage du résultat (avant enregistrement dans Bdd)
0 - Matthieu PEYRAUD La République en marche - MoDem 22,36
1 - 53 voix Fabrice BRUN Les Républicains 13,08
2 - 31 voix Alain JOFFRE La France insoumise 12,66
doit être vu comme ceci dans la Bdd
0 - Matthieu PEYRAUD La République en marche - MoDem 22,36 53 voix
1 -Fabrice BRUN Les Républicains 13,08 31 voix
2 - Alain JOFFRE La France insoumise 12,66 30 voix

Je viens de vérifier sur 2 bureaux avec la copie du copié et le résultat Bdd et c’est bon.
Récup
36,83%
soit 200 voix
Coralie DUBOST
La République en marche - MoDem
Bdd
Coralie DUBOST LREM 200 36.83

Comme j’ai vérifié le résultat des “stats” à la main sur plusieurs bureau dans 2 villes différentes et que ça “cadre” je pense que tout est bon maintenant.
Par curiosité tu peux aller voir la “Démo

Merci,
Michel

C’est pas mal. Par contre tu t’es basé sur quelles données de départ ? Parce que ce que tu donne comme exemple ici ressemble aux résultats de bureaux…

Bonjour,
J’ai pris les résultats sur le journal l’IMmonde
Ici pour les présidentielles
et là pour les législatives
En espérant qu’il ne supprime pas ces deux pages…
Le but justement c’est de pouvoir cibler la perte de voix entre les présidentielles et les législatives par bureau. Car, cette perte reste une énigme. Les électeurs seraient-ils assez idiots pour ne pas comprendre l’importance des législatives. Malgré le battage médiatique avec le FN qui sert d’épouvantail…
A+
Michel

J’ai fait grosso-modo le même boulot pour une autre orga. Un petit conseil : les résultats par bureaux sont dispo sur data.gouv.fr, pour les deux élections. Ils donne un txt, mais en fait c’est un csv. C’est plus simple à parser, ça vient du ministère, et c’est des données publiques, dont tu es sûr qu’elles ne disparaîtront pas.
Le débat sur la perte est long, mais tu as pêle-mêle la “prime au vainqueur”, le découragement, et tout simplement le vote utile (pas forcément vers LREM d’ailleurs), et les voix du PCF là ou il n’y a pas eu accord. Ce n’est pas de l’idiotie en tout cas.

Bonjour,
Oui je sais, mais j’ai commencé le code juste après les législatives et je me suis basé sur les pages de l’IMmonde. Quand j’ai repris après les vacances, les data étaient sortis, mais bon je n’ai pas voulu tout reprendre.
Je suis allé voir data.gouv.fr et je ne trouve que des fichiers en xml, certes peuvent être traités, mais peut-être moins simple que des CSV.

Pour les législatives :

Pour les présidentielles :

Par contre je trouve dommage que le code ne soit pas ouvert (ou alors je ne l’ai pas trouvé) et qu’il faille s’inscrire pour consulter les résultats. Et pour le coup c’est politique :slight_smile:

Bonjour,
Merci pour les liens.
Je vais voir tout ça.
Une question tu as fait des tables Mysql par circo par département ou la France entière dans une seule table (assez grosse du coup) ?
Merci,
Michel

Une seule table. Franchement, en dessous de 250 mille lignes, les diminutions de perf sont négligeables. Et encore, jusqu’au million en general ca roule, si les tables sont bien indexé.