Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]Auto-zapis do bazy po wpisaniu 5znaków
Forum PHP.pl > Forum > Przedszkole
ostry400
Witam

Nie wiem dokładnie czy dobrze wybrałem dział ale nie wiem z którego środowiska skorzystać

Sprawa wygląda następująco :

Potrzeba stworzenia czegoś w stylu formularza z jednym oknem do którego wpisywane będzie pewien kod 5 znakowy NP : RO211 (I tu zaczyna się problem) bo po wpisaniu piątego znaku musiało by się automatycznie zapisać do bazy bez ingerencji człowieka i przyporządkować mu numer zliczający czyli pierwszy zapis numer 1 drugi zapisany kod numer 2 itd

Więc pytanie w czym to można zrobić i czy jest to w ogóle możliwe questionmark.gif

Pozdrawiam

viking
XHR + wzorzec observer + banalne zliczanie znaków. Use Google ostry wink.gif
ostry400
Dzięki obadam sprawę teraz z wujkiem Google:) a z wujkiem to trzeba wiedzieć czego szukać a ja na 100 sposobów tego szukałem i nie wiele znalazłem bo nie wiedziałem od jakiej strony się do tego zabrać smile.gif

Dzięki viking za podpowiedź z tym zliczaniem smile.gif

Zmontowałem sobie takie tam coś i ogólnie by mi to wystarczało gdyby jeszcze po wpisaniu samo się zapisywało czyli klikało w enter smile.gif

Jest jakieś proste rozwiązanie tego "autoentera"

No szukam tego w google ale kurcze nie wiem

  1. <body onload="document.getElementById('kod').focus();">
  2. <div>
  3. <table border="0" cellpadding="5" cellspacing="5" width ="300" height="150" bgcolor="#CCFFFF">
  4. <tr>
  5. <form method='POST' action='skanuj.php'>
  6. <td><center><B>SKANUJ-></td>
  7. <td><input class="text" name="kod" id="kod" size=7>
  8. </td>
  9. <td><input type="submit" value="Zapisz" ></td>
  10. </form>
  11. </tr></table>
  12. </div>
  13. </body>

  1.  
  2. <?php
  3. $kod=$_POST['kod'];
  4. if (strlen($kod)=='5')
  5. {
  6. $zapisz= mysql_query("INSERT INTO $s SET kod='$kod'");
  7. }


Nawet idąc po najkrótszej linii oporu można by było coś takiego zrobić że klika sobie co sekundę ten enter sam jak wpisze się 5 cyfrowy to mi zapisze do bazy a jak więcej lub nic to nie zapisze nic smile.gif a zdążę wpisać bo to wpisywane jest czytnikiem kodów kreskowych

Bo z tego co zdarzyłem zalukać to XHR +wzorzec obserwer to troche dużo z tym kombinacji może jakieś wywołanie z Javascript-u??
RiE
Sprawdzaj za pomocą javascriptu i pola onkeyup w formularzu czy ciąg ma 5 znaków, jeżeli tak odpal skrypt AJAXem
ostry400
A więc tak jak podsunął myśl RiE
dodałem coś takiego

  1. function licz() {
  2. document.skanowanie.disp.value = document.skanowanie.kod.value.length
  3. }
  4. function enter(){
  5. if(disp=5)getElementById('zap')
  6. }

  1. <form name="skanowanie" id='skanowanie' method='POST' action='skanuj.php'>
  2.  
  3. <td><center><B>SKANUJ-></td>
  4. <td><INPUT type="text" name="disp" value="0" size=2></td>
  5. <td><INPUT class="text" name="kod" id="kod" size=7 onkeyup="licz()"></td>
  6. <td><input type="submit" value="Zapisz" id="zap" ></td>


No tylko nie mogę ogarnąć tego z funkcją "enter" co robię tam źle questionmark.gif ogólnie to Javascript nie jest moją mocną stroną a nawet powiedział bym że nic a nic się na tym nie znam biggrin.gif
RiE
Zrób to lepiej tak:
  1. ...
  2. <td><INPUT class="text" name="kod" id="kod" size=7 onkeyup="licz(this.value)"></td>
  3. ...


  1. function licz(inputString)
  2. {
  3. if(inputString.lenght == 5){
  4. // wysłanie danych AJAXem
  5. }
  6. }


Co do samego AJAXa to skorzystaj z gotowej biblioteki np. jQuery
Tutaj masz link, na dole strony są przykłady, podstaw do swoich danych.
ostry400
No siedzę nad tym czytam o tym jquery ale nijak mi to coś nie wchodzi postawiłem to tak nie wiem czy dobrze ale nie działa nic sad.gif zrobiłem 2 plik czysty php z składnią do wrzucenia wszystkiego do bazy.

Ogólnie to pewnie błąd tkwi w podstawach .... plik zapisujemy z rozszerzeniem dowolnym czyli html/php ?

  1. <meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-2\">
  2. <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
  3.  
  4. <script src="http://code.jquery.com/jquery-latest.js"></script>
  5. <script type="text/javascript">
  6.  
  7.  
  8. function licz(inputString)
  9. {
  10. if(inputString.lenght == 5){
  11. $.ajax({
  12. type: "POST",
  13. url: "skanuj2.php",
  14. data: { kod: "kod"}
  15. }).done(function( licz(inputString) ) {
  16. alert( "Data Saved: " );
  17. });
  18.  
  19. </head>
  20. <body onload="document.getElementById('kod').focus();">
  21. <div>
  22.  
  23. <table border="0" cellpadding="5" cellspacing="5" width ="350" height="150" bgcolor="#CCFFFF">
  24.  
  25. <tr>
  26. <form name="skanowanie" id='skanowanie' method='POST' action=''>
  27.  
  28. <td><center><B>SKANUJ-></td>
  29. <td><INPUT class="text" name="kod" id="kod" size=7 onkeyup="licz(this.value)"></td>
  30. <td><input type="submit" value="Zapisz" id="zap" ></td>
  31. </form>
  32. </tr></table>
  33. </div>
  34. </body>


drugi plik php
  1.  
  2. $sql = "SET CHARSET latin2";
  3.  
  4. $kod=$_POST['kod'];
  5.  
  6. $zapisz= mysql_query("INSERT INTO $s SET kod='$kod'");
  7.  
  8.  
  9. ?>
  10. <meta http-equiv="refresh" content="0; URL=skanuj.php ">
  11. </html>


Nie ma jakiejś możliwości aby przy tym
  1. function licz(inputString)
  2. {
  3. if(inputString.lenght == 5){
  4.  
  5. "Wciśniej ENTER" }
  6.  


Bo nie zależy mi jakoś tak szczególnie na tym aby reszta się nie odświeżała. Najprostszy sposób wpisania 5-tego znaku = automatyczny Enter tongue.gif

Już majaczę trochę cały dzień kombinacji tongue.gif niby wydawało by się takie proste
viking
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
  6.  
  7. <script src="http://code.jquery.com/jquery-latest.js"></script>
  8. <script type="text/javascript">
  9.  
  10. $(function() {
  11. $('#kod').on('keyup', function(){
  12. if($(this).val().length > 5) {
  13. //XHR
  14. }
  15. });
  16. });
  17.  
  18. </script>
  19. </head>
  20. <body>
  21. <div>
  22.  
  23. <table border="0" cellpadding="5" cellspacing="5" width ="350" height="150" bgcolor="#CCFFFF">
  24.  
  25. <tr>
  26. <form name="skanowanie" id='skanowanie' method='POST' action=''>
  27.  
  28. <td><center><B>SKANUJ-></td>
  29. <td><INPUT class="text" name="kod" id="kod" size=7></td>
  30. <td><input type="submit" value="Zapisz" id="zap" ></td>
  31. </form>
  32. </tr></table>
  33. </div>
  34. </body>

W XHR to żądanie POST które podałeś. Na done() wyświetlasz że np dodano dane albo jakoś je obrabiasz..
ostry400
No i wszystko ok zapisuje tylko że ajax ma to że mi strony nie przeładuje i nie skasuje mi tego co wpisałem do inputa szukałem jak z inputa skasować zawartość w javascripcie ale wszystko jest na zasadzie onclick czy tam onfocus ( w atrybutach inputa )

ojj nie polubimy się z Javascriptem i Ajaxem biggrin.gif

kombinuje dodać tam komendę jeszcze do tego
  1. $.ajax({
  2. type: "POST",
  3. url: "skanuj2.php",
  4. data: $('#kod')
  5. .val('')
  6. })
  7. .done()
  8. }
  9. });
  10. });
  11.  


Pod data jeszcze w ajaxie nie może być bo mi kasuje super ale do bazy zapisuje się pusty wpis

poza ajaxem nic się nie dzieje

No i myślałem jeszcze żeby coś dodać w skanuj2.php ale on nie zaingeruje na innej stronie z kasowaniem ..

Jakieś pomysły tongue.gifquestionmark.gif
RiE
Dodaj callbacka do tego
  1. $.ajax({
  2. type: "POST",
  3. url: "skanuj2.php",
  4. data: $('#kod'),
  5. success: function() {
  6. $('#kod').val('');
  7. }
  8. })
ostry400
No niestety
tam val('')

Pod data jeszcze w ajaxie nie może być bo mi kasuje super ale do bazy zapisuje się pusty wpis

poza ajaxem nic się nie dzieje

No i myślałem jeszcze żeby coś dodać w skanuj2.php ale on nie zaingeruje na innej stronie z kasowaniem ..

viking
Przeczytaj jeszcze raz co napisałeś i spróbuj się zrozumieć.
Ostry400.
Przepraszam

Spieszyłem się

Poza tym język polska prosta sprawa:P

Chodziło mi o to że :

Jak umieszcze val('') w polu ajaxa pod linijka data: ..... to mi skasuje wpis przed zapisaniem go do bazy

A poza ajaxem nie ma żadnej reakcji






ostry400
No teraz siadłem na spokojnie przeanalizowałem wszystko dodałem przecinki średniki których wcześniej nie miałem tongue.gif i Działa

Wielkie dzięki smile.gif

Pozdrawiam
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.