Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Kolejność liczbowa
maya
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 28.03.2022

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


Cześć.

Sprzedaje bilety online na wycieczki i w związku z tym mam / generuje formularz z polami text (nr biletu, imie, nazwisko, email)
Ooyrzebowalbym zroboć cos na zasadzie unikalnego id takiego ktory jest generowany dla tabeli (autoincrement)
Niestety to co mam teraz zostalo zrobione 10 lat temu i oparte jest o pliki nie baze. Potrzebowalbym aby w pole NUMER BILETU wstawić liczby jako numer biletu. Zaczęło by się to od liczby 2000 zeby ktoś nie myslal ze dopiero zaczynam hehe.

Mam formularz gdzie wybieram ilosc osób przykladowo 10 i wtedy bastepuje wygenerowanie formularza przez pętle. Mam więc 10 wierszy z polami text. Chcialbym aby w miejscu NUMER BILETU osadzic zawsze numery po kolei
Np.
2001
2002
2003
2004
Itd

Potem nastepuje zapis do pliku. Pozniej znowu generuje formularz i znowu chcialbym aby numery się tam osadzaly ALE juz zaczynając od ostatbiej najwiekszej liczby jaka byla wygenerowana. Wiec jak bylo to 2010 to nowy formularz z polami biletow zaczął by się od 2010. Nie byloby problemu z bazą danych (wtedy dawalbym po prostu ID tam) ale niestety to jest na plikach i nie wiem jak to rozwiaxac. Trzebaby to gdzies zapisywac, pobierac, zwiekszac w petli potem znowu zapisywac..... Szukam optymalnego rozwiazania.

Jak to najlepiej zrobic?

Ten post edytował maya 28.03.2022, 14:08:28
Go to the top of the page
+Quote Post
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Gdybyś miał bazę, to nic by to nie dało, bo nie możesz wygenerować dwóch lub więcej formularzy z tymi samymi numerami. A tak mogłoby się zdarzyć gdyby kilku użytkowników otworzyło formularz rejestracji, a nie dokonało zapisu.
Podczas generowania tego formularza, nie jest potrzebny numer. Numer ten nadajesz podczas zapisu. Wtedy wyciągasz z pliku numer (tego z rekordami lub odrębnego gdzie jest tylko ostatni numer), zwiększasz o 1 i zapisujesz kolejne bilety, nie dopuszczając do jednoczesnego zapisu z innego żądania.
Go to the top of the page
+Quote Post
maya
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 28.03.2022

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


Dzieki za odpowiedz. Jakos to musze ogarnac.

Mialbym jeszcze jedno pytanie.
Ten formularz generuje na zasadzie tablicy. Wszystkie pola NAME mają znak tablicy np. name="name[]"...i tak dla kazdego NAME z tych pól.
Próbuje znalesc sposob na jedno z nich. Mianowicie jest to name="nationality[]"
Chcialbym dla wygody umiescic sjrypt autouzupelnienia. Wpisalbym np "A" a skrypt wyswietlilby wszyskie kraje na litere A. Problem w rym ze to tablica i generowana przez petle wiec jak osadze ID do tego pola to wszedzie bedzie to samo. Mam nadzieje ze wiadomo o co chodzi.
Jak to ominąć/zrobic?

Ten post edytował maya 28.03.2022, 15:11:22
Go to the top of the page
+Quote Post
Salvation
post
Post #4





Grupa: Zarejestrowani
Postów: 405
Pomógł: 73
Dołączył: 15.07.2014

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


To napisz Service, który zwróci Ci listę krajów odpytując metodę z argumentami lub bez. Wtedy będziesz mieć to odseparowane i reużywalne w zgodzie z DRY. Raz użyjesz w aktualnym miejscu, a raz w tym gdzie potrzebujesz zwrócić listę krajów do przeszukania.
Go to the top of the page
+Quote Post
maya
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 28.03.2022

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


Cytat(Salvation @ 28.03.2022, 15:59:58 ) *
To napisz Service, który zwróci Ci listę krajów odpytując metodę z argumentami lub bez. Wtedy będziesz mieć to odseparowane i reużywalne w zgodzie z DRY. Raz użyjesz w aktualnym miejscu, a raz w tym gdzie potrzebujesz zwrócić listę krajów do przeszukania.

Ja nie mam pojecia jak to zrobic bo nie znam js wogole. Są dostepne przyklady w necie ale kazde opiera sie na podaniu nazwy pola text ale w moim przypadku jest to tablica wiec skrypt bedzie dzialal na kazdym z pól w danym momencie tak samo. Czyli jak zaczne wpisywac "A" to powiedzmy w 10cou wygenerowanych polach bedzie pokazywac sie to samo.
Jak sie tego ustrzec albo zmienic lub moze istnieje jakis inny przyklad ktory w jakis inny sposob wyswietla.

Ten post edytował maya 28.03.2022, 16:14:54
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


https://github.com/kraaden/autocomplete ale skoro nie masz pojęcia o JS, to nie wiem czy Ci się uda wykorzystać.
Go to the top of the page
+Quote Post
nospor
post
Post #7





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




Cytat(maya @ 28.03.2022, 16:13:52 ) *
Ja nie mam pojecia jak to zrobic bo nie znam js wogole. Są dostepne przyklady w necie ale kazde opiera sie na podaniu nazwy pola text ale w moim przypadku jest to tablica wiec skrypt bedzie dzialal na kazdym z pól w danym momencie tak samo. Czyli jak zaczne wpisywac "A" to powiedzmy w 10cou wygenerowanych polach bedzie pokazywac sie to samo.
Jak sie tego ustrzec albo zmienic lub moze istnieje jakis inny przyklad ktory w jakis inny sposob wyswietla.

Podaj linka do autocomplete co uzywasz. moze mozna tam sie podpiac nie tylko przez ID

A zreszta, nawet jak tylko po ID, to poprostu nadaj dla kazdego pola inne ID, ala pole1, pole2,pole3
a potem tego autocomplete odpal dla kazdego z nich i popproblemie
Go to the top of the page
+Quote Post
maya
post
Post #8





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 28.03.2022

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


  1. <!doctype html>
  2. <html lang="en">
  3. <meta charset="utf-8">
  4. <meta name="viewport" content="width=device-width, initial-scale=1">
  5. <title>jQuery UI Autocomplete - Default functionality</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css">
  7. <link rel="stylesheet" href="/resources/demos/style.css">
  8. <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
  9. <script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>
  10. $( function() {
  11. var availableTags = [
  12. "ActionScript",
  13. "AppleScript",
  14. "Asp",
  15. "BASIC",
  16. "C",
  17. "C++",
  18. "Clojure",
  19. "COBOL",
  20. "ColdFusion",
  21. "Erlang",
  22. "Fortran",
  23. "Groovy",
  24. "Haskell",
  25. "Java",
  26. "JavaScript",
  27. "Lisp",
  28. "Perl",
  29. "PHP",
  30. "Python",
  31. "Ruby",
  32. "Scala",
  33. "Scheme"
  34. ];
  35. $( "#tags" ).autocomplete({
  36. source: availableTags
  37. });
  38. } );
  39. </script>
  40. </head>
  41.  
  42. <div class="ui-widget">
  43. <label for="tags">Tags: </label>
  44. <input id="tags">
  45. </div>
  46.  
  47.  
  48. </body>
  49. </html>


I teraz ja mam np pole text z tablicą ktore generuje pętla

  1. for(......)
  2. {
  3. <input id="tags" name="nationality[]">
  4. }
  5.  



Ten post edytował maya 28.03.2022, 18:07:47
Go to the top of the page
+Quote Post
nospor
post
Post #9





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




To tak jak ci pisalem, w petli for co generujesz te INPUT to dodawaj kolejny numerek do ID
a to
$( "#tags" ).autocomplete({
source: availableTags
});

tez generuj w petli i tez dodawaj numerek kolejny i juz
Go to the top of the page
+Quote Post
maya
post
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 28.03.2022

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


Robilem tak i niby powinno dzialać ale nie dziala.
Działa tylko na ostatnim polu text.

  1. <html>
  2. <head>
  3. <link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  4. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  5. <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
  6.  
  7. <style>
  8. p, div, input {
  9. font: 16px Calibri;
  10. }
  11. .ui-autocomplete {
  12. cursor:pointer;
  13. height:120px;
  14. overflow-y:scroll;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19.  
  20. </body>
  21.  
  22. <?php
  23. for($i=0;$i<=5;$i++)
  24.  
  25. {
  26.  
  27. print "<input type=\"text\" id=\"tbCountries$i\" /><br>";
  28.  
  29.  
  30. ?>
  31. <script>
  32. $(document).ready(function() {
  33. BindControls();
  34. });
  35.  
  36. function BindControls() {
  37. var Countries = ['ARGENTINA',
  38. 'AUSTRALIA',
  39. 'BRAZIL',
  40. 'BELARUS',
  41. 'BHUTAN',
  42. 'CHILE',
  43. 'CAMBODIA',
  44. 'CANADA',
  45. 'DENMARK',
  46. 'DOMINICA',
  47. 'INDIA'];
  48.  
  49. $('#tbCountries<?=$i;?>').autocomplete({
  50. source: Countries,
  51. minLength: 0,
  52. scroll: true
  53. }).focus(function() {
  54. $(this).autocomplete("search", "");
  55. });
  56. }
  57. </script>
  58. </html>
  59.  
  60. <?php
  61.  
  62. }
  63.  
  64. ?>


Ten post edytował maya 29.03.2022, 13:12:23
Go to the top of the page
+Quote Post
viking
post
Post #11





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

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


Tworzysz 5x tą samą funkcję BindControls która wiadomo że wywoła się zawsze ostatnia. Wywal to Countries poza pętle, zostaw tylko $('#tbCountries<?=$i;?>').autocomplete({
Go to the top of the page
+Quote Post
maya
post
Post #12





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 28.03.2022

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


Dzięki za odpowiedz ale ja wogole nie czaje JS i nie wiem co z czym ma byc.

Ktoś mógłby to poskładac żeby działało bo sam nie dam rady
Go to the top of the page
+Quote Post
nospor
post
Post #13





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




Kod
<html>
<head>
    <link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

    <style>
        p, div, input {
            font: 16px Calibri;
        }
        .ui-autocomplete {
            cursor:pointer;
            height:120px;
            overflow-y:scroll;
        }    
    </style>
</head>
<body>
<script>
        var Countries = ['ARGENTINA',
            'AUSTRALIA',
            'BRAZIL',
            'BELARUS',
            'BHUTAN',
            'CHILE',
            'CAMBODIA',
            'CANADA',
            'DENMARK',
            'DOMINICA',
            'INDIA'];
</script>  

<?php
        for($i=0;$i<=5;$i++)
            
            {
                
                print "<input type=\"text\" id=\"tbCountries$i\" /><br>";
                
                
?>
<script>
        $('#tbCountries<?=$i;?>').autocomplete({
            source: Countries,
            minLength: 0,
            scroll: true
        }).focus(function() {
            $(this).autocomplete("search", "");
        });
    }
</script>
</body>
</html>

<?php

            }
            
            ?>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 30.09.2025 - 10:01