Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
PHP

Pobieranie z pliku dwóch wartości

php

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
21 odpowiedzi w tym temacie

#1 Engi

    [EKSiD] playaz44

  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 14.08.2013 18:20

Mam w pliku jakiśplik.txt zapisane kilka linijek:

jakieś_tam_literki    jakieś_tam_cyferki
jakieś_tam_literki    jakieś_tam_cyferki
jakieś_tam_literki    jakieś_tam_cyferki
....

Z tym że "literki" mogą być maksymalnie trzema wyrazami.

 

I teraz pytanie jak pobrać "literki" i "cyferki" do innego pliku do if'a który sprawdzi czy "cyferki" == xxx i podmieni te "cyferki" na "literki" z pliku .txt ?

 

 


Użytkownik playaz44 edytował ten post 14.08.2013 18:21

  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#2 Gh0st

    :)

  • Power User

Reputacja: 852
Czempion

  • Postów:920
  • GG:
  • Imię:Tomek
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 14.08.2013 18:32

Twój temat nie jest w 100% dla mnie zrozumiały, postaraj się trochę lepiej i na spokojnie opisać co dokładnie chcesz uzyskać.


  • +
  • -
  • 0

#3 PHP <3

    Banned

  • Zbanowany

Reputacja: 17
Początkujący

  • Postów:83
  • Imię:Piotrek
  • Lokalizacja:Lębork
Offline

Napisano 14.08.2013 18:36

Chodzi mu pewnie o zmianę jakiejś wartości w pliku po jej uprzednim znalezieniu, służy do tego fopen("plik.txt", "w") i fseek(); ale trochę trzeba się namęczyć :D



#4 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 14.08.2013 18:53

@PHP <3, nie, nie o to mi chodzi



Mam dwa pliki, jeden .php który robi za "silnik" i drugi .txt w którym są takie dane:
 
 
nick1   4365436
nick2   345346
nick3   435236
nick4   3426526
...
//"nick" "numer" //żeby było wiadomo niżej co jest co 
Z tym, że "nicki" mogą mieć max 3 wyrazy (np. xxx ccc vvv), ewentualnie mogę użyć "str_replace" do usunięcia spacji żeby "nick" miał jeden wyraz a nie trzy

Mam przychodzącą wiadomość która zawsze jest w takiej formie
Wiadomość od użytkownika: "numer" o treści: "wiadomość"
Chcę pobrać z pliku .txt do "silnika" najpierw "numer" żeby porównać czy "numer" który pokazał się przy powyższej wiadomości ma w pliku .txt obok siebie jakiś "nick" i jeżeli ma to zamienił "numer" na "nick" z pliku txt

Może łatwiej będzie jak napisze to w pseudo-kodzie bo nie wiem jak to wytłumaczyć :P
 
jeżeli $numer_ktory_napisał == $numerowi_z_pliku

to zamień $numer_ktory_napisał na $nick_z_pliku_txt

Wiem że mógłbym klepać cały czas
$wyslane = strip_tags($HTTP_RAW_POST_DATA);
...
if($numer_ktory_napisal == 12345)
{
$wiadomosc = str_replace($numer_ktory_napisal, 'nick_dla_numeru_12345', $wyslane);
}
I tak dla każdego numeru ale to mija się z celem bo po pierwsze za każdym razem musiałbym mieszać w kodzie, a po drugie teraz mam tyc numerów 129 więc dodawanie ich ręcznie to byłoby z lekka sami wiecie jakie...
A tak miałbym możliwość łatwego dodania/usunięcia jakiegoś nicku z numerem dodając w nowej linii w pliku txt "nick" "numer"

Użytkownik playaz44 edytował ten post 14.08.2013 19:03

  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#5 Gh0st

    :)

  • Power User

Reputacja: 852
Czempion

  • Postów:920
  • GG:
  • Imię:Tomek
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 14.08.2013 18:59

I teraz wszystko ładnie wytłumaczone :)

 

Funkcja PHP

file()

 

Jedziesz po każdej lini

Nick od Numeru rozdziel funkcją explode() lub preg_match_all :]

 

Dane z pliku zapisz do jakiejś tablicy

np 

$users[$numer] = $nick

 

I potem sprawdzaj, to jakim sposobem sprawdzisz można np...

if(in_array($numer, $users))

{

     $nick = $users[$numer];

}

else

{

echo 'nie ma takiego użytkownika';

}

 


  • +
  • -
  • 1

#6 Gh0st

    :)

  • Power User

Reputacja: 852
Czempion

  • Postów:920
  • GG:
  • Imię:Tomek
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 14.08.2013 19:08

W każdej linijce oddziel nick od numeru np "$" lub jakimś innym niedozwolonym znakiem dla nicku (bo numer to oczywiście INT), to ułatwi ci o wiele rozdzielenie :) 


  • +
  • -
  • 0

#7 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 14.08.2013 20:02

Nie wiem, nie umiem, zgubiłem się :D

naprodukowałem takie coś:
 
if (substr($wyslane, 0, 4) == "/pw " || substr($wyslane, 0, 4) == ".pw ")
{
	$plik = file('kontakty.txt');
	$itoito = explode(' ', $plik);
	$nickplik = $itoito[0];
	$numerplik = $itoito[1];
	$numerypliku[$numer] = $numerplik;
	
	if(in_array($numer, $numerplik))
	{
	$users = $numerypliku[$numer];
	}
	else
	{
	$users = $numergg;
	}
	
	$M->addText('Wiadomość wysłana');
	$M->reply();
	$M->clear();
	$wiadomosc = str_replace('/pw ', '', $wyslane);
	if($numergg == $users)
	{
	$M->addText('Wiadomość od użytkownika: '.$nickplik.' o treści: '.$wiadomosc);
	}
	else 
	{
	$M->addText('Wiadomość od użytkownika: '.$numergg.'(nieznajomy) o treści: '.$wiadomosc);
	}
	$M->setRecipients(44321102);
	$P->push($M);
	}
w zmiennej $numergg jest zapisany numer który napisał "/pw", a $wyslane to "/pw *ten_tekst*"

efekt tego powyżej: do każdej wiadomości dokleja na początku cały plik z nickami i numerami nawet kiedy "/pw" lub ".pw" nie są wpisywane, naprowadzisz mnie na właściwą drogę? :D

Użytkownik playaz44 edytował ten post 14.08.2013 20:03

  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#8 Gh0st

    :)

  • Power User

Reputacja: 852
Czempion

  • Postów:920
  • GG:
  • Imię:Tomek
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 14.08.2013 20:13

1.

$plik = file('kontakty.txt');

Funkcja file() zwraca linie pliku jako tablicę więc użyj foreach.

 

Pobierz WSZYSTKICH użytkowników przed rozpoczęciem skryptu ;) 


  • +
  • -
  • 0

#9 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 14.08.2013 20:35

Poddaje się, nie umiem, można to jakoś inaczej zrobić bez pętli których nie umiem?
  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#10 Gh0st

    :)

  • Power User

Reputacja: 852
Czempion

  • Postów:920
  • GG:
  • Imię:Tomek
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 14.08.2013 20:42

Foreach(ponieważ to ci się do tego przyda)

http://php.net/manua...res.foreach.php


  • +
  • -
  • 0

#11 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 14.08.2013 20:50

Zrobiłem tak:

foreach($plik as $zmienna)
ale co mi to da jak zatkało mnie w miejscu, nie wiem co mam z tym zrobić, gdzie to wstawić ani do czego tą $zmienna przypisać
  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#12 Gh0st

    :)

  • Power User

Reputacja: 852
Czempion

  • Postów:920
  • GG:
  • Imię:Tomek
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 14.08.2013 20:53

przed foreach zrób

$_all_users = array();

w foreach

 

$zmienna to jest dana linia.

czyli w foreach zrób rozdzielenie Nicku od numeru

i przypisz do $_all_users


  • +
  • -
  • 0

#13 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 14.08.2013 21:02

if (substr($wyslane, 0, 4) == "/pw " || substr($wyslane, 0, 4) == ".pw ")
{
	$plik = file('kontakty.txt');
	$_all_users = array();
	foreach($plik as $zmienna);
	{
	$_all_users = explode(' ', $zmienna);
	$nickplik = $_all_users[0];
	$numerplik = $_all_users[1];
	}
	$numerypliku[$numer] = $numerplik;
	
	if(in_array($numer, $numerplik))
	{
	$users = $numerypliku[$numer];
	}
	else
	{
	$users = $numergg;
	}
	
	$M->addText('Wiadomość wysłana');
	$M->reply();
	$M->clear();
	$wiadomosc = str_replace('/pw ', '', $wyslane);
	if($numergg == $users)
	{
	$M->addText('Wiadomość od użytkownika: '.$nickplik.' o treści: '.$wiadomosc);
	}
	else 
	{
	$M->addText('Wiadomość od użytkownika: '.$numergg.'(nieznajomy) o treści: '.$wiadomosc);
	}
	$M->setRecipients(44321102);
	$P->push($M);
	}
Tak?
  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#14 Gh0st

    :)

  • Power User

Reputacja: 852
Czempion

  • Postów:920
  • GG:
  • Imię:Tomek
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 14.08.2013 21:04

$_all_users = array();

 foreach($plik as $zmienna);

{
    $zmienna = explode(' ', $zmienna);
    $_all_users[$zmienna[0]] = $zmienna[1];
}

tak.


  • +
  • -
  • 0

#15 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 14.08.2013 21:07

<b>Warning</b>: in_array() [<a href='function.in-array'>function.in-array</a>]: Wrong datatype for second argument in <b>/playaz44/bot.php</b> on line <b>97</b><br />
<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /playaz44/kontakty.txt:25) in <b>/playaz44/MessageBuilder.php</b> on line <b>331</b><br/>
A do tego na początku dokleiło cały plik txt

Użytkownik playaz44 edytował ten post 14.08.2013 21:08

  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#16 Gh0st

    :)

  • Power User

Reputacja: 852
Czempion

  • Postów:920
  • GG:
  • Imię:Tomek
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 14.08.2013 21:09

Zmień sprawdzanie.

zamiast in_array to sprawdzaj isset.

if(isset($_all_users[$nick]))

oczywiście $nick to twoja zmienna.


  • +
  • -
  • 0

#17 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 14.08.2013 21:18

Teraz dokleja cały plik txt i wywala
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /playaz44/kontakty.txt:25) in <b>/playaz44/MessageBuilder.php</b> on line <b>331</b><br />
Dokleja też cały txt gdy nie wpisuje /pw


tak mam aktualnie:
 
	$plik = file('kontakty.txt');
	$_all_users = array();
	foreach($plik as $zmienna);
{
    $zmienna = explode(' ', $zmienna);
    $_all_users[$nickplik[0]] = $numerplik[1];
}
	$numerypliku[$numer] = $numerplik;
	
	if(isset($_all_users[$numerplik]))
	{
	$users = $numerypliku[$numer];
	}
	else
	{
	$users = $numergg;
	}
I jakbyś mógł dodać komentarze co jest co bo ja już nic nie wiem, dodaje tylko to co ty mi podajesz

Użytkownik playaz44 edytował ten post 14.08.2013 21:28

  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#18 PHP <3

    Banned

  • Zbanowany

Reputacja: 17
Początkujący

  • Postów:83
  • Imię:Piotrek
  • Lokalizacja:Lębork
Offline

Napisano 14.08.2013 21:28

Notatnik czy notepad++?



#19 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 14.08.2013 21:29

Notepad++
  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#20 Gh0st

    :)

  • Power User

Reputacja: 852
Czempion

  • Postów:920
  • GG:
  • Imię:Tomek
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 15.08.2013 11:46

Czuje że to tłumaczenie jest na nic bo ty i tak robisz po swojemu. Nick gracza pobieraj z $_all_users. 

Headers? daj w załącznik obydwa pliki, silnik i ten txt


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: php

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych