Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Wyszukiwanie ilości występowanie liczb zbazy danych
Forum PHP.pl > Forum > Przedszkole
Stron: 1, 2
woxala123
Zrobiłem taki skrypt który wyszukuje ile razy dana liczba pojawiła się w bazie danych. I chcę teraz dodać jeszcze do tego by zliczało ile razy pokazywała się parka czy trójka liczb.
Czy ktoś może naprowadzić jak do tego zabrać się.
Pozdrawiam
KOD skryptu
  1. form action="bn.php" method="POST">
  2. <fieldset>
  3.  
  4.  
  5. <div>
  6. <label for="count">Wprowadź liczby</label>
  7. <input id="count" name="count" class="text" type="text" value=""/>
  8. </div>
  9.  
  10. <div>
  11. <input class="submit" type="submit" value="Wyślij" />
  12. </div>
  13.  
  14. </fieldset>
  15. </form>
  16.  
  17.  
  18. <?php
  19. $count = $_POST['count'];
  20. $host='localhost';
  21. $db = 'ado';
  22. $username = 'xxxt';
  23. $password = 'xxx';
  24. $dsn= "mysql:host=$host;dbname=$db";
  25.  
  26. try{
  27. // create a PDO connection with the configuration data
  28. $conn = new PDO($dsn, $username, $password);
  29.  
  30. // display a message if connected to database successfully
  31. if($conn){
  32. echo "Connected to the <strong>$db</strong> database successfully!";
  33. }
  34. }catch (PDOException $e){
  35. // report error message
  36. echo $e->getMessage();
  37. }
  38.  
  39.  
  40. $count = current($conn->query("select count(*) from loto where l1='$count' || l2='$count' || l3='$count' || l4='$count' || l5='$count'|| l6='$count' || l7='$count' ")->fetch());
  41.  
  42. echo "<p> </p>";
  43. echo "Podana liczba to";
  44. echo - $_POST['count'];
  45. echo "<p> Wystąpiła razy $count: </p>";
  46.  
  47.  
  48.  
trueblue
  1. SELECT IF(l1/5=1,1,0)+ IF(l2/5=1,1,0)+ IF(l3/5=1,1,0)+ IF(l4/5=1,1,0)+ IF(l5/5=1,1,0)+ IF(l6/5=1,1,0)+ IF(l7/5=1,1,0) FROM loto

To zapytanie da ilość piątek.
woxala123
Dzięki Tobie za zainteresowanie się tematem- tylko np: wprowadzam w pole input liczby np 21,23,24,25,26 i co mi to to daje- może dałbyś jakiś przykąłd wykorzystując formularz>
Pozdrawiam
trueblue
W input wprowadzasz liczby czy jedną liczbę?
Co przechowujesz przykładowo w jakimś wierszu w kolumnie l1?
woxala123
[sql]
CREATE TABLE `loto` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`data` DATE NOT NULL,
`l1` INT(11) NOT NULL,
`l2` INT(11) NOT NULL,
`l3` INT(11) NOT NULL,
`l4` INT(11) NOT NULL,
`l5` INT(11) NOT NULL,
`l6` INT(11) NOT NULL,
`l7` INT(11) NOT NULL,
PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=20
;

/sql]W tym przykłądzie kóry jest u góry podaje tylko jedna liczbę. Teraz chcę zrobić tak że podaje np: 3 liczby -21,2,24 i chce uzyskac ile razy ta trójka pokazała sie w mojej bazie losowań.
W kolumnie przechowuję 1 liczbę. i tak dalej od l1 do l7
trueblue
To musisz swój warunek, który pokazałeś wyżej, powtórzyć trzykrotnie dla każdej liczby, łącząc każdy taki fragment operatorem AND.

Łatwiej by Ci było, gdybyś każdą liczbę przechowywał w odrębnym rekordzie (jedna tabela na dane ogólne losowania, druga tabela na szczegóły losowania).
woxala123
Okey sróbuję to zrobić za chwilę i poinformuję Ciebie jak to wychodzi.

Jednak pokazuje to ze żlicza wszystkie podane liczby w jedną ilość która występuje w bazie
trueblue
A pokażesz zapytanie czy będziesz trzymał w tajemnicy?
woxala123
okey dla przykłądu
  1. select count(*) from loto where l1=23 || l2=23 || l3=23 || l4=23 || l5=23|| l6=23 || l7=23 AND l1=44 || l2=44 || l3=44 || l4=44 || l5=44|| l6=44 || l7=44
  2.  

Może tu dodac jeszcze po id ale nei wiem jestem w czarnej dziurze
trueblue
Każdy fragment ma być objęty nawiasem.
woxala123
no właśnie zaraz spróbuję-
Wyszło dzięki Pomogłeś =tak i jak kolega wyżej.
Piwo dla was
Tylko mam pytanko czy trzeba modyfikować zmienną $count by móc wprowadzać np: 2 liczby czy tam 3 liczby i czy to mam być po przecinkach?

Teraz mam problem jak zdefiniować $count bym mógł wprowadzić 2 liczby czy np więcej. Proszę o pomoc
Pozdrawiam
Kod wygląda tak
  1. <form action="bn.php" method="POST">
  2. <fieldset>
  3.  
  4.  
  5. <div>
  6. <label for="count">Wprowadź liczby</label>
  7. <input id="count" name="count" class="text" type="text" value=""/>
  8. </div>
  9.  
  10. <div>
  11. <input class="submit" type="submit" value="Wyślij" />
  12. </div>
  13.  
  14. </fieldset>
  15. </form>
  16.  
  17.  
  18. <?php
  19. $count = $_POST['count'];
  20. $db = 'ado';
  21. $username = 'xxxt';
  22. $password = 'xxx';
  23. $dsn= "mysql:host=$host;dbname=$db";
  24.  
  25. try{
  26. // create a PDO connection with the configuration data
  27. $conn = new PDO($dsn, $username, $password);
  28.  
  29. // display a message if connected to database successfully
  30. if($conn){
  31. echo "Connected to the <strong>$db</strong> database successfully!";
  32. }
  33. }catch (PDOException $e){
  34. // report error message
  35. echo $e->getMessage();
  36. }
  37.  
  38.  
  39. $count = current($conn->query("select count(*) from loto where (l1='$count' || l2='$count' || l3='$count' || l4='$count' || l5='$count'|| l6='$count' || l7='$count') AND (l1='$count' || l2='$count' || l3='$count' || l4='$count' || l5='$count'|| l6='$count' || l7='$count') ")->fetch());
  40.  
  41. echo "<p> </p>";
  42. echo "Podana liczba to";
  43. echo - $_POST['count'];
  44. echo "<p> Wystąpiła razy $count: </p>";
  45.  
  46.  
  47.  
  48.  


Czy zrobić 2 pola input i złączyć je jako całość w zmienną count?
trueblue
A dlaczego miałbyś łączyć wartości z pól?

A gdyby było jedno pole. Wiesz jak rozdzielić string gdzie fragmenty są połączone przecinkiem?
woxala123


CZy jest ktoś w stanie pomóc?
kod jest obecnie taki
  1. <form action="bn.php" method="POST">
  2. <fieldset>
  3.  
  4.  
  5. <div>
  6. <label for="count">Wprowadź liczby</label>
  7. <input id="count" name="count" value="" class="text" type="text" />
  8. </div>
  9.  
  10. <div>
  11. <input class="submit" type="submit" value="Wyślij" />
  12. </div>
  13.  
  14. </fieldset>
  15. </form>
  16.  
  17.  
  18. <?php
  19.  
  20. $server = 'localhost';
  21. $username = 'xx';
  22. $password = 'xxx';
  23. $database = 'xxx';
  24.  
  25. try{
  26. $conn = new PDO("mysql:host=$server;dbname=$database;", $username, $password);
  27. } catch(PDOException $e){
  28. die( "Connection failed: " . $e->getMessage());
  29. }
  30. $count = explode(',', $_POST['count']);
  31. $ount = current($conn->query("select count(*) from loto where (l1='$count' || l2='$count' || l3='$count' || l4='$count' || l5='$count'|| l6='$count' || l7='$count') AND (l1='$count' || l2='$count' || l3='$count' || l4='$count' || l5='$count'|| l6='$count' || l7='$count') ")->fetch());
  32.  
  33. echo "<p> </p>";
  34. echo "Podana liczba to";
  35. echo - $_POST['count'];
  36. echo "<p> Wystąpiła razy $ount: </p>";
  37.  

I wywala komunikat Notice: "Array to string conversion in C:\xampp\htdocs\suzo\bn.php on line 31"
trueblue
Zrób jak Ci wygodniej, jak uważasz.
W obydwu przypadkach musisz uwzględnić zmienną ilość wprowadzonych liczb. W przypadku odrębnych pól możliwość wypełnienia np. tylko trzech ostatnich lub pierwszej i ostatniej (choć w przypadku jednego pola też może się zdarzyć, że ktoś wpis 1,,7). W przypadku jednego pola ktoś może wpisać również więcej niż 7 liczb.
woxala123
Po prostu co mam poprawić w tym kodzie aby obliczał choćby parki po wprowadzeniu 2 liczb np po przecinku 23,24.
trueblue
Zmienić zapytanie aby obsługiwało 2 liczby, a nie 3.
A wartość z input przekształcić na dwie liczby za pomocą explode.
woxala123
No tak ale zapytanie jest na dwie liczby a nie wiem jak przekształcić pole input na dwie liczby za pomoca explode? Może jakiś przykład tylko najlepiej z liczbami,
Pozdrawiam
trueblue
Nie wiesz jak użyć funkcji explode? Przecież jest manual i tam są przykłady.
woxala123
Próbuje już różne przykłady chocby i taki
$count = explode('|',$_POST['count']);
trueblue
W polu wpisujesz liczby w postaci: 1|33 ?
woxala123
Nie tak nie wpisuje. W pole wpisuje o tak 33,44 i rozumie ze w tym przypadku powinno być tak ale nie wychodzi $count = explode(',',$_POST['count']);
trueblue
Co nie wychodzi?
Wiesz co otrzymujesz w wyniku działania explode? Wiesz jak tego użyć? Jeśli nie wiesz jak użyć, to sprawdź co jest wynikiem.
woxala123
[php]
$likes=$_POST['count'];
$likes=explode(',', $likes);
print_r($likes);
/php]
I jak wpiszę 23,44

to otrzymuję
Array ( [0] => 23 [1] => 44 )
To dlaczego nie zlicza?
Już na dziś poddaje sie bo jeśli udało mi się fajnie zrobić z jedna liczba to gorzej z dwoma

przy
var_dump($likes); daje
array (size=2)
0 => string '23' (length=2)
1 => string '44' (length=2)
trueblue
Nie wiem dlaczego, bo nie podałeś reszty kodu.
Być może wstawiasz wartość $count po explode do zapytania (tj. w ogóle nie zmieniłeś zapytania).
woxala123
kopiuje ci kod aktualny
  1. <form action="bn.php" method="POST">
  2. <fieldset>
  3.  
  4.  
  5. <div>
  6. <label for="count">Wprowadź liczby</label>
  7. <input id="count" name="count" value="" class="text" type="text" />
  8. </div>
  9.  
  10. <div>
  11. <input class="submit" type="submit" value="Wyślij" />
  12. </div>
  13.  
  14. </fieldset>
  15. </form>
  16.  
  17.  
  18. <?php
  19.  
  20. $server = 'localhost';
  21. $username = 'root';
  22. $password = '';
  23. $database = 'ado';
  24.  
  25. try{
  26. $conn = new PDO("mysql:host=$server;dbname=$database;", $username, $password);
  27. } catch(PDOException $e){
  28. die( "Connection failed: " . $e->getMessage());
  29. }
  30. $likes=$_POST['count'];
  31.  
  32.  
  33. $count = explode(',',$likes);
  34. $ount = current($conn->query("select count(*) from loto where (l1='$count' || l2='$count' || l3='$count' || l4='$count' || l5='$count'|| l6='$count' || l7='$count') AND (l1='$count' || l2='$count' || l3='$count' || l4='$count' || l5='$count'|| l6='$count' || l7='$count') ")->fetch());
  35.  
  36. echo "<p> </p>";
  37. echo "Podana liczba to";
  38. echo - $_POST['count'];
  39. echo "<p> Wystąpiła razy $ount: </p>";
  40.  
  41.  
  42.  
  43.  
trueblue
Co się dzieje w linii 31?
A co w linii 33?
A po co current w linii 34 i jak tam podstawiasz liczby?
woxala123
Linie 31 już usunąłem a do dalszych działań to proszę mi pomóc zmienić na włąściwy kod.

I nic dalej nie da się z tym zrobić?

To trueblue jak to explode powinno wygladać skoro wszystkie mozliwe znane mi rozwiązania nic nie dają by te 2 liczby były użyte w zapytaniu?
Chciałbym ten temat już zakonczyć i widzieć efekt finalny. A na rzaxie ślęcze nad tym cały dzień.
trueblue
A dlaczego chcesz zmieniać explode? Przecież otrzymujesz dwie liczby.
Pisałem wyżej, że pewnie nie zmieniłeś zapytania i nadal tam podstawiasz $count. Podstaw tam te dwie liczby.
woxala123
Okey podstawiam 2 liczby w którym miejscu,robię to w polu input tak i nic nie zlicza ile dana para pokazała się . Jeśli zrobie tak że robię kwarendę w sql
select count(id) from loto where (l1=23 || l2=23 || l3=23 || l4=23 || l5=23|| l6=23 || l7=23) AND (l1=44 || l2=44 || l3=44 || l4=44 || l5=44|| l6=44 || l7=44) to wychodzi wię o co tu gra?
Czy wywalić $count z tych kolumn w zapytaniu tak to rozumiem ale w zamian co tam dać?

Jeszcze tak zastanawiam się czy zamiast tam gdzie jest w zapytaniu l1=$count itd... zrobić l1=? i wtedy w polu input wypisać liczby np: 23,44.

Witam
Czy jest na to jakieś skuteczne rozwiązanie. Prosze o pomoc.
Pozdrawiam
nospor
O ten kawalek
(l1=23 || l2=23 || l3=23 || l4=23 || l5=23|| l6=23 || l7=23) AND (l1=44 || l2=44 || l3=44 || l4=44 || l5=44|| l6=44 || l7=44)
masz teraz zbudowac dynamicznie. Dla kazdej liczby wpisanej w twoim input masz wygenerowac
(l1=liczba || l2=liczba || l3=liczba || l4=liczba || l5=liczba|| l6=liczba || l7=liczba)
gdzie liczba to aktualna liczba z tablicy liczb, ktore masz wpisane w input po przecinku.

Proste smile.gif
woxala123
Nospor jeśli dobrze rozumiem to muszę nadać input
<input id="count" name="count[]" value="" class="text" type="text" /> i powiem Ci że nie wiem jak wygenerować dla liczby wpisanej po przecinku dla każdej kolumny.
Proszę daj jakiś przykąłd bym mógł to zgłębic.
nospor
Ja ci nie kazalem zmieniac inputa... INPUT oraz twoje explode ma zostac jak bylo. Ja ci napisalem co masz zrobic dalej.
woxala123
Czyli szczegół tkwi w zapytaniu do bazy. Tak że proszę Ciebie jak to wygenerować- nie wiem jak do tego zabrać si. Podaj jakiś przykład a po przeanalizowaniu sobie to poprawie. Z góry dzięki nospor. Podoba mi się u Ciebie że jesteś konkretny.
b4rt3kk
Czy masz możliwość przebudowania bazy danych? Bo nie da się ukryć, że takie wyszukiwanie jak chcesz zrobić obecnie jest dosyć upierdliwe.

Znacznie prościej by było jakbyś miał taką strukturę:

Tabela losowanie o kolumnach: id, data.

Oraz tabela liczby o kolumnach: id, id_losowanie, liczba. Gdzie id_losowanie to klucz obcy z tabeli losowanie.

I w takim układzie nasze zapytanie będzie znacznie prostsze, a sama struktura bazy bardziej przejrzysta.

  1. SELECT COUNT(*) FROM (SELECT COUNT(id_losowanie) FROM liczby WHERE liczba IN (zmienna1, zmienna2, zmienna3) GROUP BY id_losowanie HAVING COUNT(id_losowanie) = 3) tab


Gdzie w warunku HAVING COUNT(id_losowanie) = 3 musisz podać liczbę odpowiednią dla liczby wprowadzonych parametrów w warunku WHERE liczba IN (zmienna1, zmienna2, zmienna3).

Edit: Błąd w zapytaniu.
woxala123
okey b4rt3kk spróbuje użyć twojej metody ale proszę jeszcze uwagi do tego kodu który jest by móc choćby znaleźć rozwiązanie.
Wezmę się za to jeszcze dziś. Założę nową bazę danych i dwie nowe tabele. Jak pozwolisz będę co jakiś czas prezentował kod i proszę o wszelkie uwagi.
Pozdrawiam

  1. CREATE TABLE ` liczby` (
  2. `id` INT(11) NULL DEFAULT NULL,
  3. ` id_los` INT(11) NULL DEFAULT NULL,
  4. `liczba` INT(11) NULL DEFAULT NULL
  5. )
  6. ENGINE=InnoDB
  7. ;
  8.  
  9.  
  10. CREATE TABLE ` los` (
  11. `id` INT(11) NULL DEFAULT NULL,
  12. `data` DATE NULL DEFAULT NULL
  13. )
  14. COLLATE='latin1_swedish_ci'
  15. ENGINE=InnoDB
  16. ;

TAk zrobiłem strukturę bazy
trueblue
Gwoli ścisłości, proponowałem Ci rozbicie na dwie tabele w poście #6.
b4rt3kk
Dodaj jeszcze do obu tych tabel na kolumnie id, że jest to klucz główny i ma automatyczną inkrementację.
woxala123
trueblue wiem że dałeś taką propozycję i szanuje Twoją ofertę. Tylko jak by mozna rozstrzygnąc ten temat z tym kodem to też by było fajnie. Bo nie powiem zamieszałeś mi trochę z podpowiedziami.
Pozdrawiam
A to jest nowa tabela
  1. CREATE TABLE ` los` (
  2. `id` INT(11) NOT NULL AUTO_INCREMENT,
  3. `data` DATE NOT NULL,
  4. PRIMARY KEY (`id`)
  5. )
  6. COLLATE='latin1_swedish_ci'
  7. ENGINE=InnoDB
  8. ;
  9.  
  10. CREATE TABLE ` liczby` (
  11. `id` INT(11) NOT NULL AUTO_INCREMENT,
  12. `id_los` INT(11) NOT NULL,
  13. `liczba` INT(11) NOT NULL,
  14. PRIMARY KEY (`id`)
  15. )
  16. COLLATE='latin1_swedish_ci'
  17. ENGINE=InnoDB
  18. ;
  19.  
  20.  

Teraz jest dobrze?

Jeśli dobrze to teraz wezmę się za zrobienie formularza.
b4rt3kk
Tak, jest ok. Z tego co czytałem to formularz już chyba masz? Pozostaje kwestia odpowiedniego podpięcia wsystkiego.
woxala123
Mam pytanie jakie pola input wprowadzic do formularza. Czy to musi byź każde pole na osobną liczbę czy wystarczy że zrobię to w postaci jednego pola gdzie będę wpisywał np: 3 liczby po przecinku -31,35,46
i jeszcze jedno pole zawierające że ma szukać np: dwójek trójek itp.
b4rt3kk
Cytat(woxala123 @ 21.08.2017, 20:05:15 ) *
Mam pytanie jakie pola input wprowadzic do formularza. Czy to musi byź każde pole na osobną liczbę czy wystarczy że zrobię to w postaci jednego pola gdzie będę wpisywał np: 3 liczby po przecinku -31,35,46
i jeszcze jedno pole zawierające że ma szukać np: dwójek trójek itp.


Wiesz, to już zależy od Twojej inwencji. Jeśli chcesz na każdą liczbę osobne pole tekstowe to ograniczasz w ten sposób liczbę możliwości, bo musisz z góry założyć ile tych liczb będzie (chyba, że formularz będzie generowany dynamicznie za pomocą np jQuery).

Jeśli będzie to jedno pole tekstowe, gdzie wymieniasz liczby po przecinku, to chyba nie potrzebujeszdodatkowego pola określającego czy ma szukać dwójek, trójek, itd. ponieważ wystarczy, że sprawdzisz ile liczb wprowadził użytkownik, no i tyle będziesz szukał.
woxala123
  1. <form action="los.php" method="POST">
  2.  
  3.  
  4. <div>
  5. <label for="count">Wprowadź liczby</label>
  6. <input placeholder="wprowadź liczby" id="count" name="count" value="" class="text" type="text" />
  7. </div>
  8.  
  9. <div>
  10. <input class="submit" type="submit" value="Wyślij" />
  11. </div>
  12.  
  13. </form>

  1. <?php
  2.  
  3. $server = 'localhost';
  4. $username = 'root';
  5. $password = '';
  6. $database = 'ado';
  7.  
  8. try{
  9. $conn = new PDO("mysql:host=$server;dbname=$database;", $username, $password);
  10. } catch(PDOException $e){
  11. die( "Connection failed: " . $e->getMessage());
  12. }
  13.  
  14.  
  15.  
  16. $ount = current($conn->query("SELECT COUNT(*) FROM (SELECT COUNT(id_los) FROM liczby WHERE liczba IN (zmienna1, zmienna2, zmienna3) GROUP BY id_los HAVING COUNT(id_los) = 3)")->fetch());

to jest tak teraz.
I zainterpretować zmienną? Czy to ma być na conunt?
Dodałem twoje zapytanie-czy jest dobrze
b4rt3kk
Tak jak koledzy Ci pisali wcześniej, musisz rozbić stringa przekazanego w inpucie na poszczególne liczby:

  1. $liczby_do_sprawdzenia = array_filter(explode(',', $_POST['liczby']), 'is_numeric');
  2. $wielkosc_tablicy = sizeof($liczby_do_sprawdzenia);
  3.  
  4. var_dump($liczby_do_sprawdzenia, $wielkosc_tablicy);
woxala123
No właśnie b4rt3kk jak zapisywać losowania że to będzie gdzie kolumna liczba mam podać całość losowania liczb czyli 4,21,46,45,22,5 czy każda liczba ma być w osobnym rekordzie?
Bo jeśli całość losowania to muszę zwiększyć wartość znakó w kolumnie liczba do 255 i TINYTEXT
b4rt3kk
Cytat(woxala123 @ 21.08.2017, 20:53:16 ) *
No właśnie b4rt3kk jak zapisywać losowania że to będzie gdzie kolumna liczba mam podać całość losowania liczb czyli 4,21,46,45,22,5 czy każda liczba ma być w osobnym rekordzie?
Bo jeśli całość losowania to muszę zwiększyć wartość znakó w kolumnie liczba do 255 i TINYTEXT


Każda liczba to osobny rekord, inaczej bez sensu jest takie rozbicie. Oczywiście pamiętaj o tym, że wszystkie wylosowane liczby dla danego losowania muszą mieć ten sam id_los, odpowiadający id z tablicy los.

Takie rozwiązanie ma jeszcze wiele innych zalet, m.in. możesz losować dowolną liczbę liczb dla każdego losowania. Więc jak kiedyś sobie wymyślisz, że teraz każde losowanie będzie dostarczać 10 liczb to to zrobisz bez najmniejszego problemu, bez zmian na bazie danych.
woxala123
Tylko czy losowania zapisywać to z przecinkami liczby czy spacjami? Wiadomo że data osobno a id osobno no i tak jak wspomniałes trzymać się reguły że id_los, odpowiadający id z tablicy los.
b4rt3kk
Cytat(woxala123 @ 21.08.2017, 21:25:12 ) *
Tylko czy losowania zapisywać to z przecinkami liczby czy spacjami? Wiadomo że data osobno a id osobno no i tak jak wspomniałes trzymać się reguły że id_los, odpowiadający id z tablicy los.


Jeśli mówisz o uzupełnianiu tabeli danymi, to przecież liczby masz w postaci integerów, nie wstawisz tam żadnego dodatkowego znaku, typu przecinek czy spacja. Same liczby.

Wstawione dane mają wyglądać w ten sposób:

Kod
TABELA los:
id | data
===+======
1  | 2017-08-20

TABELA liczba:
id | id_los | liczba
===+========+=======
1 | 1 | 56
2 | 1 | 77
3 | 1 | 89
4 | 1 | 99
woxala123
Dzięki właśnie mi o to chodziło z tą bazą.


Dzięki za dzisiejsze porady. Jutro poproszę Ciebie najwyżej o wskazówki do dalszego funkcjonowania skryptu.

Witam

Wracam do pisania kodu. Do bazy wprowadziłem kilka losowań i teraz pytanie w twoim zapytaniu jest zmienna1, zmienna2, zmienna3 co one powinny zawierać?
Aktualnie mam coś takiego.
  1. <form action="los.php" method="POST">
  2. <fieldset>
  3.  
  4.  
  5. <div>
  6. <label for="liczby">Wprowadź liczby</label>
  7. <input placeholder="wprowadź liczby" id="liczby" name="liczby" value="" class="text" type="text" />
  8. </div>
  9.  
  10. <div>
  11. <input class="submit" type="submit" value="Wyślij" />
  12. </div>
  13.  
  14. </fieldset>
  15. </form>
  16.  
  17. <?php
  18.  
  19. $server = 'localhost';
  20. $username = 'root';
  21. $password = 'xxx';
  22. $database = 'xxx';
  23.  
  24. try{
  25. $conn = new PDO("mysql:host=$server;dbname=$database;", $username, $password);
  26. } catch(PDOException $e){
  27. die( "Connection failed: " . $e->getMessage());
  28. }
  29. $liczby_do_sprawdzenia = array_filter(explode(',', $_POST['liczby']), 'is_numeric');
  30. $wielkosc_tablicy = sizeof($liczby_do_sprawdzenia);
  31.  
  32. var_dump($liczby_do_sprawdzenia, $wielkosc_tablicy);
  33.  
  34. $ount = current($conn->query("SELECT COUNT(*) FROM (SELECT COUNT(id_los) FROM liczby WHERE liczba IN (zmienna1, zmienna2, zmienna3) GROUP BY id_los HAVING COUNT(id_los) = 3)")->fetch());
  35.  
  36. echo "<p> </p>";
  37. echo "Podana liczba to";
  38. echo -$_POST['liczby'];
  39. echo "<p> Wystąpiła razy $ount: </p>";
  40. }


Sorry że jestem niecierpliwy, ale chcę dale pchnąć ten skrypt do końca. Czy jest ktoś dalej pomóc w tej materii.?Pozdrawiam
nospor
No toc liczby z tablicy $liczby_do_sprawdzenia ....
woxala123
  1. $lop = array_filter(explode(',', $_POST['liczby']), 'is_numeric');
  2. $wielkosc_tablicy = sizeof($lop);
  3.  
  4. var_dump($lop, $wielkosc_tablicy);
  5.  
  6. $ount = current($conn->query("SELECT COUNT(*) FROM (SELECT COUNT(id_los) FROM liczby WHERE liczba IN ($lop) GROUP BY id_los HAVING COUNT(id_los) = 2)")->fetch());
  7. echo "<p> </p>";
  8. echo "Podana liczba to";
  9. echo -$_POST['liczby'];
  10. echo "<p> Wystąpiła razy $ount: </p>";
  11.  

To część kodu. Jak wpisuje liczby i wysyłam to pokazyje się komunikat
array (size=2)
0 => string '21' (length=2)
1 => string '23' (length=2)

C:\xampp\htdocs\suzo\los.php:32:int 2


( ! ) Notice: Array to string conversion in C:\xampp\htdocs\suzo\los.php on line 34
Call Stack
# Time Memory Function Location
1 0.0009 357064 {main}( ) ...\los.php:0

( ! ) Fatal error: Uncaught Error: Call to a member function fetch() on boolean in C:\xampp\htdocs\suzo\los.php on line 34
( ! ) Error: Call to a member function fetch() on boolean in C:\xampp\htdocs\suzo\los.php on line 34
Call Stack
# Time Memory Function Location
1 0.0009 357064 {main}( ) ...\los.php:0

Co począc dalej?
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.