Witam! Zrobiłem parę skryptów php, i cala moja praca siedzi sobie w pliku "liczby.txt". Jak sama nazwa wskazuje, są to liczby :D. Są one zapisane w formie "1+1+1+1+1-1-1+1-1+1 itd...".i tutaj pojawia się mój problem. Jak odczytać ten plik, w formie sumy, a nie ciągu znaków "1+1-1..."? Proszę o pomoc.
Jeżeli plik wygląda tak:
1+3+2+5+9
A chcesz obliczyć jego sumę, to możesz skorzystać z funkcji explode
(http://php.net/manual/en/function.explode.php).
Zamieni ona wyżej wymieniony ciąg znaków na tablicę:
$liczby = explode("+", $ciag_znakow);
echo $liczby[0]; //1
echo $liczby[1]; //3
echo $liczby[2]; //2
//itd
Potem wystarczy ją tylko do siebie dodać i mamy wynik.
wszystko byłoby dobrze, tylko zamiast liczby widać napis "array". Co to znaczy :p ?
No więc może od początku. Chciałbym zrobić punktacje (tzn 2 przyciski, jeden like, drugi dont like). Wszystko mi dobrze idzie, ale nie wiem, jak napisać skrypt, który podlicza punkty (za like "+1", za dlike "-1"). Próbowałem zrobić skrypt z zapisaniem do pliku, ale nie wychodzi. Oto mój skrypt:
<?
$like = $_POST[like];
$ile = fopen("save.txt","r");
$licz = fread($ile,"123");
fclose($ile);
if($like == "like")
{
$just = fopen("save.txt","a");
fwrite($just,"+1");
fclose($just);
}
elseif($like == "dlike")
{
$just = fopen("save.txt","a");
fwrite($just,"-1");
fclose($just);
}
$liczby = explode("+", $ile);
echo"$liczby";
?>
Ktoś pomoże :D ?
Musisz dodać do siebie elementy tablicy.
Np.tak:
$suma = 0;
for ($I=0; $I<count($liczby); $I++)
$suma += $liczby[$I];
Nie wiem co o tym myśleć. Wszystko śmiga jeśli liczby wpisze ręcznie:
<?php
echo(1+1+1-1+1-1+1);
?>
Natomiast jeśli chcę odczytać taki sam zapis cyferek, ale z pliku, to nie działa!
<?php
$czyta = fread($plik,ilosc_tam); //czyta ten plik z tymi jedynkami :D
echo($czyta);
?>
w tym wypadku wyświetla mi się cały plik w postaci "1+1+1-1+1-1itd.", a chciałbym żeby był sumą tych liczb. Proszę o pomoc.
Przeczytaj mój post powyżej.
Musisz ręcznie dodać każdy element tablicy.
Ewentualnie pokombinuj z funkcją eval
.
To może znasz jakiś łatwiejszy skrypt, na ocenianie zdjęć. Ten skrypt umieściłem pod przyciskami (like i dlike), i chodzi mi głównie oto żeby wyświetlała się jedna liczba, która będzie sumą tych ;D Rozumiesz? :D
No logicznym rozwiązaniem byłoby czytanie pliku oceny a potem nadpisanie go po zmianie wartości. Aż dziwne że sam na to nie wpadłeś @.@
Przepraszam, że tak późno pisze jeszcze o tym, ale znalazłem odpowiedź na to pytanie. Szczerze, to już dawno ją znalazłem, ale nie miałem czasu, żeby wrzucić to na forum. Więc :
<?
$like = $_POST[like];
$df = "justin.dat";
if(!($fp=@fopen($df, "r"))){
$count=0;
}
else {
$count = fgets($fp, 100);
fclose($fp);
}
if($like == "like")
{
$count+=1;
}
elseif($like == "dlike")
{
$count-=1;
}
else
{
}
$fp = fopen($df, "w");
if(!flock($fp, LOCK_EX)){
fclose($fp);
return;
} else {
fputs($fp, $count);
flock($fp, LOCK_UN);
fclose($fp);
}
echo $count;
?>
mam nadzieje, że komuś się przyda :D