Δυνατότητα εισαγωγής νέας στήλης σε πίνακα μιας βάσης

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

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

Απάντηση
mariospapa
Δημοσιεύσεις: 33
Εγγραφή: 01 Αύγ 2010 18:11

Δυνατότητα εισαγωγής νέας στήλης σε πίνακα μιας βάσης

Δημοσίευση από mariospapa » 11 Οκτ 2010 02:17

Υπάρχει η δυνατότητα εισαγωγής μιας νέας στήλης σ'έναν πίνακα μιας βάσης όπου η στήλη θα έχει σε κάθε εγγραφή της δύο τιμές μιας μεταβλητής;

Δλδ: έχω την βάση "Database" και τον Πίνακα "Table" της βάσης. Ο πίνακας Table της βάσης αποτελείται από τα πεδία "Field1", "Field2" τα οποία έχουν γεμίσει με τιμές από κάποιες αποστολές φορμών. Θέλω να εισάγω εκ των υστέρων ένα νέο πεδίο "Field3" το οποίο θα έχει τιμές σε κάθε εγγραφή του πίνακα "ΝΑΙ" ή "ΟΧΙ" και να αποθηκεύεται αυτή η τιμή. Γίνεται αυτό; Κι αν ναι, πως θα το κάνω;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Δυνατότητα εισαγωγής νέας στήλης σε πίνακα μιας βάσης

Δημοσίευση από korgr » 11 Οκτ 2010 02:30

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

$mysqlType ="varchar(3) DEFAULT NULL";
mysql_query("ALTER TABLE `table` ADD `Field3` $mysqlType ");
Μετά θα μπορείς να στέλνεις εκτός από τις τιμές των δύο πρώτων πεδίων, και ένα "ΝΑΙ" ή "ΟΧΙ" και να το αποθηκεύεις στο πεδίο `Field3`

mariospapa
Δημοσιεύσεις: 33
Εγγραφή: 01 Αύγ 2010 18:11

Δυνατότητα εισαγωγής νέας στήλης σε πίνακα μιας βάσης

Δημοσίευση από mariospapa » 11 Οκτ 2010 02:39

korgr έγραψε:

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

$mysqlType ="varchar(3) DEFAULT NULL";
mysql_query("ALTER TABLE `table` ADD `Field3` $mysqlType ");
Μετά θα μπορείς να στέλνεις εκτός από τις τιμές των δύο πρώτων πεδίων, και ένα "ΝΑΙ" ή "ΟΧΙ" και να το αποθηκεύεις στο πεδίο `Field3`

korgr, η διαφορά απ'αυτό που ζητάω έγκειται στο εξής: οι τιμές των field1 και field2 είναι ήδη αποθηκευμένες και ο χρήστης αφού συνδεθεί στην βάση βλέπει συγκεκριμένα κάποιες εγγραφές που του επιτρέπω εγώ σορταρισμένες σ'έναν πίνακα χρησιμοποιώντας CSS styles. Πως θα μπορέσω να τοποθέτησω ένα checkbox πχ σε κάθε γραμμή του φιλτραρισμένου πίνακα που βλέπει ο χρήστης, ώστε όταν κλικάρει σ'αυτό να δίνει την τιμή "NAI" και όταν δεν ειναι κλικαρισμένο να ειναι by default "ΟΧΙ", ενώ παράλληλα να αποθηκεύονται αυτές οι τιμές στον πίνακα; Χρειάζεται να φτιάξω εκ νέου φόρμα με post (ή get method) προκειμένου να στέλνει ο χρήστης αυτή την πληροφορία που θέλω;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Δυνατότητα εισαγωγής νέας στήλης σε πίνακα μιας βάσης

Δημοσίευση από dva_dev » 11 Οκτ 2010 09:28

Για να βάλεις το extra πεδίο στον πίνακα σου στη mysql, δεν χρειάζεται κάτι άλλο από αυτό που αναφέρει ο korgr.
Αν θέλεις να βάλεις και ένα checkbox θα πρέπει να το προσθέσεις και στη φόρμα σου όπου βρίσκεται αυτή (σε ιστοσελίδα; σε εφαρμογή;) και να βάλεις και το πεδίο στο/στα αντίστοιχα queries που κάνουν τα inserts/selects/updates στον πίνακα

mariospapa
Δημοσιεύσεις: 33
Εγγραφή: 01 Αύγ 2010 18:11

Δυνατότητα εισαγωγής νέας στήλης σε πίνακα μιας βάσης

Δημοσίευση από mariospapa » 11 Οκτ 2010 15:17

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

<?php
$conn = mysql_connect &#40;"localhost", "username","password"&#41;;
$status = $_POST&#91;'acc_status'&#93;;
$abs_no = $_POST&#91;'number'&#93;;

if&#40;! $conn &#41;
&#123;
  die&#40;'Could not connect&#58; ' . mysql_error&#40;&#41;&#41;;
&#125;

if&#40;$status == 1 &#41; &#123;
$sql = 'UPDATE table_name
        SET acc="1"
        WHERE cf_id="$abs_no"';

mysql_select_db&#40;'database_name'&#41;;
$retval = mysql_query&#40; $sql, $conn &#41;;
if&#40;! $retval &#41;
&#123;
  die&#40;"Could not update data&#58; " . mysql_error&#40;&#41;&#41;;
&#125;
echo "Updated data successfully\n";
&#125; else &#123;
$sql = 'UPDATE table_name
        SET acc="0"
        WHERE cf_id="$abs_no"';

mysql_select_db&#40;'database_name'&#41;;
$retval = mysql_query&#40; $sql, $conn &#41;;
if&#40;! $retval &#41;
&#123;
  die&#40;'Could not update data&#58; ' . mysql_error&#40;&#41;&#41;;
&#125;
echo "Updated data successfully\n";
&#125;
mysql_close&#40;$conn&#41;;

?>

Έκανα την εισαγωγή του νέου field μέσα από PhPMyAdmin πιο εύκολα. Έγραψα το παραπάνω κώδικα σ'ένα αρχείο .php το οποίο καλείται κατά την υποβολή μιας φόρμας με την μέθοδο (Post) στην οποίο ο χρήστης επιλέγει την τιμή "0" ή "1" για την μεταβλητή "acc_status" και υπάρχει ένα hidden πεδίο όπου καταχωρείται στην μεταβλητή "number" ο αριθμός της κάθε εγγραφής. Όταν κάνω post αυτή την φόρμα αλλάζουν όλες οι τιμές της στήλης "acc" του πίνακα "table_name" σε 0 ή 1, παρόλο που καταχωρούνται σωστά τα "status" και "abs_no". Θέλω να αλλάζει μόνο η τιμή της στήλης "acc" σε κάθε εγγραφή μόνο όταν ισχύει το Where Clause που έχω γράψει. Γιατί δεν εκτελείται σωστά;

Απάντηση

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

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

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