2011-09-27 2 views
0

j'envoie trois fois les valeurs 1 & 2 & 3 par jquery.serialize() pour $hotel_id en PHP, maintenant je veux obtenir dans les chaque fois à partir d'envoi, les données liées à $hotel_id (comme: 1 ou 2 ou 3) de la base de données. mais dans le code suivant je viens d'obtenir des données qui sont liées à la dernière $hotel_id (3).données Echo de base de données dans chaque fois obtenir

Je veux que:

First: get data linked with 1 and echo they in json_encode
Second: (next 2) get data linked with 2 and echo they in json_encode
Third: (next 3)get data linked with 3 and echo they in json_encode
...

Ceci est sortie serialize() à partir du code jQuery:

hotel_id=1&hotel_id=2&hotel_id=3 

Ceci est mon code php:

$hotel_id = $this->input->post('hotel_id'); 
$query_r = $this->db->query("SELECT * FROM hotel_submits WHERE id LIKE '$hotel_id' ORDER BY id desc"); 
$data  = array(); 
foreach ($query_r->result() as $row) { 
    $data_s = json_decode($row->service, true); 
    $data_rp = json_decode($row->address, true); 
    $data[] = array(
     'name' => $row->name, 
     'star_type' => $row->star . '-' . $row->type, 
     'site' => $row->site, 
     'service' => $data_s, 
     'address' => $row->address 
    ); 
} 
echo json_encode($data); 

Comment puis-je faire?

Répondre

2

Vous ne pouvez pas transmettre le même argument trois fois. Il ne verra que le paramètre final de hotel_id et donc vous obtenez juste le numéro 3. PHP permet de passer des tableaux en nommant le paramètre avec [] à la fin comme hotel_id [] = 1 & hotel_id [] = 2, etc et vous peut obtenir le tableau de valeurs en PHP. Cela signifie que votre valeur de $ hotel_id serait un tableau de valeurs au lieu d'une seule valeur. Comme il est un tableau que vous avez besoin de faire imploser le tableau avec une virgule à utiliser dans votre SQL:

$hotel_id = implode(',', $this->input->post('hotel_id')); 

Maintenant hotel_id $ ressemblera « 1,2,3 »;

Maintenant, votre SQL devra changer pour:

SELECT * FROM hotel_submits WHERE id IN ($hotel_id) ORDER BY id desc 

espoir qui aide.

+0

Vous n'avez pas eu besoin de changer dans $ query_r et foreach? et ceci a l'erreur: 'Erreur d'analyse: erreur de syntaxe, inattendue ';' ...' –

+0

Si vous implosez les hotel_ids dans une variable alors votre script se comportera comme prévu (je ne l'ai pas testé). Notez que je n'ai validé aucun code dans votre foreach, je viens d'expliquer le problème avec l'ID hotel_id et la requête sql. – davidethell

+0

Je suggère d'ajouter des éléments de débogage pour analyser votre script. Cela vous aidera à comprendre ce qui se passe en PHP à chaque étape du processus. Par exemple, quelle est la valeur de $ hotel_id après l'implosion de la publication? (print_r ($ hotel_id);) – davidethell

Questions connexes