Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Dodawanie pola takiego samego jak ID
Forum PHP.pl > Forum > Przedszkole
marekpb
Witam !
Jestem raczej początkującym programistą PHP, lecz coś niecoś już umiem i rozumiem. 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'] . "', '" . questionmark.gifquestionmark.gifquestionmark.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.
Kyle
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 tongue.gif)
marekpb
Tyle, że ja potrzebuję drugą taką samą kolumnę. Wiesz może jak to zrobić ?
Kyle
Ale jak drugą? Że dwie takie z ID?
marekpb
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.
Kyle
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.
marekpb
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 ?
Kyle
Znaczy czy można dwa pola auto_increment to nie wiem, bo mi to potrzebne nie było 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... %-)
MWL
Jak nie wiesz to się nie udzielaj 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
Kyle
Co nie zmienia faktu, że auto_increment działa ;>
A ja nadal nie rozumiem po co w bazie dwie kolumny z unikalnymi id winksmiley.jpg
marekpb
Dobra. Już udało mi się rozwiązać problem. Bynajmniej na chwilę obecną wszystko jest dobrze i tak jak chciałem. 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. ?>
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.