Autor Zpráva
Levelson
Profil *
Jakým způsobem bych měl zapsat PHP podmínky když bych potřeboval následující:
Když kliknu na soubor jablka.php připočtu v txt souboru (pocet.txt) na prvním řádku +1 k " :1"
Budu zapisovat do textového souboru "pocet.txt" který bude mít následující strukturu:

1# jablka:1
2# hrušky:1
3# meruňky:1
...
Měsíček
Profil
Reaguji na Levelsona:

"Budu zapisovat do textového souboru "pocet.txt" který bude mít následující strukturu: "

Na takové mrkvovinky se nauč základy MySQL .. psát to do souboru je prasárna.

Jinak jestli ti jde o algoritmus, může znít následovně: "Načteš soubor do pole, rozdělíš na řádky vytáhneš pomocí [R] výrazů poslední znak končící u ":" a přičteš k němu +1 a vrátíš ho zpět.
<?php
/** 
  * Soubor se načte do pole, vyhledá se řádek "x" a tam to co je
  * za " : " .. obsah se uloží do $x[1]; to poté můžeš navýšit o 
  * jednu (tedy $x[1]++;) a nakonec znovu zapsat .. a s tím si už 
  * pohrej sám.
  *
  */
  $y = file("soubor.txt");
    preg_match("/:([\d])/", $y[$_GET["id"]], $x);
/**
  * Tedy jestli adresa webu bude http://cokoliv.cz/?id=2 a struktura
  * souboru bude následující :
  *
  * 1# jablka:1
  * 2# hrušky:2
  * 3# meruňky:3
  *
  * tak v $x[1] bude hodnota " 3 " .. poté co ji navýšíš ($x[1]++) bude
  * mít hodnotu " 4 " no a pak ji zpět zapiš a je hotovo.
  *
  */
?>
krteczek
Profil
<?php
//soubor s daty
$file = dirname(__FILE__) . '/data/ovoce.txt';

$ovoce = null;
if(!empty($_GET['druh'])) {

    //existuje soubor s daty?
    if(file_exists($file)) {
        //načteme jeho serializovaný obsah do array
        $ovoce = @unserialize(file_get_contents($file));
    }
    if(!is_array($ovoce)) {
        // pokud soubor neexistoval, nebo v něm nebyla uložená serializovaná array, tak vytvoříme prázdnou array
        $ovoce = array();
    }
    // přičteme k požadované proměnné
    $ovoce[$_GET['druh']]++;

    // změny uložíme do souboru
    file_put_contents($file, serialize($ovoce));
}
?>

přičemž tento soubor by se mohl volat jako obrázek s <img src="pocitame_ovoce.php?druh=hrusky"> a automaticky přidá do hrusek +1 a uloží
vypsat četnost je potom na takovém scriptu:
<?php
$ovoce = unserialize(file_get_contents($file));
if(is_array$ovoce)) {
    echo '<br>druh: počet';

    foreach($ovoce as $key => $foo) {
        echo '<br>' . $key . ': ' . $foo;
    }
}
?>

opraveno url na src u tagu img
Měsíček
Profil
Reaguji na krteczka:

"<img url="pocitame_ovoce.php?druh=hrusky">"

Což je fuj. Zaprvé url="" u tagu <img> neznám a zadalší by jsi nemohl ovlivnit přičtení .. co třeba
<img src="#" alt="#" onClick="location.href='pocitame_ovoce.php?druh=hrusky';">
Jinak skript je parádní :) mohu se jen zeptat k čemu konkrétně poslouží funkce "unserialize();" a "serialize();"?
krteczek
Profil
Reaguji na Měsíčka:

No jsem měl zase jednou inspiraci. Máš pravdu, je nutno vysvětlit proč ukládám serializiované pole (serialize a unserialize).

Do souboru ukládám serializované pole z toho důvodu, že se mi s ním lépe pracuje, je to velice chabá náhražka databáze ale je to lepší, než prostý řádkový zápis...

Když si načtu array ze souboru vím o všech položkách v ní hned, bez parsování textu (ač je to taky cesta);

Malými úpravami kódu lze docílit toho že bude moci přičítat jen to ovoce, které je dané v základu, v tomto scriptu lze kdykoliv přidat další ovoce jen zmínkou o jeho volání, což může být výhoda ale i nevýhoda.

Napsal jsem si malý systém běžící právě jen na array (nepoužívá databázi). Běží na něm jeden zahraniční web: http://www.reitclub-hahnbach.de/ (včetně knihy návtěv)
Levelson
Profil *
Díky všem, to co jsem potřeboval jsem z toho "vytunil"...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: