Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]pokazanie się liczby
Forum PHP.pl > Forum > Przedszkole
mit2
Witam chce na stronie zrobic cos takiego że jeżeli np. dany port byl wykorzystany nie pokazuje go w option tu mam kod
  1. <tr>
  2. <td class="tabela_pomoc">Port</td>
  3. <td class="tabela_pomoc">
  4. <select name="port" onchange="this.form.submit();"><option value="">Wypierz Port</option>
  5. <?php
  6. $port = "SELECT * FROM serwer WHERE port='$_POST[port]'";
  7. $port = mysql_query("$port");
  8. $port = mysql_fetch_array($port);
  9. $por = "SELECT * FROM zamowienia WHERE port='$_POST[port]'";
  10. $por = mysql_query("$por");
  11. $por = mysql_fetch_array($por);
  12. if($port[port] <> '')
  13. {
  14. if($por[port] <> '')
  15. {
  16. }
  17. }
  18. else
  19. {
  20. $port = "SELECT * FROM gry WHERE id='$_POST[nazywamy]'";
  21. $port = mysql_query("$port");
  22. $port = mysql_fetch_array($port);
  23. $mine = $port[portod];
  24. $maxe = $port[portdo];
  25. for ($c=$mine; $c<=$maxe; $c++) {
  26. if(isset($_POST['port']))
  27. {
  28. $_SESSION['port']=$_POST['port'];
  29. }
  30. ?>
  31. <option <?php if($_SESSION['port'] == $c) { echo 'selected'; }else{ echo ''; } ?> value="<?php echo $c; ?>"><?php echo $c; ?></option>
  32. <?php
  33. }
  34. }
  35. ?>
  36. </select>
  37. </td>
  38. </tr>

jak moge zrobic żeby te żeczy kture nie byly wybierane pokazywalo a te co juz sa w uzyciu nie pokazalo
markonix
Aż mnie ciarki przeszły.

Użyj JOIN przy zapytaniu.
mit2
zmienilem i nic
markonix
Może monitor się spalił?
bastard13
1) Nie pisz: $por[port] tylko $por['port'], bo pierwsza konstrukcja zwraca błąd, co prawda tylko notice, ale zawsze jakiś.
2) Jak masz zapytanie:
  1. "SELECT * FROM serwer WHERE port='$_POST[port]'";
,
to albo napisz tak:
  1. "SELECT * FROM serwer WHERE port='{$_POST['port']}'";

albo (bardziej czytelne, jak na mój gust):
  1. 'SELECT * FROM serwer WHERE port="' . $_POST['port'];

3) Pokaż to zapytanie, które udało ci się stworzyć.
mit2
1 zapytanie
  1. CREATE TABLE `serwer` (
  2. `id` float NOT NULL AUTO_INCREMENT,
  3. `ip` varchar(255) NOT NULL,
  4. `port` varchar(255) NOT NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;


2 zapytanie

  1. CREATE TABLE `zamowienia` (
  2. `id` float NOT NULL AUTO_INCREMENT,
  3. `lokalizacja` varchar(255) NOT NULL,
  4. `gra` varchar(255) NOT NULL,
  5. `ip` varchar(255) NOT NULL,
  6. `port` varchar(255) NOT NULL,
  7. `cena` varchar(255) NOT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;


i 3 zapytanie

  1. CREATE TABLE `gry` (
  2. `id` float NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(255) NOT NULL,
  4. `opis` varchar(255) NOT NULL,
  5. `min_slot` varchar(255) NOT NULL,
  6. `max_slot` varchar(255) NOT NULL,
  7. `portod` varchar(255) NOT NULL,
  8. `portdo` varchar(255) NOT NULL,
  9. `katalog` varchar(255) NOT NULL,
  10. `install` varchar(255) NOT NULL,
  11. `start` varchar(255) NOT NULL,
  12. `cfg` varchar(255) NOT NULL,
  13. `nazwa_start` varchar(255) NOT NULL,
  14. `kstop` varchar(255) NOT NULL,
  15. `krestart` varchar(255) NOT NULL,
  16. `active` varchar(255) NOT NULL,
  17. `data` datetime NOT NULL,
  18. PRIMARY KEY (`id`)
  19. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=7 ;
markonix
Pomyliłeś okna w przeglądarce czy co?
mit2
o co ci chodzi
desperat666
Na mój góst* tu wszystko źle jest, aby to naprawić w edytorze PHP wciśnij [CTRL+A] a potem [BACKSPACE].
Chciałem Ci pomóc, bo lubię wyzwania.
Ale ja tego Twojego zapytania po prostu nie rozumiem.

PS, rozumiem zapytania SQL ale nie w tym rzecz.
markonix
Cytat(mit2 @ 14.04.2011, 23:40:55 ) *
o co ci chodzi

Te pytanie sobie zadaj.

Pytasz o pytanie wybierające, ktoś Cie prosi o pokazanie co zrobiłeś, a Ty dajesz komendy do tworzenia struktury tabel....
pmir13
Wątek zapowiadał się wesoło już na samym początku, od "Wypierz port".
Po czym nastąpiło męczenie biednego portu, który najpierw w linii 6 był zmienną typu string, później w linii 7 resource (gdyby wywołanie było poprawne) by chwilowo zatrzymać się w linii 8 na tablicy.
W zasadzie można jeszcze zrobić
  1. function port( $query )
  2. {
  3. return mysql_query( $query );
  4. }

i do kompletu mamy funkcję port, dzięki czemu możemy jeszcze bardziej oszczędzić i elegancko wywołać:
  1. $port = "SELECT * FROM serwer WHERE port='$_POST[port]'";
  2. $port = port($port);

mit2
ja niechce tego portu do funkcji sprowadzac ja chce zeby jezeli ten port juz byl wykorzystany to go nie pokazuje
markonix
A może ruszysz siedzisko i pokażesz co już zrobiłeś (po mojej radzie i kolegi).
Popraw ten kod, dodaj odstępy i wytłumacz raz jeszcze o co chodzi i najlepiej bez błędów ortograficznych.
mit2
chodzi mi o to że pobiera liczbę z gry i chce zrobić coś takiego jeżeli dany port był wybrany i jest on np. w tabeli serwer albo w tabeli zamówienia to go nie pokazuje
  1. <tr>
  2. <td class="tabela_pomoc">Port</td>
  3. <td class="tabela_pomoc">
  4. <select name="port" onchange="this.form.submit();"><option value="">Wypierz Port</option>
  5. <?php
  6. $port = "SELECT * FROM serwer WHERE port='{$_POST['port']}'";
  7. $port = mysql_query("$port");
  8. $port = mysql_fetch_array($port);
  9. $por = "SELECT * FROM zamowienia WHERE port='{$_POST['port']}'";
  10. $por = mysql_query("$por");
  11. $por = mysql_fetch_array($por);
  12. if($port['port'] <> '')
  13. {
  14. if($por['port'] <> '')
  15. {
  16. }
  17. }
  18. else
  19. {
  20. $port = "SELECT * FROM gry WHERE id='$_POST[nazywamy]'";
  21. $port = mysql_query("$port");
  22. $port = mysql_fetch_array($port);
  23. $mine = $port[portod];
  24. $maxe = $port[portdo];
  25. for ($c=$mine; $c<=$maxe; $c++) {
  26. if(isset($_POST['port']))
  27. {
  28. $_SESSION['port']=$_POST['port'];
  29. }
  30. ?>
  31. <option <?php if($_SESSION['port'] == $c) { echo 'selected'; }else{ echo ''; } ?> value="<?php echo $c; ?>"><?php echo $c; ?></option>
  32. <?php
  33. }
  34. }
  35. ?>
  36. </select>
  37. </td>
  38. </tr>
kill15
Cytat(mit2 @ 14.04.2011, 15:49:19 ) *
Witam chce na stronie zrobic cos takiego że jeżeli np. dany port byl wykorzystany nie pokazuje go w option tu mam kod


Nie wiem czy Cię dobrze zrozumiałem ale może jak raz.
Chcesz aby można było wybrać tylko te porty których nikt wcześniej nie wybrał tak??
Jeżeli o to Ci chodzi to:
Zrób przy portach dodatkową kolumnę np nazwa "wykorzystane" z typem int.
Porty niewykorzystane oznacz 1.
A wykorzystane 0.
I później ściągaj tylko te co mają 1 warunkiem WHERE wykorzystane='1'.
No i oczywiście potem gdy ktoś zarezerwuje ten port czy coś to musisz tą 1 zmieniać na 0.

Nie jestem pewny czy o to Ci chodziło.
desperat666
  1. <tr>
  2. <td class="tabela_pomoc">Port</td>
  3. <td class="tabela_pomoc">
  4. <select name="port" onchange="this.form.submit();">
  5. <option selected value="">WyBierz Port</option>
  6. <?php
  7.  
  8. $portwykorzystany = FALSE;
  9.  
  10. $port = $_POST['port'];
  11. $query = "SELECT * FROM serwer WHERE port='".$port."'";
  12. $result = mysql_query($query);
  13.  

nie, sorry, poddaję się.
mit2
no jeżeli mam już ten początek napisany desperat666 to co dalej
kto ma pomysl jak to zrobic

ma ktos jakis pomysl jak to zrobic
markonix
kill15 ma przecież.
Nie umiesz mu odpisać, czy dobrze zrozumiał Twój problem?
kill15
mit2
jak my mamy Ci pomóc jak ty chyba tego nie chcesz questionmark.gif

markonix
chodzi Ci o tabele active questionmark.gif
Nie wiem czy to dla niego jest jakiś link aktywacyjny czy co, bo na kiego grzyba mu varchar przy tym? żeby się tam dostały jakieś niepotrzebne znaki questionmark.gif

Jeżeli active jest tą kolumną która ma sprawdzić czy port jest wolny to zrób to pole int i 0 to niech będą wykorzystane a 1 to niewykorzystane.
  1. $port = "SELECT * FROM gry WHERE id='$_POST[nazywamy]'" AND active='1';


Piszę jeszcze wg tamtego postu bo autor nie zmienił pytania ani nie sprecyzował.

mit2
odpisz to postaram Ci się pomóc.

  1. <?php if($_SESSION['port'] == $c) { echo 'selected'; }else{ echo ''; } ?>


Po co to questionmark.gif


desperta666 napisał dobrze
Cytat
[CTRL+A] a potem [BACKSPACE].
mit2
nie chodzi mi czy jest active chodzi mi o to ze gdy wypelniam formularz wypelniam tez port i wysylam to do zamowienia a nastepnie do serwerow. i chce zrobic cos takiego ze jeżeli dany port juz jest np. w zamowienia lub serwer to go nie pokazuje


poprostu po karzydym wyborze jakiejs z rzeczy odświerza się strona i zapisuje do sesji
markonix
Cholera jasna zainstaluj sobie FireFox z podkreślaniem składni bo się Ciebie nie da czytać!
Urwało Ci z klawiatury przycisk ALT?

Gdzie zapisywana jest informacja o tym, że jakiś port jest już zamówiony?
W sesji? Bezsens totalny. Przecież to chyba się zamawia na jakiś czas, a nie na okres do wyłączenia przeglądarki.
kill15
mit2

czy na tym forum obowiązuje kultura ? bo mnie kur...de coś trafia. ohno-smiley.gif nerdsmiley.png oneeyedsmiley02.png arrowheadsmiley.png
napisałem Ci co masz zrobić przeczytaj i jeśli coś jest niezrozumiałe to napisz...

PS:
"on ma hyba mieji lat nirz ja a ja jestem jednym z mlodszyh urzytkownikuw tego foróm dlatego muglbys powiedźieci nam ile masz lat"
mit2
Cytat(kill15 @ 15.04.2011, 19:25:29 ) *
Nie wiem czy Cię dobrze zrozumiałem ale może jak raz.
Chcesz aby można było wybrać tylko te porty których nikt wcześniej nie wybrał tak??
Jeżeli o to Ci chodzi to:
Zrób przy portach dodatkową kolumnę np nazwa "wykorzystane" z typem int.
Porty niewykorzystane oznacz 1.
A wykorzystane 0.
I później ściągaj tylko te co mają 1 warunkiem WHERE wykorzystane='1'.
No i oczywiście potem gdy ktoś zarezerwuje ten port czy coś to musisz tą 1 zmieniać na 0.

Nie jestem pewny czy o to Ci chodziło.

nie czytalem twojego postu tylko nastepny i nie zauwazylem ze go dales. teraz jest taka sprawa ze porty sa od do a nie każdy osobnowiec jak to moge zrobic
kill15
To może nie rób na min i maks tylko zrób osobną tabele z portami. po co sobie utrudniać questionmark.gif
mit2
juz chyba wiem jak to zrobi utworze tabele i w tej tabeli bedzie czy wykorzystane czy nie
markonix
A po co osobna tabela? Nie lepiej kolumna z flagą 0/1?
mit2
ale to by nic nie dalo ponieważ mialem dane port od do nie wypisane osobno bylo tylko np. port od 27015 do 2740 i pokazywało reszte pomiędzy tymi portami
markonix
Sory ale PHP nie jest dla dzieci NEO.

Naucz się pisać, budować zdania i nie popełniać merytorycznych błędów typu "od 27015 do 2740" to może ktoś Ci pomoże.
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.