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

Dlaczego zamiast id od 1 pokazuje mi od 20 ? (Czy coś się zapętliło ?)

Object Storage Arubacloud
0 głosów
342 wizyt
pytanie zadane 13 marca 2020 w PHP przez Dariusz Hozer Użytkownik (920 p.)
<form action="" method="POST" id="rekord">
         
    POMPKI: <input type="text" name="wiadomosc" id="poles"></br></br>
   
    <input type="submit">
    </form>

<?php   

$message=$_POST["wiadomosc"];

 
        $connection= mysqli_connect('127.0.0.1','root','','baza');

          if($connection->connect_errno){
              echo('no connection with data base ');
          }else{
              echo('connection data base');
          }


// tworzymy tablicę w bazie danych :)

 
$sql = "CREATE TABLE tabela (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    pompki INT NOT NULL,
    przysiady INT NOT NULL,
    podciaganie INT NOT NULL,
    bicki INT NOT NULL)";
    
    if ($connection->query($sql) === TRUE) {
        echo "Table created successfully";
    } else {
        echo "<br> It's problem :) " . $connection->error;
    }
      
  
 //po wstawieniu nazwy bazy danych w $connection i w tworzonej tabeli należy odswieżyć stronę www 
 //a potem odswieżyć w phpmyadmin:) 

//-------------------------------------------------------------------------------------------------

//Tworzymy wiersz w bazie danych o nazwie "baza" i nazwie tabeli "tab". Też gdy dodajemy kolejny wiersz wystarczy zmienić 
//nazwę, nie trzeba na nowo pisać kodu, gdyż po dodaniu do bazy danych wiersz już tam jest !! :) Kod do połączenia jest na
//db_record;

include ('db_record.php') ;
//require ('text_in_html.php'); - to na razie wyłączone
?>


<?php

$message=$_POST["wiadomosc"];
$identity=0;


while($message===TRUE){

    $identity++;

}

$sql="INSERT INTO tabela (id,pompki,przysiady,podciaganie,bicki) VALUES ('$identity' ,'$message', '1','2','3')"; 

   
if ($connection->query($sql) === TRUE) {
    echo "Table created successfully";
} else {
    echo "gówno nie wpis ! :) " . $connection->error;
}



 
?>

Ten drugi kod jest z osobnego pliku db_record.php.

 

Problem polega na tym, że po stworzeniu przeze mnie pętli while dla id (by kolejno dodawał numer id do kolejno dodawanego wpisu pokazuje mi od 20 ? Poniżej obrazek wkleiłem: 


1 odpowiedź

+1 głos
odpowiedź 14 marca 2020 przez grollajt Bywalec (2,860 p.)
wybrane 19 marca 2020 przez Dariusz Hozer
 
Najlepsza

Jeżeli dobrze rozumie założenia to:
1. Tworząc tabele zrobiłeś by id było AUTO_INCREMENT

  
$sql = "CREATE TABLE tabela (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    pompki INT NOT NULL,
    przysiady INT NOT NULL,
    podciaganie INT NOT NULL,
    bicki INT NOT NULL)";

dlatego w insercie nie musisz podawać id same się dodadzą dzięki właśnie AUTO_INCREMENT 

Dlatego usuń dziwna pętle a insert sql zamień na 

$sql="INSERT INTO tabela (pompki,przysiady,podciaganie,bicki) VALUES ('$message', '1','2','3')";

zainteresuj się też bindowaniem parametrów do bazy danych (https://www.php.net/manual/en/mysqli-stmt.bind-param.php lub przejściem ogólnie na PDO https://www.php.net/manual/en/pdo.construct.php )


2. Nie do końca też wiesz co chcesz przekazać przez zmienną

$_POST["wiadomosc"]

w formularza używasz typu text(to można zostawić bo to tylko widok), nazwa zmiennej to "wiadomosc": sugerująca treść a nie int, kolumnę dla pompek zrobiłeś jako int

pompki INT NOT NULL,

a w dziwnej pętli przyrównujesz do bool

while($message===TRUE){
 
    $identity++;
 
}

ps. Gdy usuwasz rekordy z tabeli zapamiętuje ona ostatnie dodane id (opróżniaj lub usuwaj tabele by zaczynać od początku) przykład dodajesz 10 rekordów(id 1-10) gdy je usuniesz i spróbujesz dodać nowy to będzie on z id 11

komentarz 19 marca 2020 przez Dariusz Hozer Użytkownik (920 p.)
Dzięki :) Już przestudiowałem SQL i połapałem się nim tu wszedłem zobaczyć pomoc :) Zrobiłem to samo, tylko że w PDO :) I problem mam z  odświeżaniem(po każdym odświeżeniu strony zwraca mi się ostatni post. Chciałem postawić warunek, że jeżeli pole formularza będzie puste to nie pobierze (ŻADNEGO) rekordu (w postaci wyłączenia dostępu do bazy danych  baza->close() i guzik  :)

Podobne pytania

0 głosów
1 odpowiedź 1,232 wizyt
0 głosów
1 odpowiedź 123 wizyt
pytanie zadane 18 listopada 2021 w SQL, bazy danych przez Jacek Śmiel Użytkownik (510 p.)
0 głosów
1 odpowiedź 995 wizyt
pytanie zadane 23 września 2017 w JavaScript przez Vorex444 Dyskutant (9,610 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!

...