Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dzielenie stringa i wyciąganie kilku wartości do rekordu
Forum PHP.pl > Forum > Przedszkole
McGal
Witam wszystkich

Borykam się z następującym problemem:

Utworzyłem kod który pobiera pojedyncze kody przekazywane przez czytnik kodów kreskowych do pola input i zapisuje je w bazie danych.
Na tym etapie wszystko działa bez zarzutu.

  1. <?
  2. include('../include/dbconnect.php');
  3.  
  4. $set_id = $_REQUEST['set_id'];
  5. $result = mysql_query("SELECT set_id FROM ins_set where set_id='$set_id' ");
  6.  
  7. while($row=mysql_fetch_array($result))
  8. {
  9. ?>

  1. <form role="form" action="set.php?set_id=<?php echo $row['set_id']?>" method="POST">
  2. <div class="form-body">
  3. <div class="form-group">
  4. <div class="input-group">
  5. <span class="input-group-addon">
  6. <i class="fa fa-barcode"></i>
  7. </span>
  8. <input type="text" class="form-control" placeholder="" name="imei" autofocus="autofocus">
  9. </div>
  10. </div>
  11. </div>
  12. </form>

  1. <?php }
  2.  
  3. $imei = $_POST['imei'];
  4. $set_id = $_REQUEST['set_id'];
  5.  
  6. if($imei) {
  7.  
  8. $ins = mysql_query("INSERT INTO imei_set (imei , set_id) VALUE ('$imei','$set_id') ");
  9.  
  10. if($ins) echo "<div class=\"note note-success note-bordered\"><p>Kod dodany prawidłowo</p></div>";
  11. else echo "Błąd !!! Nie udało się dodać nowego kodu";
  12.  
  13. mysql_close($con);
  14. }
  15. ?>


Problem pojawił się przy wprowadzaniu kodu zbiorczego z QR gdzie składnia wygląda przykładowo tak:


V4,SSCC007189084454756282,GTIN00885909796816,SCC30885909796817,MPNMD794FD/A,QTY5,IMEI351977065956462,IMEI351977066513304,IMEI351977066136528,IMEI351977066
239249,IMEI351977066587977


Z powyższego ciągu potrzebuję wyciągnąć wartości IMEI351977065956462 IMEI351977066136528 i tak dalej tylko że bez IMEI same 15 znaków/cyfr

Dodatkowo każdy z wyciągniętych kodów musi trafić do oddzielnego rekordu w bazie.


Proszę o naprowadzenie na funkcje jakich należy użyć przy tym rozwiązaniu.


viking
  1. $kod = 'V4,SSCC007189084454756282,GTIN00885909796816,SCC30885909796817,MPNMD794FD/A,QTY5,IMEI351977065956462,IMEI351977066513304,IMEI351977066136528,IMEI351977066
  2. 239249,IMEI351977066587977';
  3.  
  4. preg_match_all('/imei\d{15}/i', $kod, $out);
  5.  
  6. var_dump($out);


A, bez IMEI:
  1. preg_match_all('/imei(\d{15})/i', $kod, $out);
McGal
Wykorzystałem podany kod w wersji bez imei

  1. preg_match_all('/imei(\d{15})/i', $imei, $out);
  2. var_dump($out);


i wyrzuca mi pod polem input

  1. array(2) { [0]=> array(5) { [0]=> string(19) "IMEI351977065956462" [1]=> string(19) "IMEI351977066513304" [2]=> string(19) "IMEI351977066136528" [3]=> string(19) "IMEI351977066239249" [4]=> string(19) "IMEI351977066587977" } [1]=> array(5) { [0]=> string(15) "351977065956462" [1]=> string(15) "351977066513304" [2]=> string(15) "351977066136528" [3]=> string(15) "351977066239249" [4]=> string(15) "351977066587977" } }


A do bazy trafia cały kod łyknięty z QR'a

Jak przekazać te dane do rekordów bazując na podanym schemacie mojego kodu z inputem.
viking
W wyniku dostajesz 2 tablice.
foreach ($out[1] as $k=>$v) {
insert do bazy...
}
Damonsson
Jak już korzystasz z nieszczęsnego mysql_* to w foreach utwórz sobie samo zapytanie, a samego inserta rób za foreachem, szkoda ubijać bazę.
McGal
Super i wszystko działa
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.