Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi Pessoal, sou novo por aqui.
Agradeço se alguém puder me ajudar.
Tenho um banco de dados com a tabela abaixo:
DB pets
------------------------------------------------------------------------------------
| id | pet_tutor | pet_name | pet_species | pet_breed |
------------------------------------------------------------------------------------
| 1 | José | Rex | 1 | Vira-latas |
| 2 | Paulo | Bichano | 2 | Siamês |
| 3 | João | Max | 1 | Lhasa-apso |
------------------------------------------------------------------------------------
Fiz o código abaixo:
$species_lang = array('0' => 'Selecionar','1' => 'Cachorro', '2' => 'Gatos', '3' => 'Acarás');
SELECT (pets.id as id, pet_tutor, pet_name, {(" . $species_lang['pet_species'] . ")}, pet_breed FROM pets)
Resultado:
-----------------------------------------------------------------------------------
| id | pet_tutor | pet_name | pet_species | pet_breed |
------------------------------------------------------------------------------------
| 1 | José | Rex | | Vira-latas |
| 2 | Paulo | Bichano | | Siamês |
| 3 | João | Max | | Lhasa-apso |
-----------------------------------------------------------------------------------
Porque não consigo carregar o campo 'pet_species' com a raça do pet. Alguém tem uma luz pra me ajudar?
ObrigadoOi,
O campo pet_species vai o id da espécie.
Como o código que estou fazendo é multilínguas, então a espécie do animal está em uma matriz.
Em inglês a matriz é assim:
$species_lang = array('0' => 'Select', '1' => 'Dog', '2' => 'Cat', '3' => 'Bird');
Em português ela é assim:
$species_lang = array('0' => 'Selecionar','1' => 'Cachorro', '2' => 'Gatos', '3' => 'Acarás');
Se eu estiver, por exemplo, usando a configuração de lingas em português, o código tem que receber qual o id da espécie e buscar o valor na matriz de espécies em português.
Assim, o resultado deveria ficar assim:
-----------------------------------------------------------------------------------
| id | pet_tutor | pet_name | pet_species | pet_breed |
------------------------------------------------------------------------------------
| 1 | José | Rex | Cachorro | Vira-latas |
| 2 | Paulo | Bichano | Gato | Siamês |
| 3 | João | Max | Cachorro | Lhasa-apso |
-----------------------------------------------------------------------------------
Mas está retornando assim:
-----------------------------------------------------------------------------------
| id | pet_tutor | pet_name | pet_species | pet_breed |
------------------------------------------------------------------------------------
| 1 | José | Rex | | Vira-latas |
| 2 | Paulo | Bichano | | Siamês |
| 3 | João | Max | | Lhasa-apso |
-----------------------------------------------------------------------------------
Se eu altero a query e trocar o trecho "{(" . $species_lang['pet_species'] . ")}" para "pet_species", o resultado fica assim:
-----------------------------------------------------------------------------------
| id | pet_tutor | pet_name | pet_species | pet_breed |
------------------------------------------------------------------------------------
| 1 | José | Rex | 1 | Vira-latas |
| 2 | Paulo | Bichano | 2 | Siamês |
| 3 | João | Max | 1 | Lhasa-apso |
-----------------------------------------------------------------------------------
Ou seja eu forneço uma chave pra matriz, mas ela não está retornando o valor.>
2 horas atrás, William Bruno disse:
Parece que você tem que JOIN com a tabela species, certo?
Oi,
O campo pet_species vai o id da espécie.
Como o código que estou fazendo é multilínguas, então a espécie do animal está em uma matriz.
Em inglês a matriz é assim:
$species_lang = array('0' => 'Select', '1' => 'Dog', '2' => 'Cat', '3' => 'Bird');
Em português ela é assim:
$species_lang = array('0' => 'Selecionar','1' => 'Cachorro', '2' => 'Gatos', '3' => 'Acarás');
Se eu estiver, por exemplo, usando a configuração de lingas em português, o código tem que receber qual o id da espécie e buscar o valor na matriz de espécies em português.
Assim, o resultado deveria ficar assim:
-----------------------------------------------------------------------------------
| id | pet_tutor | pet_name | pet_species | pet_breed |
------------------------------------------------------------------------------------
| 1 | José | Rex | Cachorro | Vira-latas |
| 2 | Paulo | Bichano | Gato | Siamês |
| 3 | João | Max | Cachorro | Lhasa-apso |
-----------------------------------------------------------------------------------
Mas está retornando assim:
-----------------------------------------------------------------------------------
| id | pet_tutor | pet_name | pet_species | pet_breed |
------------------------------------------------------------------------------------
| 1 | José | Rex | | Vira-latas |
| 2 | Paulo | Bichano | | Siamês |
| 3 | João | Max | | Lhasa-apso |
-----------------------------------------------------------------------------------
Se eu altero a query e trocar o trecho "{(" . $species_lang['pet_species'] . ")}" para "pet_species", o resultado fica assim:
-----------------------------------------------------------------------------------
| id | pet_tutor | pet_name | pet_species | pet_breed |
------------------------------------------------------------------------------------
| 1 | José | Rex | 1 | Vira-latas |
| 2 | Paulo | Bichano | 2 | Siamês |
| 3 | João | Max | 1 | Lhasa-apso |
-----------------------------------------------------------------------------------
Ou seja eu forneço uma chave pra matriz, mas ela não está retornando o valor.Esta matriz também está em tabela ?
>
Em 11/01/2021 at 14:27, Motta disse:
Esta matriz também está em tabela ?
Não, é uma variável na linha de códigos;
Em português ela é assim:
$species_lang = array('0' => 'Selecionar','1' => 'Cachorro', '2' => 'Gatos', '3' => 'Acarás');certo, mas ai tá misturando php com query. Primeiro você trás o id:
SELECT (pets.id as id, pet_tutor, pet_name, pet_species, pet_breed FROM pets)
e depois na hora de imprimir na tabela você coloca a tradução:
<td><?= $species_lang[$row->pet_species] ></td>
algo assim, se entendi bem, não é a melhor forma de fazer, mas parece que é como o teu sistema foi pensado.>
13 horas atrás, William Bruno disse:
certo, mas ai tá misturando php com query. Primeiro você trás o id:
SELECT (pets.id as id, pet_tutor, pet_name, pet_species, pet_breed FROM pets)
e depois na hora de imprimir na tabela você coloca a tradução:
<td><?= $species_lang[$row->pet_species] ></td>
algo assim, se entendi bem, não é a melhor forma de fazer, mas parece que é como o teu sistema foi pensado.
Sim, ai daria certo.
Mas o que eu queria era resolver essa matriz na query.
eu alterei o código da query e fiz assim:
SELECT (pets.id as id, pet_tutor, pet_name, IF(pet_species = '0','N/A','" . $species_lang["pet_species"] . "') AS species, pet_breed FROM pets)
veja este exemplo
-----------------------------------------------------------------------------------
| id | pet_tutor | pet_name | pet_species | pet_breed |
------------------------------------------------------------------------------------
| 1 | José | Rex | 1 | Vira-latas |
| 2 | Paulo | Bichano | 2 | Siamês |
| 3 | João | Max | 1 | Lhasa-apso |
| 4 | Pedro | Loro José | 0 | Papagaio |
-----------------------------------------------------------------------------------
Consegui algo que queria, pois se a espécie não for cadastrada pelo usuário, então ela terá o valor 0 (zero), ai o resultado ficou assim:
-----------------------------------------------------------------------------------
| id | pet_tutor | pet_name | pet_species | pet_breed |
------------------------------------------------------------------------------------
| 1 | José | Rex | | Vira-latas |
| 2 | Paulo | Bichano | | Siamês |
| 3 | João | Max | | Lhasa-apso |
| 4 | Pedro | Loro José | N/A | Papagaio |
-----------------------------------------------------------------------------------
Então o código está pegando o valor do campo 'pet_species' mas não está conseguindo passar a Key para a array trazer o valor. Então o problema está aqui no $species_lang["pet_species"].
Parece que você tem que JOIN com a tabela species, certo?