Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Dodawanie pola takiego samego jak ID, Jak można tak zrobić ?
marekpb
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.09.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam !
Jestem raczej początkującym programistą PHP, lecz coś niecoś już umiem i rozumiem. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pracuję obecnie na moim małym systemem zarządzania treścią [CMS] jeżeli można go tak nazwać. Napotkałem takie problem, iż potrzebuję żeby do bazy danych dodawało mi pole takie samo co jego id. Jest to przy formularzu. Pokażę fragmęt kodu:

  1. <?php
  2.  
  3.  
  4. require("konfiguracja.php");
  5.  
  6. $connect = mysql_connect($db_host, $db_user, $db_pass ) or die(mysql_error);
  7. $connect_db = mysql_select_db($db_name) or die(mysql_error);
  8.  
  9. if(isset($_SESSION['USERNAME']) == TRUE) {
  10.  
  11. if($_POST['submit']) {
  12. $sql = "INSERT INTO menu(nazwa , adres, pozycja) VALUES('" . $_POST['nazwa'] . "', '" . $_POST['adres'] . "', '" . (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) . "');";
  13. header("Location: " . $config_basedir . "/menu.php");
  14. }
  15.  
  16. ?>


W miejsce pytajników potrzebuję taki kod który będzie podawał do bazy danych takie samo pole jak pole id. Nie wiem czy da się tak zrobić. Jeśli by się nie dało, to jak zrobić żeby dodawane były kolejne liczby [1,2,3,4 ... itd.]. Mam nadzieję, że zrozumiecie o co mi chodzi, bo nie za bardzo wiem jak to słowami powiedzieć ;] Będę wam wdzięczny za odpowiedź. Z góry dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Kyle
post
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 25.12.2008

Ostrzeżenie: (0%)
-----


W sensie, że chcesz mieć w tabeli kolumnę o unikalnym numerze (ID)?
Jeśli tak to utwórz kolumnę z AUTO_INCREMENT i zapisuj do niej zawsze "DEFAULT".
(Przynajmniej ja tak robię i działa (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )
Go to the top of the page
+Quote Post
marekpb
post
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.09.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Tyle, że ja potrzebuję drugą taką samą kolumnę. Wiesz może jak to zrobić ?
Go to the top of the page
+Quote Post
Kyle
post
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 25.12.2008

Ostrzeżenie: (0%)
-----


Ale jak drugą? Że dwie takie z ID?
Go to the top of the page
+Quote Post
marekpb
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.09.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Tak. Coś w tym rodzaju. Chcę po prostu żeby były dwie takie same z ID ponieważ jedna musi się zmieniać. Lub jak zrobić żeby dodawane były kolejne liczby [1,2,3,4 ... itd.] do tej drugiej tabeli.
Go to the top of the page
+Quote Post
Kyle
post
Post #6





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 25.12.2008

Ostrzeżenie: (0%)
-----


No tak samo jak pisałem.
Przy tworzeniu kolumny dajesz
Kod
<?php
CREATE TABLE nazwa(id1 typ AUTO_INCREMENT, id2 typ AUTO_INCREMENT)
?>


A potem przy zapisywaniu do niej
Kod
<?php
INSERT INTO nazwa VALUES(DEFAULT, DEFAULT)
?>


I za każdym razem będzie w nich kolejna liczba.

Ten post edytował Kyle 28.12.2008, 17:32:26
Go to the top of the page
+Quote Post
marekpb
post
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.09.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Wywala to takim błędem "#1064 - Something is wrong in your syntax obok 'typ AUTO_INCREMENT, id2 typ AUTO_INCREMENT)' w linii 1 " lub jak tworzę przez phpMyAdmin to taki błąd "#1075 - W tabeli może być tylko jedno pole auto i musi ono być zdefiniowane jako klucz ".

Czyli chyba nie mogą być 2 pola z AUTO_INCREMENT. Ma ktoś jakiś inny pomysł ? Może jak z poziomu formularza dodawać kolejne liczby ?
Go to the top of the page
+Quote Post
Kyle
post
Post #8





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 25.12.2008

Ostrzeżenie: (0%)
-----


Znaczy czy można dwa pola auto_increment to nie wiem, bo mi to potrzebne nie było (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Ale rozumiem, że "typ" zamieniłeś na np. INT przy tworzeniu? No i do jednego musisz dać jeszcze PRIMARY KEY.
Ogólnie to się powinien ktoś wypowiedzieć kto to lepiej czai, bo ja jeżeli chodzi o bazy to wszystko robiłem metodą prób i błędów więc... %-)
Go to the top of the page
+Quote Post
MWL
post
Post #9





Grupa: Zarejestrowani
Postów: 493
Pomógł: 32
Dołączył: 14.04.2008
Skąd: Lenkowski.net

Ostrzeżenie: (0%)
-----


Jak nie wiesz to się nie udzielaj (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ja osobiście proponuję to po prostu obliczać - wyciągasz dane o ilości wpisów i wpisujesz, albo wyciągasz ID i wpisujesz obok za pomocą UPDATE
Go to the top of the page
+Quote Post
Kyle
post
Post #10





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 25.12.2008

Ostrzeżenie: (0%)
-----


Co nie zmienia faktu, że auto_increment działa ;>
A ja nadal nie rozumiem po co w bazie dwie kolumny z unikalnymi id (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
marekpb
post
Post #11





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.09.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dobra. Już udało mi się rozwiązać problem. Bynajmniej na chwilę obecną wszystko jest dobrze i tak jak chciałem. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Użyłem funkcji mysql_num_rows. W ten sposób:

  1. <?php
  2.  
  3.  
  4. require("konfiguracja.php");
  5.  
  6. $connect = mysql_connect($db_host, $db_user, $db_pass ) or die(mysql_error);
  7. $connect_db = mysql_select_db($db_name) or die(mysql_error);
  8.  
  9. $commsql = "SELECT * FROM menu";
  10. $commresult = mysql_query($commsql);
  11. $numrows_comm = mysql_num_rows($commresult);
  12. $a = $numrows_comm + 1;
  13.  
  14. if(isset($_SESSION['USERNAME']) == TRUE) {
  15.  
  16. if($_POST['submit']) {
  17. $sql = "INSERT INTO menu(nazwa , adres, pozycja) VALUES('" . $_POST['nazwa'] . "', '" . $_POST['adres'] . "', '" . $a . "');";
  18. header("Location: " . $config_basedir . "/menu.php");
  19. }
  20.  
  21. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 07:07