Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Podwójne dodawanie danych
Forum PHP.pl > Forum > Przedszkole
yalus
witam

  1. <?php
  2. function er($we)
  3. {
  4. $link=mysql_connect('localhost', 'gregor', 'gregor1234') or die('Nie można się połączyć');
  5. mysql_select_db('gregor');
  6. $zapytanie = "SELECT * FROM users";
  7. $wykonaj = mysql_query ($zapytanie) or die(mysql_errno() . ": " . mysql_error(). "n");
  8.  
  9.  
  10. while($wiersz=mysql_fetch_array ($wykonaj))
  11. {
  12.  
  13. $a= strpos(" ".$wiersz['user'], $we);
  14. $b= strpos(" ".$wiersz['password'], $we);
  15.  
  16. if (($a || $b)>0)
  17. {
  18. $j++;
  19. $zap = "INSERT INTO users_temp SET user='$wiersz[user]', password='$wiersz[password]'";
  20. $wyk = mysql_query ($zap) or die(mysql_errno() . ": " . mysql_error(). "n");
  21. }
  22. else
  23. echo"nic nie znaleziono <br>";
  24.  
  25. }
  26.  
  27. mysql_close($link);
  28. echo $j;
  29.  
  30. }
  31.  
  32. //wywolanie funkcji
  33. echo er("6");
  34. ?>


w bazie mam dwie tabele o identycznej strukturze users i users_temp

funkcja er(' ') sprawdza czy dane wejsciowe (w tym przypadku '6') znajdują się w jakiejkolwiek komórce aktualnie analizowanego wiersza, jezeli tak to zmienne $a lub $b przyjmują wartość > 0
jezeli warunek
  1. <?php
  2. if (($a || $b)>0)
  3. ?>
jest spełniony wiersz z tabeli users powinien być dodany do tabeli users_temp co nie do konca dzieje się z moimi oczekiwaniami, owszem dodaje sie ale zawsze jest zdublowany tj;

jezeli w tabeli users mam nastepujace dane
users password
jan jan12345
john john12345

i teraz odpalajac funkcje er() z paramterem 'an12' czyli er('an12') - czyli chce znalezc wszystki rekordy z wystepujaca gdziekolwiek fraza 'an12'

w tablei users_temp mam nastepujace dane:
users password
jan jan12345
jan jan12345

czyli znalezione dane zostaly podwojnie dodane, dlaczego?

wstawilem zminna $j do środka warunku if (($a || $b)>0) i po zakonczeniu wszystkiego jej wartość jest=1 czyli warunek byl tylko raz spelniony to dlaczego w tabeli users_temp sa dwa takie same rekordy?questionmark.gif
shpyo
  1. <?php
  2. if (($a || $b)>0)
  3. ?>

nie ma czegoś takiego. To zawsze się wykona!
Zapewne chodziło Ci o coś takiego:
  1. <?php
  2. if ( $a > 0 || $b > 0 ) {
  3.  //instrukcje
  4. }
  5. ?>


pozdr,
yalus
to nie to, zmienilem rowniez warunek if na:

  1. <?php
  2. $a= strpos(" ".$wiersz['user'], $we);
  3. $b= strpos(" ".$wiersz['password'], $we);
  4. $z=$a+$b;
  5. if (($z)>0)
  6. ?>


i dalej wchodze do srodka if tylko raz tak jak wskazuje na to zmienna $j (pierwszy post) a w tabeli user_temp sa dwa takie same rekordy

nie mam zielonego pojecia co sie dzieje.
konys
Pobierasz rekordy używając funkcji
  1. <?php
  2. $wiersz = mysql_fetch_array($wykonaj)
  3. ?>
która to funkcja zwróci Ci dane w postaci podwójnie indeksowanej tablicy:
$wiersz[0] = 'Jan';
$wiersz['user'] = 'Jan';
$wiersz[1] = 'jan12345';
$wiersz['password'] = 'jan12345';

Możesz użyć funkcji mysql_fetch_assoc($wykonaj), lub jej odpowiednika mysql_fetch_array($wykonaj, MYSQL_ASSOC), chociaż wg. mnie najwygodniej jest używać mysql_fetch_object($wykonaj)
nospor
no to ja podam rozwiazanie, gdyz widze autor topicu sie do jego podania nie spieszy. Oto jego slowa:
Cytat
ok, sprawa juz jest rozwiazana
byla to wina mojego edytora, pisze skrypty pod DzSoft php editor
nie wiem czemu ale jak odpalalem skrypt w tym edytorze to wykonywal go podwojnie.
przeinstalowalem i jest ok


tak wiec temat zamkniety (niedoslownie smile.gif )
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.