Pagina 1 din 1

Ordonare descrescatoare punctaj salvat in fisier

Scris: Lun Iun 24, 2013
de alexlemnean
Salut,
As dori sa fac un clasament cu punctaj iar clasamentul sa se actualizeze automat, adica sa se pune in ordine descrescatoare dupa un punctaj pe care eu il actualizez intr`un fisier de exemplu. Mai pe "babeste", am intr`un fisier punctajul iar cand modific punctajul si dau save la fisier, clasamentul sa se actualizeze automat in ordine descrescatoare pe site.
Daca mi`ai putea sugera cu ce ar trebui sa incep sau de unde.

Multumesc anticipat.

Ordonare descrescatoare punctaj salvat in fisier

Scris: Mar Iun 25, 2013
de MarPlo
Salut
Depinde cum ai datele /punctajele salvate (structurate) in fisier. Cate un numar pe fiecare linie sau separate printr-un anumit caracter, ori altfel mai complex?

Ordonare descrescatoare punctaj salvat in fisier

Scris: Mar Iun 25, 2013
de alexlemnean
Poi ma gandeam ca, clasamentul sa il fac cu <table>. De exemplu:

Cod: Selectaţi tot

<table border="1">
  <tr>
    <th>Echipa</th>
    <th>Meciuri Jucate</th>
    <th>Puncte</th>
  </tr>
  <tr>
    <td>Real Madrid</td>
    <td>3</td>
    <td>24</td>
  </tr>
  <tr>
      <td>Barcelona</td>
    <td>3</td>
    <td>23</td>
</table>
Acuma cand eu modific la Barcelona <td>23</td> cu <td>26</td> si dau save pe site sa apara Barcelona prima in tabel si Real Madrid a doua.

Ordonare descrescatoare punctaj salvat in fisier

Scris: Mie Iun 26, 2013
de MarPlo
Tabelele HTML nu sunt pentru stocarea datelor, pentru a fi preluate si aranjate. Tabelele HTML sunt pt afisare.
Pentru stocarea datelor poti folosi un tabel intr-o baza de date MySQL, de exemplu, pt. acel clasament, un tabel cu aceste coloane:
id - echipa - meciuri - puncte

Daca stii php si mysql, stocarea datelor in mysql ofera avantaj de a le prelua (selecta) usor in multe moduri.

Daca vrei sa tii datele in fisier pe server, poti folosi un format XML intr-un fisier ".xml".
Pt ce ai tu, fisierul .xml ar putea fi asa:

Cod: Selectaţi tot

<?xml version="1.0" encoding="utf-8"?>
<fotbal>
  <echipa name="Real Madrid">
    <meciuri>3</meciuri>
    <puncte>24</puncte>
  </echipa>
  <echipa name="Barcelona">
    <meciuri>3</meciuri>
    <puncte>23</puncte>
  </echipa>
</fotbal>
Apoi, cu SimpleXML preiei datele din fisierul .xml, le poti adauga intr-un array multi-dimensional, iar cu array_multisort() poti ordona elementele din array (ca in exemplu de mai jos).

- O alta varianta, mai usoara de a stoca datele in fisier text pe server, este in format JSON.
Exemplu fisier.txt cu datele in format JSON:

Cod: Selectaţi tot

{
"Real Madrid": {"meciuri": 3, "puncte": 24},
"Barcelona": {"meciuri": 3, "puncte": 26},
"Alta_Echip": {"meciuri": 2, "puncte": 21}
}
Apoi, cu file_get_contents() se citeste fisierul, cu json_decode() se transforma in array, si se ordoneaza cu array_multisort().
Exemplu:

Cod: Selectaţi tot

<?php
// preia sirul JSON din 'fisier.txt' si-l transforma in array
$fotbal = json_decode(file_get_contents('fisier.txt'), true);
$tmp = Array();       // folosit pt ordonare

// adauga in $tmp valorile de la 'puncte'
foreach($fotbal as &$ma)  $tmp[] = &$ma["puncte"];

// ordoneaza array-ul principal ($fotbal) folosind valorile din $tmp ordonate descrescator
array_multisort($tmp, SORT_DESC, $fotbal);

// Test
var_export($fotbal);

// Aici se pot afisa datele/ adauga in cod /tabel html
?>
- Daca stii php si lucrul cu Array, te descurci; daca nu, poti invata din lectiile si tutorialele din Cursul PHP-MySQL de pe site.

Ordonare descrescatoare punctaj salvat in fisier

Scris: Joi Iun 27, 2013
de alexlemnean
Pana aici am mai inteles :D, dar nu ma descurc la ultima parte
// Aici se pot afisa datele/ adauga in cod /tabel html.

Am incercat cu https://marplo.net/php-mysql/creare_tabel_array.html dar nu am reusit . Daca imi mai poti sugera cu ce sa incep, iti sunt recunoscator !

Multumesc mult !

Ordonare descrescatoare punctaj salvat in fisier

Scris: Joi Iun 27, 2013
de MarPlo
Poti incerca cu acest exemplu:

Cod: Selectaţi tot

<?php
// functie pt. ordonare array multi-dimensional
function sortMultiArray($arr, $k, $sort) {
  $tmp = Array();
  foreach($arr as &$ma)  $tmp[] = &$ma[$k];
  array_multisort($tmp, $sort, $arr);
  return $arr;
}

// Array cu datele ce vor fi afisate in tabel
$fotbal = array(
  'Real Madrid'=>array('meciuri'=>3, 'puncte'=>24),
  'Barcelona'=>array('meciuri'=>3, 'puncte'=>26),
  'Alta_echipa'=>array('meciuri'=>2, 'puncte'=>21)
);

/* Sau
// preia datele din fisierul cu sirul JSON si-l transforma in array
$fotbal = json_decode(file_get_contents('fisier.txt'), true);
*/

// Se creaza inceputul tabelului HTML
$tabel_html = '<table border="1"><tr><th>Echipa</th><th>Meciuri Jucate</th><th>Puncte</th></tr>';

// Daca array-ul are cel putin un element
if (count($fotbal) > 0) {
  // ordoneaza datele dupa 'puncte', descrescator
  $fotbal = sortMultiArray($fotbal, 'puncte', SORT_DESC);

  foreach($fotbal as $k => $v) {
    // Se adauga in tabel coloanele
    $tabel_html .= '<tr><td>' .$k. '</td><td>' .$fotbal[$k]['meciuri']. '</td><td>' .$fotbal[$k]['puncte']. '</td></tr>';
  }
}

// inchiderea tabelului HTML
$tabel_html .= '</table>';

// Se afiseaza tabelul obtinut
echo $tabel_html;
?>

Ordonare descrescatoare punctaj salvat in fisier

Scris: Joi Iun 27, 2013
de alexlemnean
Am reusit. Iti multumesc foarte mult si raman dator :) .

MULTUMESC !