Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL] problem z zapisaniem zera
Forum PHP.pl > Forum > Przedszkole
PiiiT
Witam, mam problem z zapisaniem zera "0" w bazie sql. Jak w formularzu wpisuje zero to wyświetla mi że nie uzupełniono wszystkich pól. Jak zmienie w bazie na typ unsigned zerofill to pole wypełni się zerami ale tylko jak wpisze 00. Ja chciałbym wpisać 0 i żeby było zapisane właśnie w takiej postaci. Z góry dziękuję za pomoc. Dodam jeszcze że próbowałem na VARCHAR i na INT. Mam nadzieje ze opis bedzie wystarczający. Poniżej zamieszczam kod:
  1. <?php
  2. require 'check.php';
  3. include 'conf.php';
  4. function ShowForm($komunikat=""){ //funkcja wyświetlająca formularz rejestracyjny
  5.  echo "$komunikat";
  6.  echo "<form action='dodaj_n.php' method=post>";
  7.  echo "<table border=1 rules=void cellpadding=5 align=center>";
  8.  echo "<tr><td colspan=2 align=center bgcolor=#8ac5f7><b>Panel dodawania nadajnika</b></td></tr>"; 
  9.  echo "<tr><td width=150px>Klient: </td><td>";
  10.  
  11.  $resultu=mysql_query("SELECT * FROM klient");
  12. $iloscu=mysql_num_rows($resultu);
  13.  
  14. $listau = '' ; 
  15. while( $row = mysql_fetch_assoc( $resultu )) { 
  16. $listau .= '<option value="'.$row['Id_klient'].'">'.$row['klient'].' '.$row['adres'].'</option>' ; 
  17. } 
  18.  echo '<select name="klient">'.$listau.'</select>' ;
  19.  
  20.  echo "<tr><td width=150px>IMEI: </td><td><input type=text name=imei></td></tr>";
  21.  echo "<tr><td width=150px>S/N nadajnika: </td><td><input type=text name=serial></td></tr>";
  22.  echo "<tr><td width=150px>Nadajnik:</td><td><select name=nadajnik>";
  23.  echo "<option>FM2100</option>";
  24.  echo "<option>FM4100</option>";
  25.  echo "<option>GH1202</option>";
  26.  echo "</select></td></tr>";
  27.  echo "<tr><td>Nadawanie: </td><td><input type=text name=nadawanie><br></td></tr>";
  28.  echo "<tr><td width=150px>MSISDN: </td><td><input type=text name=msisdn></td></tr>";
  29.  echo "<tr><td width=150px>Numer seryjny SIM: </td><td><input type=text name=serialsim></tr>";
  30.  echo "<tr><td width=150px>Rodzaj taryfy: </td><td><input type=text name=taryfa></tr>";
  31.  echo "<tr><td width=150px>PUK karty SIM: </td><td><input type=text name=puk></tr>";
  32.  echo "<tr><td width=150px>Data aktywacji: (format rrrr-mm-dd)</td><td><input type=text name=aktywacja value=rrrr-mm-dd></tr>";
  33.  echo "<tr><td width=150px>Właściciel SIM: </td><td><input type=text name=wlasnosc></tr>";
  34.  echo "<tr><td width=150px>Data montażu: (format rrrr-mm-dd)</td><td><input type=text name=montaz value=rrrr-mm-dd></tr>";
  35.  echo "<tr><td width=150px>Instalator: </td><td><input type=text name=monter></tr>";
  36.  echo "<tr><td width=150px>Opiekun: </td><td><input type=text name=opiekun></tr>";
  37.  echo "<tr><td width=150px>Marka pojazdu: </td><td><input type=text name=marka></tr>";
  38.  echo "<tr><td width=150px>Numer rejestracyjny: </td><td><input type=text name=rejestracja></tr>";
  39.  echo "<tr><td width=150px>Numer VIN: </td><td><input type=text name=vin></tr>";
  40.  echo "<tr><td width=150px>Uwagi: </td><td><textarea name=uwagi name=uwagi rows=8 cols=50 style=color: gray; font-style: italic; >Wpisz treść uwag</textarea></tr>";
  41.  echo "<input type=hidden value='1' name=send>";
  42.  echo "<tr><td colspan=2 align=center bgcolor=#8ac5f7><input type=submit value='Dodaj nadajnik'></td></tr>";
  43.  echo "</form>"; 
  44.  echo "</td></tr></tr>";
  45.  echo "</table>";}
  46.  
  47.  $klient = $_POST['Id_klient'];
  48.  
  49. ?>
  50.  
  51.  
  52.  
  53. <html>
  54. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  55.  
  56. <head>
  57.  <title>Formularz dodawania nadajnika</title>
  58. </head>
  59. <body>
  60.  
  61. <?php
  62. if($_POST["send"]==1){ //sprawdzanie czy formularz został wysłany
  63.  if(!empty($_POST["imei"]) && !empty($_POST["serial"]) && !empty($_POST["nadajnik"]) && !empty($_POST["nadawanie"]) && !empty($_POST["msisdn"]) && !empty($_POST["serialsim"]) && !empty($_POST["taryfa"]) && !empty($_POST["puk"]) && !empty($_POST["aktywacja"]) && !empty($_POST["wlasnosc"]) && !empty($_POST["montaz"]) && !empty($_POST["monter"]) && !empty($_POST["opiekun"]) && !empty($_POST["marka"]) && !empty($_POST["rejestracja"]) && !empty($_POST["vin"]) && !empty($_POST["uwagi"])){ //oraz czy uzupełniono wszystkie dane
  64. if(mysql_num_rows(mysql_query("select * from obsluga where imei='".htmlspecialchars($_POST["imei"]."'"))))ShowForm("Nadajnik o podanym numerze IMEI jest już dodany!!!"); // sprawdzanie czy użytkownik o podanej nazwie już istnieje
  65. else{
  66.  mysql_query("insert into obsluga values(NULL, '".htmlspecialchars($_POST["klient"])."' ,'".htmlspecialchars($_POST["imei"])."' ,'".htmlspecialchars($_POST["serial"])."','".htmlspecialchars($_POST["nadajnik"])."','".htmlspecialchars($_POST["nadawanie"])."','".htmlspecialchars($_POST["msisdn"])."','".htmlspecialchars($_POST["serialsim"])."','".htmlspecialchars($_POST["taryfa"])."','".htmlspecialchars($_POST["puk"])."','".htmlspecialchars($_POST["aktywacja"])."','".htmlspecialchars($_POST["wlasnosc"])."','".htmlspecialchars($_POST["montaz"])."','".htmlspecialchars($_POST["monter"])."','".htmlspecialchars($_POST["opiekun"])."','".htmlspecialchars($_POST["marka"])."','".htmlspecialchars($_POST["rejestracja"])."','".htmlspecialchars($_POST["vin"])."','".htmlspecialchars($_POST["uwagi"])."')"); // zapisywanie rekordu do bazy
  67.  
  68.  }
  69.  }
  70.  else ShowForm("Nie uzupełniono wszystkich pól!!!");
  71. }
  72. else ShowForm();  
  73.  
  74. mysql_close(); //zamykanie połączenia z bazą
  75. ?>
  76. <? include 'panel.php';?>
  77. </body>
  78. </html>
ddiceman
Problem lezy w tej linii:
  1. <?php
  2. if(!empty($_POST["imei"]) && !empty($_POST["serial"]) && !empty($_POST["nadajnik"]) && !empty($_POST["nadawanie"]) && !empty($_POST["msisdn"]) && !empty($_POST["serialsim"]) && !empty($_POST["taryfa"]) && !empty($_POST["puk"]) && !empty($_POST["aktywacja"]) && !empty($_POST["wlasnosc"]) && !empty($_POST["montaz"]) && !empty($_POST["monter"]) && !empty($_POST["opiekun"]) && !empty($_POST["marka"]) && !empty($_POST["rejestracja"]) && !empty($_POST["vin"]) && !empty($_POST["uwagi"])){ //oraz czy uzupełniono wszystkie dane
  3. ?>

sprawdzasz, czy kolejne zmienne tablicowe nie sa puste za pomoca funkcji empty(), ktora zwraca wartosc logiczna TRUE takze dla zera jako wartosci. Uzyj zamiast niej is_null(), ktora sprawdza, czy dana zmienna === NULL (zgodnosc co do typu i wartosci) a zatem dla wartosci numerycznej zero zwraca wartosc logiczna FALSE

W bazie danych typ INTEGER - moze byc NOT NULL, bez ZEROFILL
PiiiT
Niestety, poprawiłem kod na
  1. <?php
  2. if(is_null($_POST["imei"]) && is_null($_POST["serial"]) && is_null($_POST["nadajnik"]) && is_null($_POST["nadawanie"]) && is_null($_POST["msisdn"]) && is_null($_POST["serialsim"]) && is_null($_POST["taryfa"]) && is_null($_POST["puk"]) && is_null($_POST["aktywacja"]) && is_null($_POST["wlasnosc"]) && is_null($_POST["montaz"]) && is_null($_POST["monter"]) && is_null($_POST["opiekun"]) && is_null($_POST["marka"]) && is_null($_POST["rejestracja"]) && is_null($_POST["vin"]) && is_null($_POST["uwagi"])){ //oraz czy uzupełniono wszystkie dane
  3. ?>
i nadal nic, przy samych zerach wypisuje że nie uzupełniono wszystkich danych.
tomm
teraz twój kod zwróci TRUE wtedy gdy wszystkie wartości będą miały wartość NULL
użyj zaprzeczenia przed is_null
PiiiT
Dzięki chłopaki smile.gif jeden "!" a tyle schodów..
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.