Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Barcody (seryjne wyświetlanie danych z bazy)
Forum PHP.pl > Forum > PHP
rumpelek
Witam, chciałbym uzyskać możliwość wczytania "do bufora" np. 100 kodów kreskowych i potem ustawienia dla nich np. jakiejś opcji w bazie. z tym, że:
1) nie mam dostępu do serwera, za to mam dostęp do bazy adres, login, hasło i uprawnienia.
2) kod kreskowy standardowo jak jest czytany na końcu dodaje od siebie "enter"... np. w notatniku kiedy czytamy kod to kursor nie jest za zczytanimi znakami tylko wiersz niżej.

sprawa dość pilna...
Micchaleq
nie wiem czy ci to coś da, ale jeżeli chcesz umieścić te kody w bazie danych to możesz zrobić kilka operacji :

zapisujesz je wszystkie do notatnika, jeden po drugim, następnie przez php usówasz sobie puste miejsce i rodzielasz ciąg co x znaków po czym zwracasz sobie tablice wszystkich zeskanowanych kodów i ewentualne dalsze kroki.

Jeżeli chciałbyś to zrobić od razu przez php to mógłbyś utworzyć sobie 100 ramek jakąś tam pętlą tylko musiał byś co jeden kod brac i przeskakiwac do kolejnego pola (tabem )
Orzeszekk
Zeby wywalic zbedne entery zastosuj wyrazenia regularne smile.gif


ten barcode jest zapisany jako jakas cyfra czy jak? z tego co wiem to kreska w barcode moze miec 4 rozne grubosci wiec zeby miec dostęp do każdej kreski z osobna musialbys to chyba zapisać każda kreska w tinyint (0 - nie ma , 1-4 rozne grubosci) i kazdy wiersz, ktory by mial tam powiedzmy 8 tiny intów (nie wiem ile barcode ma kresek w sumie) by oznaczał jeden barcode.

Jesli chcesz przyoszczędzić na danych, to integer ma 32 bity, do zapisania liczby od 0-4 trzeba trzech bitów 32/3= 10 kresek+ 2 zbedne bity, aż nadto chyba tylko musiałbyś sobie napisać funkcję która z liczby int jest w stanie odczytać dowolną kreskę (za pomocą przesunięć i masek bitowych)

nie wiem czy dobrze zrozumialem pytanie tongue.gif
rumpelek
orzeszek - no właśnie nie bałdzo smile.gif
Ja mam czytnik kodów na USB, który w zasadzie działa jak klawiatura, bo klikam na odpowiednie pole i pojawia mi się to co jest zakodowane... z tym, że kody są różnej długości... musiałbym jakoś wyłapać "enter"... żeby np. zamiast tego znaku wstawić "or" ?
Sephirus
Ok może inaczej - co chcesz mieć "na wyjściu" swojego działania to znaczy jaki rodzaj wyniku by Cię satysfakcjonował po zczytaniu na przykład 10 kodów?

Ma to być zapytanie w stylu

  1. UPDATE produkty SET a = 1 WHERE kod IN(1234,5678,98767,132124)


questionmark.gif Czy jak? tongue.gif

Bo jeśli tak to sprawa jest dość prosta smile.gif

Robisz plik index.php:
  1. <?php session_start(); ?>
  2.  
  3. <form action="readcode.php" method="get">
  4. <input type="text" name="code" />
  5. <input type="submit" name="dodaj"/>
  6. </form>
  7.  
  8. <h3>Podane kody:</h3>
  9. <div><?php echo implode(',',$_SESSION['codes'])?></div>
  10. <a href="updatecodes.php">Zapisz zmiany</a>


readcode.php:
  1. <?php
  2.  
  3. if(!isset($_SESSION['codes'])) $_SESSION['codes'] = array();
  4. $_SESSION['codes'][] = $_GET['code'];
  5. header('Location: index.php');
  6. die;
  7. ?>


updatecodes.php
  1. <?php
  2.  
  3. if(isset($_SESSION['codes']))
  4. {
  5. $sql = "UPDATE (...) WHERE kod IN(".implode(',',$_SESSION['codes']).")";
  6.  
  7. // tu wykonujesz zapytanie
  8.  
  9. unset($_SESSION['codes']);
  10. }
  11.  
  12.  
  13. header('Location: index.php');
  14. die;
  15. ?>


i tyle smile.gif

najeżdzasz na pole tekstowe i klikasz skanerem - on dodaje Ci każdy kolejny kod do tabeli a potem może wyświetlić wszystkie albo (tak jak pokazałem) wykonać zapytanie z wybranymi - to tylko idea smile.gif
rumpelek
Dokładnie to chodzi o UPDATE więc bez większego znaczenia smile.gif w zasadzie ja mam dostęp do PGAdmina, i mógłbym to zrobić tak jak to opisujesz, ale nie mam przecinka, tylko ten enter... sad.gif

w zasadzie teraz tak pomyślałem, może w jakimś notepad da się zamienić znak "enter" na przecinek? wtedy takie polecenie SQLowe sobie wczytam przez PGAdmin'a

EDIT.
udało mi się w prosty sposób zamienić entery dodawane przez czytnik na np. znak przecinka... teraz tylko jak skonstruować zapytanie SQL, żeby wczytać listę... próbowałem z tym IN, ale muszą być znaki apostrofa inaczej nie działa:
mam tak:
  1. UPDATE towary SET ilosc=1 WHERE kod IN('5525.1.61365.2011','5525.1.61366.2011');
- tak działa... ale musi być każdy kod w apostrofie może jakoś prościej da się z tymi przecinkami ?
Sephirus
Updateowałem swój post zerknij wink.gif
rumpelek
no widzę właśnie, ale ni jak nie jestem w stanie tego zrobić, bo nie mam dostępu do serwera - żeby jakiś plik wgrać i zrobić to PHPem na serwerze i dlatego pytanie jak to zrobić ze stacji jako klient ? da się jakoś (adres, login i hasło do SQL'a mam) ...

pewnie trudno, dlatego wpadłem na pomysł, że zrobię to przez okno poleceń PG SQL'a... udało mi się już w WORDzie zamienić znak "entera" na znak przecinka... teraz tylko prosiłbym o pomoc w skonstruowaniu zapytania SQL;owego w którym w polu ... IN () w nawiasach wkleiłbym to co mam w wordzie...
Sephirus
Ok tu masz kodzik, który może Ci ułatwić pracę wink.gif

  1. Wpisuj kody w polu:<input type="text" id="bbb" onkeyup="keyp(event)"/><br/><br/>
  2. <textarea rows="10" cols="100" id="aaa"></textarea>
  3. <script type="text/javascript">
  4. var codes = new Array();
  5.  
  6. function keyp(event)
  7. {
  8. if(event.keyCode == 13)
  9. {
  10. codes.push(document.getElementById('bbb').value);
  11. document.getElementById('bbb').value = '';
  12. document.getElementById('aaa').value = codes.join(',');
  13. }
  14. }


Zapisz go jako html - generuje on listę kodów do wrzucenia w IN w zapytaniu wink.gif
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.