Jquery - Ajax τεχνικές

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

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

Απάντηση
dianikol
Δημοσιεύσεις: 108
Εγγραφή: 21 Ιαν 2008 15:56

Jquery - Ajax τεχνικές

Δημοσίευση από dianikol » 21 Αύγ 2010 18:39

Γεια σας στο φορουμ, Θα ηθελα να σας δειξω μια τεχνικη που χρησιμοποιω για να κανω update με jquery και ajax και θα ηθελα να μου πειτε τη γνωμη σας για το αν πιστευτε οτι ειναι ο καλυτερος τροπος και αν οχι να μου υποδειξετε καποιον πιο αποδοτικο τροπο.

Λοιπον θα αναφερω ενα απλο παραδειγμα που ομως εχει πρακτικη εφαρμογη.

Ας υποθεσουμε εχουμε ενα πινακα στη βαση μας, ας τον πουμε user με τρια πεδια, : id, lastName, firstName

Στην index.php δημιουργουμε ενα πινακα

Id | Last Name | First Name | +/-

και τρια κουμπια

1) Add new row
2) Save the row
3) Update the row

Το κουμπι "Add new row" βρισκεται σε καποιο σημειο εξω απο τον πινακα ενω τα αλλα δυο στο τελευταιο πεδιο του πινακα (+/-). Το concept ειναι το εξης. Κανω κλικ στο "Add new row" και με jquery προσθετω μια νεα γραμμη στο τελος του πινακα που περιεχει εναν counter για το πρωτο πεδιο που μας δειχνει την τρεχουσα γραμμη, δυο text inputs για τα ονοματα και για το τελευταιο πεδιο τα δυο κουμπια "Save the row" και "Update the row" που ομως το "Update the row" ειναι .hide() και φαινεται μονο το "Save the row" κουμπι,

Μολις Πατησω το "Save the row" με ajax αποθηκευω τα ονοματα στη βαση. Κατοπιν κανω .hide() το "Save the row" και .show() το "Update the row". Για να μπορω να κανω update την συγεκρημενη γραμμη, κατα την κληση ajax του επιστρεφω το max(id) και το αποθηκευω σε ενα hidden input το οποιο δημιουργηται σε καποιο σημειο μεσα στη νεα γραμμη οταν κανω κλικ στο "Add new row", και ετσι μπορω να παρω την τιμη του για την συγεκρημενη σειρα με το $(this) οταν πατας το "Save"

Αυτη η διαδικασια μπορει να επαναληφθει για καθε νεα γραμμη και ετσι εχω μια stand alone εφαρμογη.


Προς το παρων αυτη η τεχνικη δουλευει για μενα χωρις κανενα προβλημα. Εχετε να υποδειξετε καποιον πιο αποδοτικο η αν θελετε πιο σωστο τροπο απο αυτον??

Σας ευχαριστω και περιμενω τις απαντησεις σας

:lol:

Άβαταρ μέλους
Sermac
Δημοσιεύσεις: 363
Εγγραφή: 26 Σεπ 2007 21:08

Jquery - Ajax τεχνικές

Δημοσίευση από Sermac » 21 Αύγ 2010 22:14

Το πρώτο σφάλμα που παρατηρώ είναι το max(id) που επιστρέφεις. Φαντάσου ότι στην βάση υπάρχουν οι εγγραφές:

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

ID NAME
1  Nikos
2  Giannis
3  Maria
Αν διαγράψεις την "Μαρία", τότε το auto_increment είναι 4, ενώ το max(id) θα σου επιστρέψει λανθασμένα 2! Γι' αυτό, αντί του max(id) χρησιμοποίησε την συνάρτηση mysql_insert_id (ή την mysqli_insert_id αν παίζεις με prepared statements).


Κάτι άλλο, στη στήλη "Id" του index.php φορτώνεις τα id από την βάση ή απλά έναν αύξοντα αριθμό;
dianikol έγραψε:...οταν πατας το "Save"
Κι εδώ, μήπως έπρεπε να γράψεις "Update";
Εικόνα

dianikol
Δημοσιεύσεις: 108
Εγγραφή: 21 Ιαν 2008 15:56

Jquery - Ajax τεχνικές

Δημοσίευση από dianikol » 21 Αύγ 2010 22:43

Στην index.php επιστρεφω εναν αυξοντα αριθμο, δεν σχετιζεται με τη βαση.

Ναι οντως Update αντι του Save, Τυπογραφικο λαθος..

Οσον αφορα το max(id) : Οταν πατησω αρχικα Save στελνω τα δεδομενα στην insert.php ας την πουμε ετσι. Αμεσως μετα το query για την insert εκτελω αλλο ενα query οπου τοτε του ζηταω το max(id) και προφανως θα μου επιστρεψει το id που πριν απο λιγο εκανα εισαγωγη, Ετσι καθε γραμμη που γινετε αρχικα Save επιστρεφεται το id απο τη βαση που του αντιστοιχει. Δεν υπαρχει θεμα συνχυσης με τις αλλες γραμμες.

Με την ιδια λογικη μπορω να εχω και ενα επιπλεον κουμπι delete για καθε γραμμη παλι με ajax οπου χρησιμοποιει το ιδιο id που εχει επιστραφει οταν εγινε save και απλα κανω hide() τη συγεκρημενη γραμμη.


Αυτο με την mysql_insert_id δε το ειχα υποψιν μου, θα το κοιταξω.

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

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

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