Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyciąganie danych z pliku i późniejsze ich modyfikacyje
Forum PHP.pl > Forum > Przedszkole
karlkar
  1. <?php
  2. $sql=mysql_connect(localhost,'root','haslo');
  3. if ($sql) {
  4.  
  5. $zapytanie = "SELECT * FROM rekruci";
  6. $wykonaj = mysql_query($zapytanie);
  7. while($wiersz = mysql_fetch_array($wykonaj))
  8. {echo "<table width="100%" border="0" cellpadding="0" cellspacing="0">
  9. <tr>
  10. <td class="tableborder">
  11. <table width="100%" border="0" cellspacing="1">
  12. <tr> <td colspan="4" class="categorybar"> <table border="0">
  13. <tr>";
  14.  
  15. $plik = 'user.dat';
  16. foreach(file($plik) AS $line)
  17. { 
  18.  if(strpos($line,'karlkar')!==false) {
  19.  $glosy=explode(':', $line);
  20.  for ($i=2;$i<=count($glosy)-1;$i++)
  21.  {
  22. if ($glosy[$i]!=$wiersz['id']){
  23. echo $i."Zaglosuj na beja!<br>";
  24. } echo $i."DANE O CIECIU<br>";
  25.  
  26. }}}}}
  27. ?>


Oto część mojego kodu. Jakie miało być jego przeznaczenie? Otóż miał: pobrać dane z tablicy ( wśród nich $wiersz['id']), wyciągać z pliku każdą linijke po kolei, sprawdzić każdą linijke w poszukiwaniu słowa karlkar. Jeśli znajdzie słowo karlkar miał całą linijke rozbić na tablice. Następnie miał wartość każdej z tych tablic porównać z wartością zmiennej $wiersz['id'] i jeśli wartość tą znajdzie w wartościach tablicy - ma wyświetlić napis DANE O CIECIU <br>, a gdy nie znajdzie tej wartości to ma wyświetlić napis Zaglosuj na beja <br> DANE O CIECIU<br>
Jednak pojawia się mały problem - skrypt w tej formie wyświetla za dużo wyników... Oto co widze w przeglądarce:
Cytat
Zaglosuj na beja!
DANE O CIECIU
DANE O CIECIUZaglosuj na beja!
DANE O CIECIU
DANE O CIECIUZaglosuj na beja!
DANE O CIECIU
DANE O CIECIUZaglosuj na beja!
DANE O CIECIU
DANE O CIECIUZaglosuj na beja!
DANE O CIECIU
DANE O CIECIU

Podczas gdy powinien wyświetlić:
Cytat
Zaglosuj na beja!
DANE O CIECIU
DANE O CIECIU

Jakby co - zamieszczam jeszcze zawartość pliku user.dat
Cytat
mietek:czesiek:4:8
karlkar:kar:2:5
romek:tomek:9:1


Co muszę poprawić? nie mam już sił do tego skryptu...

---------------------------------------------------------------------------------------
Powalczyłem z tym kodem - poprzekształcałem na wygodniejszy do odczytania etc. Ale pojawia się kolejny problem ;p Patrzcie sami:

  1. <?php
  2. $sql=mysql_connect(localhost,'root','windows98');
  3. if ($sql) {
  4.  
  5. $zapytanie = "SELECT * FROM rekruci";
  6. $wykonaj = mysql_query($zapytanie);
  7. while($wiersz = mysql_fetch_array($wykonaj))
  8. {
  9.  
  10. //SPRAWDZENIE CZY GŁOS BYŁ JUŻ ODDANY NA TEGO REKRUTA
  11. $plik = 'user.dat';
  12. foreach(file($plik) AS $line)
  13. { 
  14.  if(strpos($line,'karlkar')!==false) {
  15.  $glosy=explode(':', $line);
  16.  for ($i=2;$i<=count($glosy)-1;$i++)
  17.  {
  18. if ($glosy[$i]==$wiersz['id']){
  19. echo "DOBRZE: if (".$glosy[$i]." = ".$wiersz['id'].") a i to".$i."<br>";
  20. } else echo "ŻLE:".$glosy[$i]." = ".$wiersz['id']." a i to".$i."<br>";
  21.  
  22. }}}}}
  23. ?>


a oto co mi wyświetla na stronie:
Cytat
ŻLE:2 = 1 a i to2
ŻLE:5 = 1 a i to3
DOBRZE: if (2 = 2) a i to2
ŻLE:5 = 2 a i to3
ŻLE:2 = 3 a i to2
ŻLE:5 = 3 a i to3
ŻLE:2 = 4 a i to2
ŻLE:5 = 4 a i to3
ŻLE:2 = 5 a i to2
ŻLE:5 = 5 a i to3


Dlaczego z porównania wartości 5 i 5 wyszło mu że są różne? tongue.gif
Kicok
Ponieważ nie porównujesz dwóch piątek, tylko piątkę i piątkę ze znakiem przejścia do nowego wiersza:
5 != "5\n"


Żeby pozbyć się znaków przejścia do nowego wiersza użyj zaraz na początku pętli tego kodu:
  1. <?php
  2. $line = rtrim($line);
  3. ?>
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.