Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nadpisywanie wartosci
Forum PHP.pl > Forum > Przedszkole
Anonymous
Czesc, pisze prosty rotator banerow z kontrola ilosci wyswietlen. Wszystko sprawnie do momentu nadpisywania odczytanych z pliku tekstowego danych.

[php:1:1c7e157f44]<?php
$wyniki = "banery/wyniki.txt";
$wpis = file($wyniki);

$tab = explode(" | ", $wpis[$liczba-1]);
echo "$tab[0] :: $tab[1] :: $tab[2]<br>";
$tab[2]+=1;

$tmp = implode(" | ", $tab);

for($i=0; $i<$ile; $i++)
{
if ($i!=($liczba-1))
{
$nowa_tab[]=$wpis[$i];
} else {
$nowa_tab[]=trim($tmp)."rn";
}
}

$fp=fopen($wynik, "r+");
flock($fp,2);

for ($n=0; $n<count($wpis); $n++)
{
fwrite($fp, str_replace("r", '', implode('', $nowa_tab)));
}

flock($fp,3);
fclose($fp);
?>[/php:1:1c7e157f44]
Dziala, tzn. dopisuje do tablicy nowe wartosci, ale w pliku tekstowym nadpisuje nowe wartosci i je na dodatek dopisuje. Nie ma wiec ukladu pierwotnego:

lp | firma_x | baner_firmy_x | wyswietlono

tylko zwielokrotniona ilosc wpisow: 2, potem 4 itd. Czy ktos moze mi pomoc to poprawic? Dziekuje z gory.
rachwal
Tak probowales ?

$fp=fopen($wynik, "w");

powinno pomoc.
Anonymous
Nie pomoglo, zmienialem na rozne tryby r+, w, w+. Z kazdym razem dopisuje, tyle ze przy w+ po kazdym wpisie jest znak przejscia do nowej linii.
questionmark.gif
rachwal
Zacznijmy od tego ze calosc jest napisana niezmiernie niechlujnie.
Na poczatek : gdzie zainicjowales zmienna $liczba :?:
No chyba ze nie wkleiles nam calosci kodu.
Anonymous
Powiedz mi proszę co to znaczy niechlujnie, jeśli chodzi o kod. Potem przedstaw wersję tego samego kodu jak wyżej, którą uważasz za "chlujną".

Cytat
No chyba ze nie wkleiles nam calosci kodu.
A po co cały kod wklejać? Przedstawilem fragment, z którym mialem problem. $liczba to po prostu liczba wygenerowana losowo dla banera do wyswietlenia.

Jak nie umiesz albo nie masz zamiaru pomóc, a tylko posty nabijać i wartościować kod to lepiej siedź cicho.
rachwal
Brak mi slow. Masz racje -- nie umiem. Szancunku troszke czlowieku! Mam nadzieje ze Ci tu nikt nie pomoze. Ja na pewno nie, choc mialem szczere checi, ale przeciez ja nie umiem...

Jesli administrator forum uwaza ze "nabijam sobie posty" (o zgrozo), to prosze odjac te 3 z mojego profilu...

BTW: zarejestruj sie, tez bedziesz mogl sobie "nabijac".
Anonymous
Cytat
Mam nadzieje ze Ci tu nikt nie pomoze.
Przynajmniej piszesz z duzej litery gdzie trzeba smile.gif.
Rozwiazanie znalazlem zanim odpowiedzialem na bezczelny post o niechlujnym kodzie. Moglem je podać wczesniej, ale bylem ciekaw czy i jak zareagujesz. Końcówka kodu wygląda tak:

[php:1:ca7c293b2c]<?php

$fp=fopen($wynik, "w+");
flock($fp,2);
fwrite($fp, str_replace("r", '', implode('',$nowa_tab)));
flock($fp,3);
fclose($fp);

?>[/php:1:ca7c293b2c]
Kod w całosci zlicza ilość wyświetleń banerów i z tablicy wybiera następny. To rozwiązanie ma jednak małą wadę: użytkownik widzi ten sam baner tak długo, aż nie odświeży strony. Można temu zapobiec wyłączając cachowanie strony w metatagu. Gdyby ktos mial inny pomysł, to prosze dopisać.

Oczywiścia na rachwala nie licze, ale kto wie winksmiley.jpg.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.