• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

newsletter mobile phone poprawne dodanie do bazy z walidacją i sprawdzeniem czy już istnieje php mysqli

Object Storage Arubacloud
+1 głos
258 wizyt
pytanie zadane 29 czerwca 2022 w PHP przez gatka84 Bywalec (2,150 p.)

Witajcie chciałam się zapytać czy tak powinien wyglądać skrypt do newsletter zbierających tylko numery telefonów komórkowych i dodający do bazy sprawdza czy już nie był wcześniej wpisany.

Formularz robi wstępną walidacje nie wiem czy ew można jeszcze coś dodać

<input type="phone" name="phone" maxlength="9" minlength="9" required>
<form action="./admin/code.php" method="POST" style="width: 100%;">
          <div class="msg">
          <?php include('message.php');?>
            <?php            
            $category = "SELECT * FROM `categories` WHERE c_status='0' ";
            $category_run = mysqli_query($con, $category);
            if (mysqli_num_rows($category_run) > 0) {
            ?>
              <select name="city" required  style="padding: 5px 0;">
                <option value="">--Wybierz Miasto--</option>
                <?php
                foreach ($category_run as $categoryitem) {
                ?>
                  <option value="<?= $categoryitem['c_name'] ?>"><?= $categoryitem['c_name'] ?></option>
                <?php
                }
                ?>
              </select>
            <?php
            } else {
            ?>
              <h5>Brak dostępnych miast</h5>
            <?php
            }
            ?>
          </div>
          <div class="msg">
            <div class="text">Telefon *</div>
            <input type="phone" name="phone" maxlength="9" minlength="9" required>
          </div>
          <div class="btn">
            <button type="submit" name="newsletter">Wyślij</button>
          </div>
        </form>

i potem

if (isset($_POST['newsletter'])) {
    $city = htmlspecialchars($_POST['city']);
    $phone = preg_replace('/[^0-9]/', '', $_POST['phone']);
    if (strlen($phone) == 9) {
        $query = "INSERT INTO  `newsletter` (city, phone) VALUES ('$city','$phone')";
        $sql1 = "SELECT * FROM `newsletter` WHERE city='$city' AND phone='".$phone."' LIMIT 1";
        $run_query = mysqli_query($con, $sql1);
        if (mysqli_num_rows($run_query) > 0) {
            $_SESSION['message'] = "Twój numer jest już dodany do bazy";
            header('location: ../index.php#newsletter');
            exit(0);
        } else {
            $query_run = mysqli_query($con, $query);
            if ($query_run) {
                $_SESSION['message'] = "Numer dodano do bazy";
                header('location: ../index.php#newsletter');
                exit(0);
            } else {
                $_SESSION['message'] = "Coś poszło nie tak!";
                header('location: ../index.php#newsletter');
                exit(0);
            }
        }
    } else {
        $_SESSION['message'] = "Niepoprawny nr telefonu!";
        header('location: ../index.php#newsletter');
        exit(0);
    }
}

dany numer jest przypisywany do miasta z pola select i założyłam, że nr tel może być przypisany do kilku miast,

skrypt działa ale czy tak jest poprawnie ?? Wzorowałam się na tym co w sieci jest podane.

komentarz 30 czerwca 2022 przez VBService Ekspert (253,100 p.)
edycja 30 czerwca 2022 przez VBService
Numer telefonu nie powinien być przypisany do użytkownika, nie bardzo rozumiem sensu trzymania takich informacji do którego miasta jest przypisany numer telefonu. Jedyne co Mi przychodzi na myśl to numer kierunkowy do miasta, państwa itp. Nie wiem jaki procent stanowi ilość telefonów komórkowych do stacjonarnych, ale myślę, że to może być blisko 90% używanych numerów, a z definicji telefon komórkowy jest mobilny, więc przypisywanie go do miasta a nie do użytkownika zapisanego w bazie danych, wydaje Mi się co najmniej dziwne lub wręcz zbędne. Druga sprawa chodzi tu o newsletter, więc bardziej zasadne było by "zbieranie" adresów email-owych.
komentarz 1 lipca 2022 przez gatka84 Bywalec (2,150 p.)
Nazwałam to newsletter bo na podane numery przypisane do konkretnego miasta mają być wysyłane sms z informacją o nowym asortymencie dla zainteresowanych, a do konkretnego miasta bo sklep jest w kilku miastach i sobie to tak wykombinowałam, jest to hipotetyczne bo ostatnio znajomy zarządzający siecią kilku sklepów zapytał czy można coś takiego umieścić na stronie więc sprawdzam jak to ewentualnie można zrobić.

1 odpowiedź

+1 głos
odpowiedź 2 lipca 2022 przez VBService Ekspert (253,100 p.)
wybrane 6 lipca 2022 przez gatka84
 
Najlepsza

 

na podane numery przypisane do konkretnego miasta mają być wysyłane sms z informacją o nowym asortymencie dla zainteresowanych, a do konkretnego miasta bo sklep jest w kilku miastach

 

Ja bym to widział tak, że użytkownik podaje numer telefonu, na który ma być wysyłana informacja handlowa (o nowym asortymencie) sms i wybiera konkretny sklep, który znajduje się w konkretnym mieście (skoro są oddziały tego sklepu w kilku miastach)

np. coś takiego

<style>
  * {
    box-sizing: border-box;
  }
  .form-container {
    display: grid;
    place-content: center;
  }
  input,
  select {
    display: block;
    margin: 0.25em 0 1.5em 0;    
    width: 20em;
  }
  label,
  input,
  select {
    font: 400 1em/1.2 system-ui;
  }
  .submit {
    width: auto;
    padding: 0.15em 0.5em;
  }
</style>
<div class="form-container">
  <form action="notification_new_assortment.php" method="post">
    <h3>Informacja sms o nowym asortymencie</h3>
     
    <label for="user_phone_number">Proszę podać numer telefonu</label>
    <input type="tel" id="user_phone_number" name="user_phone_number" required
           pattern="[0-9]{9}" title="Numer telefonu 9-cio cyfrowy">
     
    <label for="shop">Proszę wybrać sklep</label>
    <select id="shop" name="shop">
      <option value="id_shop_1A" selected>Sklep w miejscowości A1</option>
      <option value="id_shop_1A" disabled>&nbsp;ul.AAAAAAAA tel. 123456789</option>
      <option value="id_shop_1A" disabled>------------------------------------------</option>
      <option value="id_shop_1B">Sklep w miejscowości B1</option>
      <option value="id_shop_1B" disabled>&nbsp;ul.BBBBBBBB tel. 123456789</option>
      <option value="id_shop_1B" disabled>------------------------------------------</option>
    </select>
     
    <input type="submit" class="submit" value="Zapisz">
  </form>
</div>

 

 

P.S.  Line Break in HTML Select Option?

1
komentarz 4 lipca 2022 przez gatka84 Bywalec (2,150 p.)
edycja 4 lipca 2022 przez gatka84

Dziękuje za podpowiedź, jak zawsze znowu się czegoś nauczyłam :), nie wiedziałam że tak można

<option value="id_shop_1A" selected>Sklep w miejscowości A1</option>
      <option value="id_shop_1A" disabled>&nbsp;ul.AAAAAAAA tel. 123456789</option>
      <option value="id_shop_1A" disabled>------------------------------------------</option>

i z tym też się jeszcze nie spotkałam

pattern="[0-9]{9}"

i dodatkowo

font: 400 1em/1.2 system-ui;

i rozumiem że 400 to grubość, 1em/1.2 <-- nie widziałam jeszcze takiego zapisu i czy system-ui daje używaną czcionkę na urządzeniu bo takiego zapisu też nigdzie nie widziałam tzn w żadnym ze znanych mi tutoriali i poradników

komentarz 5 lipca 2022 przez VBService Ekspert (253,100 p.)
edycja 5 lipca 2022 przez VBService

Miej na uwadze, że atrybut pattern "działa" z atrybutem title

HTML attribute: pattern  [ pl ]

 

Note: Use the title attribute to specify text that most browsers will display as a tooltip to explain what the requirements are to match the pattern. You must not rely on the tooltip alone for an explanation. See below for more information on usability.

 

a co do zapisu

font: 400 1em/1.2 system-ui;

to jest to zapis: font shorthand

 

dla np.:

<style>
  span {
    font-family: system-ui;
    font-size: 1em;
    font-weight: 400;
    line-height: 1.2em;
  }
  .shorthand {
    font: 400 1em/1.2 system-ui;
  }
</style>

<div>
  <p>
    <span>Lorem ipsum ...</span>
    <br>
    <span>Lorem ipsum ...</span>
  </p>

  <p class="shorthand">
    <span>Lorem ipsum ... shorthand</span>
    <br>
    <span>Lorem ipsum ... shorthand</span>
  </p>
</div>

 

 

P.S.  System *Things

p {
  font-family: ui-monospace, system-ui, fantasy;
}

 

Podobne pytania

+1 głos
2 odpowiedzi 264 wizyt
pytanie zadane 27 lutego 2023 w PHP przez gatka84 Bywalec (2,150 p.)
0 głosów
1 odpowiedź 1,172 wizyt
pytanie zadane 4 września 2017 w C i C++ przez altara Początkujący (290 p.)
0 głosów
1 odpowiedź 1,164 wizyt
pytanie zadane 6 września 2015 w SQL, bazy danych przez Rafik Obywatel (1,870 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...