Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Drobny problem - podwojenie wyników w MySQL
Forum PHP.pl > Forum > PHP
artuross
Mam taki problem, ponieważ, gdy dodaję wyniki do bazy danych one są podwojone. Od razu dodaję, że pętla for została wprowadzona, abym mógł skontrolować ilość wyników do bazy danych, normalnie korzystam z foreach i też na nią przejdę... gdy znajdę przyczynę tego problemu.

  1. for ($i=0;$i<10;$i++)
  2. {
  3. if ( isset($a[$i]['0']) && isset($a[$i]['1']) && isset($a[$i]['2']) )
  4. {
  5. $wyn1 = $a[$i]['0'];
  6. $wyn2 = $a[$i]['1'];
  7. $wyn3 = $a[$i]['2'];
  8.  
  9. mysql_query("INSERT INTO tablica VALUES (NULL, '$wyn1', '$wyn2', '$wyn3')");
  10. }
  11.  
  12. else
  13. {
  14. break;
  15. }
  16. }


W żadnym innym dołączanym pliku nie ma kodu odpowiedzialnego za dodanie wyników do bazy danych, nie ma też 'odnośnika' do tego pliku, które je wykonuje, a nawet gdyby był to zastosowałem require_once. Nie wiem dlaczego dodaje 20 skoro maksymalnie może dodać 10, przecież jest ograniczone pętlą. Nawet z pętlą foreach wiedziałem ile wyników dodaje, bo również wyświetlało mi je, więc gdyby te same wyniki były przypisane do tablicy 2 razy to i wyświetliłoby mi je 2 razy.

Nie proszę o nowy kod wink.gif proszę o pomoc w znalezieniu błędu, więc nie wyjeżdżajcie mi z tekstami, że chcę gotowca ;p;p
nospor
Było już kilku takich jak ty, co się zastrzegali, że nic podwójnie nie robią, nic a nic a co do czego okazywało się, że jednak robią coś podwójnie, albo przegladarka wysyla dwa żądania albo coś innego.
Tak czy siak ten kod jest odpalany dwa razy. Poszukaj dokładnie.
darko
Pokaż var_dump($a); oraz strukturę tabeli, do której zapisujesz dane. Rozwiązaniem po stronie bazy mogłoby być ustawienie UNIQUE na kluczu głównym tabeli.
artuross
Cytat(nospor @ 13.01.2012, 11:57:02 ) *
Było już kilku takich jak ty, co się zastrzegali, że nic podwójnie nie robią, nic a nic a co do czego okazywało się, że jednak robią coś podwójnie, albo przegladarka wysyla dwa żądania albo coś innego.
Tak czy siak ten kod jest odpalany dwa razy. Poszukaj dokładnie.


Heh, nie wierzysz we mnie ;( Przeszukałem kod ręcznie i komputerowo, przeglądarka nie wysyła 2 razy, a przynajmniej nie wysyłała wczoraj biggrin.gif Poza tym nie wiem, może to pomoże określić czy przeglądarka wysyła 2 razy żądania, bo wyniki są dodane w taki sposób:
wynik 1
wynik 2
wynik 3
wynik 4
wynik 1
wynik 2
wynik 3
wynik 4
...

Wydaje mi się, że gdyby wysyłała 2 razy to byłoby:
wynik 1
wynik 1
wynik 2
wynik 2
...


EDIT:
Kolumna Typ Metoda porównywania napisów Atrybuty Null Domyślnie Dodatkowo
ID int(10) UNSIGNED Nie None AUTO_INCREMENT
Tytul char(255) latin1_swedish_ci Nie None
Tresc char(255) latin1_swedish_ci Nie None
Autor char(100) Tak NULL


var_dump()
  1. {
  2. [0]=> array(3)
  3. {
  4. [0]=> string(12) "Nie ma nic!!"
  5. [1]=> string(3) "Nic"
  6. [2]=> string(4) "2012"
  7. }
  8.  
  9. [1]=> array(3)
  10. {
  11. [0]=> string(12) "Totalne zero"
  12. [1]=> string(1) "-"
  13. [2]=> string(7) "Jakooob"
  14. }
  15.  
  16. [2]=> array(3)
  17. {
  18. [0]=> string(15) "Takie sobie nic"
  19. [1]=> string(10) "Nie ma nic" [2]=> string(4) "Brak"
  20. }
  21.  
  22. [3]=> array(3)
  23. {
  24. [0]=> string(1) "-"
  25. [1]=> string(5) "To ja"
  26. [2]=> string(7) "Znów ja"
  27. }
  28.  
  29. [4]=> array(3)
  30. {
  31. [0]=> string(11) "Kliku kliku"
  32. [1]=> string(1) "1"
  33. [2]=> string(3) "lol"
  34. }
  35. }
nospor
NIe chodzi o to ze ci nie wierze, ale mówię ci ze było już tu kilku takich uparciuchów jak ty a co do czego okazało sie ze mialem racje.

zrob sobie file_put_contents('plik.txt','nospor ma racje',FILE_APPEND);
i powiedz ile masz nosporów w pliku wink.gif
xxdrago
Wydaje mi się, że całość jest ok ale jak nospor powiedział " ale mówię ci ze było już tu kilku takich uparciuchów jak ty a co do czego okazało sie ze mialem racje."

Dodaj sobie proste:
echo i zaraz wybadasz o co chodzi..
nospor
echo moze nie rozwiązac sprawy, bo jak idą inne zadania to nie zobaczy echo z tych zadan. dlatego robi sie file_put_contents - to zapisze wszystko
artuross
Cytat(nospor @ 13.01.2012, 12:04:07 ) *
NIe chodzi o to ze ci nie wierze, ale mówię ci ze było już tu kilku takich uparciuchów jak ty a co do czego okazało sie ze mialem racje.

zrob sobie file_put_contents('plik.txt','nospor ma racje',FILE_APPEND);
i powiedz ile masz nosporów w pliku wink.gif


OK, jesteś mistrzem, były 2 "nospor ma racje". Czyli muszę przeinstalować przeglądarkę?
nospor
Hehe smile.gif

To nie musi byc wina przegladarki. Jesli np. masz ładne URL czy ogolnie robisz mod_rewrite to jak nie ma jakiegos pliku np. favicon to leci przekierowanie na plik php.
Musisz sprawdzic czy nie masz takich rzeczy

Posprawdzaj też includowanie.

Albo zamiast zapisywac nospor ma racje, to zapisuj to co zawiera $_SERWER (print_r($_SERVER, true));
zobaczysz wtedy dokladnie jakie było żądanie do serwera
artuross
Akurat tutaj nie mam ładnych URL'i, w ogóle nigdzie nie mam ;p

Wynik tego co podałeś: Array (print_r(Array, true)) - nic mi to nie mówi.
nospor
ale funkcje a nie tekst.....

file_put_contents('plik.txt',print_r($_SERVER, true),FILE_APPEND);
artuross
Cytat
Array
(
[MIBDIRS] => C:/Program Files/Xampp/php/extras/mibs
[MYSQL_HOME] => \xampp\mysql\bin
[OPENSSL_CONF] => C:/Program Files/Xampp/apache/bin/openssl.cnf
[PHP_PEAR_SYSCONF_DIR] => \xampp\php
[PHPRC] => \xampp\php
[TMP] => \xampp\tmp
[HTTP_HOST] => localhost
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; rv:9.0) Gecko/20100101 Firefox/9.0
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => pl,en-us;q=0.7,en;q=0.3
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_ACCEPT_CHARSET] => ISO-8859-2,utf-8;q=0.7,*;q=0.7
[HTTP_CONNECTION] => keep-alive
[HTTP_REFERER] => http://localhost/IF-n1e0garek/
[PATH] => C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM
[SystemRoot] => C:\WINDOWS
[COMSPEC] => C:\WINDOWS\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
[WINDIR] => C:\WINDOWS
[SERVER_SIGNATURE] => <address>Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 Server at localhost Port 80</address>

[SERVER_SOFTWARE] => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => C:/Program Files/Xampp/IF-n1e0garek
[SERVER_ADMIN] => postmaster@localhost
[SCRIPT_FILENAME] => C:/Program Files/Xampp/htdocs/n1e0garek/results.php
[REMOTE_PORT] => 1501
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => str=ssssssssfsdgdfgdfhdh
[REQUEST_URI] => /n1e0garek/results.php?url=str=ssssssssfsdgdfgdfhdh
[SCRIPT_NAME] => /n1e0garek/results.php
[PHP_SELF] => /n1e0garek/results.php
[REQUEST_TIME] => 1295004667
)
thek
I co to da? Każdy wchodzacy na tę strone z tej przeglądarki i tak odpali kod dwa razy. Nie masz szukać obejścia, ale przyczyny. Zobacz jakie są połączenia między tym adresem a plikiem. Może includujesz go gdzieś dwa razy, strona się wykonuje i w pewnej chwili robi redirect na samą siebie, już po insercie. Powodów może być wiele. Ale tego bez informacji od Ciebie się nie dowiemy.
nospor
powinienes dostac dwa wyniki a nie jeden. Podaj wszystko co dostales

@thek a da to, że bedzie wiadomo czy oba żądania były takie same czy moze to drugie było favicon czy czymś innym.
thek
@nospor: "I co to da?" nie było do Ciebie smile.gif
Odpisałem tak na:
Cytat
Czyli muszę przeinstalować przeglądarkę?

Moja wina, że nie zacytowałem.
artuross
Już znalazłem przyczynę, wysyła dwa razy, bo przy wklejaniu zmiennej wciskam ctrl i v i wysyła jedno dla każdego <idiota> korzystam z onkeyup

To teraz zmieniam pytanie ;p da się zrobić tak, żeby wysyłało zapytanie przez AJAXA po 'odznaczeniu' pola tekstowego?
nospor
onchange?
artuross
Cytat(nospor @ 13.01.2012, 12:45:31 ) *
onchange?


W sumie źle to napisałem, nie chcę po odznaczeniu, równie dobrze mogłem to wysyłać enterem, jakiś sposób, aby po wklejeniu CTRL + V automatycznie się wysyłało, bez klikania zbędnego - może być np. wysyłane po ponownym aktywowaniu okienka(tzn. jest już aktywne, ale Ty klikasz jeszcze raz na nie).

Rozwiązane, zmieniłem kod js o_0
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.