Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przejście do ostatniego pola tablicy, PHP + *.txt
hub3rt
post
Post #1





Grupa: Zarejestrowani
Postów: 126
Pomógł: 0
Dołączył: 19.09.2003
Skąd: Białystok

Ostrzeżenie: (10%)
X----


Mam taki problem. Piszę skrypt głosowania. Użytkownicy dodają wartości, które są dopisywane do tablicy do pliku txt. Mam problem z nadawaniem unikalnego ID dla każdej wartosci dodanej przez uzytkownikow. Wymyśliłem taki sposób, żeby $id w tablicy był zapisywany na końcu. Wygląda to tak:

jakis tekst|autor|godzina|punkty|input_radio|id
jakis tekst|autor|godzina|punkty|input_radio|id
jakis tekst|autor|godzina|punkty|input_radio|id
jakis tekst|autor|godzina|punkty|input_radio|id

itd. jak ktoś coś dodaje. Wymyslilem sobie ze tablica jest wczytywana i wyswietlana na stronie. input_radio to oczywiscie takie koleczko (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) radio button czy jakos taksie to nazywa. A pod tabelka (ktora przedstawia zawartosc tablicy) jest przycisk 'Głosuj'. Wszystko mieści się w ramach formularza. Ale problemem jest dla mnie ustawianie unikalnego 'id' dla każdego tekstu dodanego. Probowalem w ten sposob:
  1. <?php
  2. @ $plikid = file("grypsy.inc", 'a');
  3.  
  4. $ostatniid = count($plikiid);
  5. ?>

Nie działało...wyskakiwał error a id zawsze wynosil 1 (bo dalej mam tak, ze jezeli ostatni id = 0 to nadaj mu wartosc 1 i idz dalej).
To zrobiłem w ten sposób:
  1. <?php
  2. @ $plikid = file("grypsy.inc", 'a');
  3.  
  4. $ostatni = count($plikiid);
  5. $ostatniid = $ostatniid[$ostatni];
  6. ?>

Teraz $id dziala...cos takiego istnieje w ogole, ale zawsze ma wartosc 1. Czyli skrypt nie moze znalezc ostatniego IDa dlatego nadaje mu wartosc 1. Wklejam tu caly kod...moze ktos zauwazy jakas nieprawidlowosc razaca (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)

Probuje te glosowanie zrobic od tygodnia, ale nic nie dam rady zmienic. O co chodzi? (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)

  1. <?php
  2. $data = date('H:i [j.m.Y]');
  3. $punkty = 0;
  4. $tytul = htmlspecialchars($tytul);
  5.  
  6. @ $plikid = file("grypsy.inc", 'a');
  7.  
  8. $ostatni = count($plikiid);
  9. $ostatniid = $ostatniid[$ostatni];
  10.  
  11. if( $tytul == '' )
  12. {
  13.  echo('Nie wpisałeś grypsu!');
  14. }
  15. if( $autor == '' )
  16. {
  17.  echo('Nie wpisałeś autora!');
  18. }
  19. else
  20. {
  21. if ( $ostatniid > 0 )
  22. {
  23. $dane = $tytul."t".$autor."t"
  24.  .$data."t".$punkty."t"."<input type='radio' value='".$id."' name='".$id."'>"."t".$id."n";
  25.  
  26. @ $plik = fopen("grypsy.inc", 'a');
  27.  
  28. flock($plik, LOCK_EX);
  29.  
  30. fwrite($plik, $dane);
  31. flock($plik, LOCK_UN);
  32. fclose($plik);
  33.  
  34. echo('Dodano');
  35. echo '<br><a href="index.php">Strona główna</a>';
  36. }
  37. else
  38. {
  39.  $id = 1;
  40. $dane = 
  41. $dane = $tytul."t".$autor."t"
  42.  .$data."t".$punkty."t"."<input type='radio' value='".$id."' name='".$id."'>"."t".$id."n";
  43.  
  44. @ $plik = fopen("grypsy.inc", 'a');
  45.  
  46. flock($plik, LOCK_EX);
  47.  
  48. fwrite($plik, $dane);
  49. flock($plik, LOCK_UN);
  50. fclose($plik);
  51.  
  52. echo('Dodano');
  53. echo '<br><a href="index.php">Strona główna</a>';
  54. }
  55. }
  56. ?>


Prymitywne, ale jestem poczatkujacy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat
Warning: Variable passed to end() is not an array or object in c:/foxserv/www/grypsy2/dodaj.php on line 13
Dostawałes taki komunikat dlatego że to co przekazywałeś nie było tablicą. count() takiego komunikatu nie wywala bo ona przyjmuje wszystko, ale jak coś nie jest tablicą to zwraca jeden (dlatego tak miałeś). Oznacza to, że źle tworzyłeś tą tablicę. Przede wszystkom źle urzywałeś funkcji file() a dodatkowo możesz mieź złą ścieżkę do pliku (tego nie wiem).

Powiedz jak to działa teraz :?:
  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. $data = date( 'H:i [j.m.Y]' );
  7. $punkty = 0;
  8. $tytul = htmlspecialchars( $tytul );
  9.  
  10. $plikid = file( 'grypsy.inc' );
  11.  
  12. $ostatniid = count( $plikiid );
  13.  
  14. if( $tytul == '' )
  15. {
  16. echo('Nie wpisałeś grypsu!');
  17. }
  18.  
  19. if( $autor == '' )
  20. {
  21. echo('Nie wpisałeś autora!');
  22. }
  23. else
  24. {
  25. if ( $ostatniid > 0 )
  26. {
  27. $dane = $tytul . "t" . $autor . "t" . $data . "t" . $punkty . "t" . "<input type='radio' value='" . $id . "' name='" . $id . "'>" . "t" . $id . "n";
  28.  
  29. $plik = fopen( "grypsy.inc", 'a' );
  30.  
  31. flock($plik, LOCK_EX);
  32.  
  33. fwrite($plik, $dane);
  34. flock($plik, LOCK_UN);
  35. fclose($plik);
  36.  
  37. echo('Dodano');
  38. echo '<br><a href="index.php">Strona główna</a>';
  39. }
  40. else
  41. {
  42. $id = 1;
  43. $dane = $tytul . "t" . $autor . "t" . $data . "t" . $punkty . "t" . "<input type='radio' value='" . $id . "' name='" . $id . "'>" . "t" . $id . "n";
  44.  
  45. $plik = fopen( "grypsy.inc", 'a' );
  46.  
  47. flock($plik, LOCK_EX);
  48.  
  49. fwrite($plik, $dane);
  50. flock($plik, LOCK_UN);
  51. fclose($plik);
  52.  
  53. echo('Dodano');
  54. echo '<br><a href="index.php">Strona główna</a>';
  55. }
  56. }
  57.  
  58. ?>

P.S. To jest na bazie Twojego kodu, ale naprawde powinieneś się przerzucić na tablica superglobalne $_POST, $_GET, ...

P.S. 2 Nie martw się - czytam Twoje posty.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 21:18