Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Θα ήθελα  μία βοηθεία αν γίνεται ώστε να υλοποιήσω ένα task.

Έχω τους εξής πίνακες

Actors

id (pk)

name

dob



Movies

id (pk)

title

runtime


// Σχετίσμός ταινίων - ηθοποιών, δηλ. ποιοι ηθοποιοι παίζουν σε ποιες ταινίες 
// και ποιον ρόλο υποδύονται
Casts 

id (pk)

movie_id

actor_id

character

για να κάνω λοιπόν τις συδέσεις μεταξύ ταινιών - ηθοποιών σκέφτηκα να το υλοποιήσω όπως φαίνεται στην εικόνα που έχω επισυναψει. Δηλαδή όταν πατάω το κουμπί "Add Actor" με jquery κάνω append στη φόρμα μου και προσθέτω τα πεδία από κάτω ώστε να μπορώ να πληκτρολογίσω το όνομα του ηθοποιού και το ρόλο που υποδύεται. Εδώ είναι τα βασικά κομμάτια του κώδικά μου.

 

 

// το δημιούργησα προσωρινά για την υλοποίηση του autocomplete
<input type="text" name="actor" id="actor" />
 
<h4>Cast</h4>
<button type="button" id="add_actor" class="btn btn-primary btn-sm">Add Actor</button>
   
<ul class="list-unstyled" id="cast"></ul>
 
// javascript κώδικας
<script>
    $(document).ready(function() {
        // complete the name of the actor
        $('#actor').autocomplete(function() {
            source : "<?php echo base_url('movies/find/?'); ?>"
        });
 
        // append fields to the form
        $('#add_actor').click(function() {
            $('#cast').append('<li style="margin-bottom:5px;"><div class="row"><div class="col-md-6"><input type="text" class="form-control" placeholder="Actor" /></div><div class="col-md-6"><input type="text" name="character[]" class="form-control" placeholder="Character" /></div></div></li>');
        });
    });
</script>

 

Επίσης όταν ( θα ) πληκρολογώ το όνομα του ηθοποιού στο κάθε input field που θα δημιουργήται από το append, θα πρέπει να εμφανίζoνται με autocomplete τα διαθέσιμα ονοματα από τη βάση που ταιριάζουν με ότι πληκτρολογώ.

 

 

// η function που βρίσκεται στο source
public function find() {
        $this->load->model('actor_model');

        if (isset($_GET['term'])) {
            $actors = $this->actor_model->search($_GET['term']);
            if (count($actors) > 0) {
                foreach ($actors as $actor) {
                    $array[] = $actor->name;
                }
                // echo json_encode($array);
                $this->output->set_content_type('application/json')
                ->set_output(json_encode($array));
            }
        }
    }

 

Στην ουσία όμως όταν θα πατάω "save" τα δεδομένα που θα στέλνονται για αποθήκευση θα είναι το ID ταινίας, τα ID των ηθοποιών που παίζουν σε αυτή (όχι τα ονόματα) και οι ρόλοι τους.

 

P.s. ο κώδικας στο backend είναι php - CodeIgniter. To αναφέρω αν και δεν νομίζω ότι παίζει και πολύ σημαντικό ρόλο, μάλλον περισσότερο είναι θέμα jquery - ajax.

post-220874-0-27581600-1424277365_thumb.jpg

Δημοσ.

Αν κατάλαβα δεν παίρνει το actor id.

 

Θα πρέπει καταρχάς να φτιάξεις την πληροφορία σωστά

foreach ($actors as $actor) {
     $array[$actor->id] = $actor->name;
}

και μάλλον, στο select απο το dropdown του autocomplete να κάνεις assign το id σε κάποιο hidden input.

Δημοσ.

Να συμπληρώσω..

Στην jQuery να χρησιμοποιείς πάντα την bind, delegate και on για τα events.. Γενικά σε δυναμικά πεδία να χρησιμοποιείς την on και όχι την click...

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...