• 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

+1 głos
562 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 (256,600 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 (256,600 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 (256,600 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 537 wizyt
pytanie zadane 27 lutego 2023 w PHP przez gatka84 Bywalec (2,150 p.)
0 głosów
1 odpowiedź 1,589 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,283 wizyt
pytanie zadane 6 września 2015 w SQL, bazy danych przez Rafik Obywatel (1,870 p.)

93,599 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,082 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

Kursy INF.02 i INF.03
...