• 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 ?)

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

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...