Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Tablica zamiast wielokrotnego sprawdzania, i dwa zapytanie sql w jednym
ktosz
post 2.12.2016, 06:35:57
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 2
Dołączył: 27.01.2009
Skąd: Warszawa, Mazowieckie

Ostrzeżenie: (0%)
-----


hej mam sobie zrobione takiego bota, ktory sprawdza czy ktos wpisal dana tresc w formularzu i odpowiada. i mam okolo 50 takich komend, a wyglada to tak:

  1. <?php
  2. $pos = strpos($_POST['txt'], '-wstawaj');
  3. if ($pos === false) {
  4. } else {
  5. $_POST['txt']=str_replace('-wstawaj', '&nbsp;', $_POST['txt']);
  6. $wyswietli="wstajemy";
  7. }
  8. $pos = strpos($_POST['txt'], '-spij');
  9. if ($pos === false) {
  10. } else {
  11. $_POST['txt']=str_replace('-spij', '&nbsp;', $_POST['txt']);
  12. $wyswietli="śpimy";
  13. }
  14. $pos = strpos($_POST['txt'], '-lez');
  15. if ($pos === false) {
  16. } else {
  17. $_POST['txt']=str_replace('-lez', '&nbsp;', $_POST['txt']);
  18. $wyswietli="leżymy";
  19. }
  20. ?>

i tak dalej i tak dalej do 50 paru, jak w prosty sposob to zmienic na cos szybszego, bo to dziala, ale wiem, ze jest wolne i zle zrobione.


no i pytanie z mysql, mam dwie linie, INSERT INTO i UPDATE. Oczywiście działa, ale chcę to wrzucić w jedno.
  1. mysql_query("INSERT INTO `tabela` VALUES ('$nick','$email','$haslo','$zmienna')");
  2. mysql_query("UPDATE `inna` SET `kiedy`=$czas, `nastepnie`=$czas WHERE `id`=$kto[id]");


robię tak jak poniżej, lecz nie działa.
  1. mysql_query("INSERT INTO `tabela` VALUES ('$nick','$email','$haslo','$zmienna'); UPDATE `inna` SET `kiedy`=$czas, `nastepnie`=$czas WHERE `id`=$kto[id]");




dziekuje za pomoc

Ten post edytował ktosz 2.12.2016, 06:56:49
Go to the top of the page
+Quote Post
Tomplus
post 2.12.2016, 08:30:52
Post #2





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Aby działało Ci wielozapytania, to musisz skorzystać z MySQLi czyli MySQL Improvment

Działa podobnie do mysql ale musisz zmienić trochę kodu w zapytaniach:
http://www.w3schools.com/php/php_ref_mysqli.asp

Albo najlepiej nauczyć się PDO, obsługuje bazy MySQL i dodatkowo też możesz tworzyć wielozapytania.
Go to the top of the page
+Quote Post
ktosz
post 2.12.2016, 10:38:09
Post #3





Grupa: Zarejestrowani
Postów: 90
Pomógł: 2
Dołączył: 27.01.2009
Skąd: Warszawa, Mazowieckie

Ostrzeżenie: (0%)
-----


Okej dzieki, przechodze na MySQLi smile.gif. Wszystko juz pozmienialem sobie tylko mam problem z takim zapytaniem, ktore zlicza mi ilu ludzi jest na danej podstronie:

  1. $iletamjest=mysql_result(mysql_query("SELECT COUNT(id) FROM `users` WHERE `ostatnio_stronadwa`>$byl AND `strona`='0'"), 0);

No i na MySQL mi zlicza poprawnie, ale zmieniajac na:
  1. $iletamjest=mysqli_result($mysql->query("SELECT COUNT(id) FROM `users` WHERE `ostatnio_stronadwa`>$byl AND `strona`='0'"), 0);

to juz mi natomiast nie dziala. i mam problem? z reszta sobie porawdzilem.


no i co do czesci pierwszej z tym php mam zapytanie

Ten post edytował ktosz 2.12.2016, 10:39:03
Go to the top of the page
+Quote Post
viking
post 2.12.2016, 10:48:32
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Nie ma funkcji mysqli_result. Query zwraca obiekt http://php.net/manual/pl/class.mysqli-result.php na którym możesz dalsze operacje wykonywać.


--------------------
Go to the top of the page
+Quote Post
nospor
post 2.12.2016, 10:53:22
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
mysqli_result($mysql->query("SELECT COUNT(id) FROM `users` WHERE `ostatnio_stronadwa`>$byl AND `strona`='0'"), 0);

I przyjmij jedna banalna zasade: jedna linia, jedna komenda.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ktosz
post 2.12.2016, 18:32:32
Post #6





Grupa: Zarejestrowani
Postów: 90
Pomógł: 2
Dołączył: 27.01.2009
Skąd: Warszawa, Mazowieckie

Ostrzeżenie: (0%)
-----


dzieki

A na to pierwsze z php zapytanie ktos odpowie? to bylo glowne?
Go to the top of the page
+Quote Post
Tomplus
post 2.12.2016, 19:14:43
Post #7





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Jeżeli logika tych komend jest taka sama, to wystarczy stworzyć sobie jakąś tablicę a następnie pętle.

  1. <?php
  2. $komendy = [
  3. 'wstawaj' => 'wstajemy', 'spij' => 'śpimy', 'lez' => 'leżymy'
  4. ];
  5.  
  6. foreach($komendy as $rozkaz => $komenda) {
  7. if(!strpos($_POST['txt'], '-'.$rozkaz)) {
  8. $_POST['txt'] = str_replace('-'.$rozkaz, '&nbsp;', $_POST['txt']);
  9. $wyswietli = $komenda;
  10. }
  11. }
  12. ?>



Ew. bez pętli, ale z użyciem switch.

Ten post edytował Tomplus 2.12.2016, 19:14:57
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:12