γρήγορη απάντηση για id

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

γρήγορη απάντηση για id

Δημοσίευση από txc » 29 Δεκ 2007 02:09

καλησπέρα παιδιά ,έχω φτιάξει ένα πίνακα με 3 πεδία, ένα από αυτά είναι ο μοναδικός αριθμός που αυξάνεται αυτόματα

έχω δώσει δικαίωμα στο χρήστη να προσθέτει εγγραφές στα άλλα δύο πεδία αλλά το Id μένει το ίδιο

παρατήρησα ότι μόλις έσβησα μία εγγραφή τη νούμερο 3, και μετά πρόσθεσα μια άλλη , αυτή η νέα πήγε στο νούμερο 4 ενώ θα έπρεπε να μπει στη θέση της 3

πως πρέπει να δηλώσω το id στη βάση έτσι ώστε να πέρνει αυτόματα τι θέση μιας εγγραφής που σβήστηκε?
ευχαριστώ

Άβαταρ μέλους
greekbytes
WebDev Moderator
Δημοσιεύσεις: 2438
Εγγραφή: 15 Νοέμ 2002 15:42
Τοποθεσία: Αθήνα
Επικοινωνία:

γρήγορη απάντηση για id

Δημοσίευση από greekbytes » 29 Δεκ 2007 09:13

Το τελευταίο που λες είναι φυσιολογικό να συμβαίνει αυτό έχοντας το id field auto_increment. Όταν σβήνεις ένα row δεν πρέπει άλλη εγγραφη να παίρνει τη θέση του.

Δες ένα παράδειγμα στο http://dev.mysql.com/doc/refman/5.0/en/ ... ement.html

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

γρήγορη απάντηση για id

Δημοσίευση από txc » 29 Δεκ 2007 12:59

ναι κατάλαβα

το θέμα είναι ότι δεν θέλω να συμπληρώνει ο χρήστης τον αύξοντα αριθμό, απλά να συμπληρώνει τα άλλα δύο πεδία όταν θέλει να προσθέτει κάτι

άρα τι πρέπει να αλλάξω έτσι ώστε να πέρνει αυτόματα τις εγγραφές στη θέση των παλιών?

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

γρήγορη απάντηση για id

Δημοσίευση από Alice_Cooper » 29 Δεκ 2007 13:04

na ypologizeis sto script prin tin eggrafh ton arithmo id kai meta na stelneis thn eggrafh stelnontas kai to id tis....

Άβαταρ μέλους
georgemakaronis
Δημοσιεύσεις: 1518
Εγγραφή: 10 Φεβ 2006 04:05
Τοποθεσία: Παλαιό Φάληρο

γρήγορη απάντηση για id

Δημοσίευση από georgemakaronis » 29 Δεκ 2007 15:38

εγω παντως οταν διαβασα τον τιτλο του θεματος θεωρησα οτι καποιος περιμενε γρηγορη απαντηση απο τον id....χεχε
Those who educate children well are more to be honored than they who produce them; for these only gave them life, those the art of living well.
Aristotle

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

γρήγορη απάντηση για id

Δημοσίευση από cherouvim » 29 Δεκ 2007 15:59

txc έγραψε:άρα τι πρέπει να αλλάξω έτσι ώστε να πέρνει αυτόματα τις εγγραφές στη θέση των παλιών?
Δεν θέλεις να συμβαίνει αυτό.

Άβαταρ μέλους
w3Cy
Δημοσιεύσεις: 23
Εγγραφή: 02 Ιουν 2005 23:38

γρήγορη απάντηση για id

Δημοσίευση από w3Cy » 29 Δεκ 2007 20:08

Για να μπορέσεις να αλλάξεις τον αριθμό του Autoindex μπορείς να χρησιμοποιήσεις το query:

Κώδικας: Επιλογή όλων

ALTER TABLE `table_name` AUTO_INCREMENT = 8;
Όμως, αυτό θα έκανε πολύπλοκα τα πράγματα.

Μπορείς να χρησιμοποιήσεις το UPDATE query και να διατηρήσεις το id που δώθηκε και απλώς να αντικαταστήσεις τα άλλα 2 πεδία.

Κώδικας: Επιλογή όλων

UPDATE table_name
SET column_name1 = new_value, column_name2 = new_value
WHERE ID = 3
Μια απλή λύση θα ήταν να δημιουργήσεις ένα επιπρόσθετο column που θα χρησιμεύει σαν flag για να ξεχωρίζεις πότε ένα record έχει διαγραφεί ή όχι.

Το κάθε record θα διατηρεί το id του, έστω και αν αυτό έχει διαγραφεί.

Για να φιλτράρεις όλα τα records που είναι ενεργά μπορείς να προσθέσεις σε όλα τα queries:

Κώδικας: Επιλογή όλων

 WHERE column_flag = 'active'

Άβαταρ μέλους
Sheena
Honorary Member
Δημοσιεύσεις: 3654
Εγγραφή: 07 Σεπ 2005 00:00

γρήγορη απάντηση για id

Δημοσίευση από Sheena » 30 Δεκ 2007 18:11

Συμφωνώ με τον w3cy..... Update query υπό συνθήκες......
Εικόνα

id12856 Οι άγγελοι πάνε κοντά με τους αγγέλους...

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες