Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Formularz i blokowanie dopisywania do bazy.
Forum PHP.pl > Forum > Przedszkole
hosti
Witam serdecznie wszystkich forumowiczów.
Mam do Was ogromną prośbę o pokierowanie w temacie. Może najpierw opiszę co mam a później co powinienem mieć.
Otóż mam tak:
- małą bazę danych

  1. CREATE TABLE test (
  2. id int( 11 ) NOT NULL AUTO_INCREMENT ,
  3. imie varchar( 150 ) NOT NULL DEFAULT '',
  4. indeks varchar( 150 ) NOT NULL DEFAULT '',
  5. email varchar( 150 ) NOT NULL DEFAULT '',
  6. specjalnosc varchar( 150 ) NOT NULL DEFAULT '',
  7. DATA varchar( 150 ) NOT NULL DEFAULT '',
  8. PRIMARY KEY ( id )
  9. );


- formularz

  1. <select name="specjalnosc" id="specjalnosc" >
  2. <optgroup style="font-weight: bold;" id="tytul" label="Specjalnosc">
  3. <option value ="Profesor nr 1">Profesor nr 1</option>
  4. <option value ="Profesor nr 2">Profesor nr 2</option>
  5. <option value ="Profesor nr 3">Profesor nr 3</option>
  6. <option value ="Profesor nr 4">Profesor nr 4</option>
  7. <option value ="Profesor nr 5">Profesor nr 5</option>
  8. <option value ="Profesor nr 1">Profesor nr 1</option>
  9. <option value ="Profesor nr 1">Profesor nr 1</option>


Jak na razie wszystko ładnie zostaje zapisane do bazy i przez kolejną stronę wynik.php mam wyświetlone dane z bazy w postaci tabeli.
Problem polega na tym, że dla prof 1 możne się przypisać tylko 5 osób, a dla prof 2 np 10 a dla prof 3 tylko 7, itd...
I tu prosiłbym Was o pomoc. Jak mogę zrobić aby potencjalny Kowalski w momencie kiedy otworzy formularz widział, że do prof nr 1 zostały już tylko 2 miejsca?
I drugi problem, aby po wyczerpaniu "limitu" nie było możliwości się zapisania już do danego prof?

Będę bardzo wdzięczny za udzielenie pomocy.

Pozdrawiam hosti.
Croos22
Z tego co zrozumiałem wystarczy jak zrobisz dodatkowe pole w tabeli w której będzie przechowywana liczba (limit) a następnie przy wysyłaniu formularza sprawdzaj instrukcją warunkową czy nie przekroczyło jeśli nie to dodaj do tego pola +1.
hosti
Cytat(Croos22 @ 14.03.2011, 01:48:03 ) *
Z tego co zrozumiałem wystarczy jak zrobisz dodatkowe pole w tabeli w której będzie przechowywana liczba (limit) a następnie przy wysyłaniu formularza sprawdzaj instrukcją warunkową czy nie przekroczyło jeśli nie to dodaj do tego pola +1.

Tzn powinienem zrobić koleje pole w bazie o nazwie prof. i tu ich wszystkich wpisać i ustawić limity? Dobrze zrozumiałem?
Mi chodzi o to, że z listy rozwijanej w formularzu Kowalski ma kilka opcji, może się zapisać do prof1, 2 ,3 itd. tylko, że każdy z tych prof ma różne limity na zapisy. Do prof 1 może się zapisać tylko 5 kowalskich a do prof 2 tylko 7.
binbash
Witam,

Może zrób tak, stwórz nowa tabele profesorowie z polami id | name | limit | current gdzie limit będzie określał maksymalną ilość profesorów danego typu w systemie, current aktualną ilość profesorów danego typu i potem zamiast pola specjalność stwórz pole profesorowie_id gdzie będziesz tworzył relacje do tabeli profesorowie.
hosti
A czy jest może jakiś inny prostszy sposób odpytania ile już jest zapisanych ludzi?
binbash
  1. SELECT specjalnosc, COUNT(*) AS ile FROM test GROUP BY specjalnosc;
Croos22
Prostszego niż ja i binbash napisaliśmy to chyba już nie ma.

Dodaj do swojej tabeli jedno nowe pole typu int w której będziesz przechowywał liczbę.

Teraz gdy masz już pole możesz ustawić limit:

  1. <form action="" method="POST">
  2. <select name="ok" >
  3. <option value="[wybor]">wybierz</option>
  4. <option value="1">cos1</option>
  5. <option value="2">cos2</option>
  6. </select>
  7. <input type="submit" name="submit" value="Wyslij">
  8. </form>
  9.  
  10.  
  11. <?php
  12. if(isset($_POST['submit'])){
  13. $limit = 6;
  14. if($_POST['ok'] == 1)
  15. {
  16. if($limit <= 6){
  17. echo 'Liczba nie przekracza 6';
  18. }
  19. }
  20. }
  21. ?>


Zauważ w tym przypadku przypisałem do zmiennej $limit liczbę 6 ty zamiast tego użyj bazy. Koniecznie przetestuj kod który podesłałem.
hosti
Super, dziękuję Wam bardzo, wrócę do domu wieczorem i przetestuję. Pewnie jeszcze kilka pytań się nasunie.
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.