Jump to content
Priscila Neu

Criando WebService / Api com Relacionamento de Tabelas

Recommended Posts

Boa noite,

 

Por favor, uma ajuda, sou nova em programação e estou precisando fazer um relacionamento de tabela mysql, com retorno em json, eu tentei o seguinte código, mas está com erros.

Já pesquisei muito no google e youtube, mas não consegui achar nada parecido.

<?php
header("Access-Control-Allow-Origin: *");
header('Content-Type: application/json; charset=utf-8');

$con = new mysqli('mysql.meusite.com.br', 'meubanco', 'senha', 'meubanco');
if (mysqli_connect_errno()) trigger_error(mysqli_connect_error());
    $sql = "SELECT refeicao.nome, refeicao.id FROM refeicao_refeicao AS refeicao
                INNER JOIN refeicao_alimento AS opcao
                INNER JOIN alimentos_refeicao AS cardapio
                WHERE cardapio.id_refeicao = refeicao.id
                AND cardapio.id_alimentos = opcao.id
                GROUP BY refeicao.id";
    $query = mysql_query($sql);
    $arr = Array();
        
        if(mysql_num_rows($query)){
            while($dados = mysql_fetch_object($query)){
                $arr[0] = $dados->id;
                $arr[1] = $dados->nome;
                $arr[2] = $id_refeicao;
        }
            $sql2 = "SELECT refeicao_alimento.nome
                FROM refeicao_alimento 
                INNER JOIN refeicao_refeicao
                INNER JOIN alimentos_refeicao
                WHERE alimentos_refeicao.id_alimentos = refeicao_alimento.id
                AND alimentos_refeicao.id_refeicao = $id_refeicao
                GROUP BY refeicao_alimento.id";
            $query2 = mysql_query($sql2);
            $arr2 = Array();
        
            if(mysql_num_rows($query)){
                while($dados2 = mysql_fetch_object($query)){
                    $arr2[0] = $dados2->nome;
            }
  
    
    }    
echo json_encode();
//print_r($JSON);
}
?>

 

<br />
<b>Warning</b>:  mysql_query(): No such file or directory in <b>/home/qualitserv/www/api/apiCardapios.php</b> on line <b>16</b><br />
<br />
<b>Warning</b>:  mysql_query(): A link to the server could not be established in <b>/home/qualitserv/www/api/apiCardapios.php</b> on line <b>16</b><br />
<br />
<b>Warning</b>:  mysql_num_rows() expects parameter 1 to be resource, boolean given in <b>/home/qualitserv/www/api/apiCardapios.php</b> on line <b>20</b><br />

Eu já uso essa mesma estrutura sql no meu sistema onde cadastro os dados, mas acredito que para api, deve funcionar de forma diferente! Obrigada!

 

Edited by Gabriel Heming
adicionar marcação de código

Share this post


Link to post
Share on other sites

em principio estão sendo misturados comandos mysqli* e mysql*,
estes ultimos foram removidos e não devem mais ser usados; t aconselho padronizar.

Aqui:
https://forum.imasters.com.br/topic/542539-atenção-orientações-e-regras-do-fórum-de-php/

tem outras dicas boas, atenção às mensagens de erro.

ah, sobre relacionamento tem umas dicas aqui:

http://trocadicas.blogspot.com.br/2016/03/relacionando-tabelas-em-bancos-de-dados_10.html

  • +1 1

Share this post


Link to post
Share on other sites
22 horas atrás, Fernando C disse:

em principio estão sendo misturados comandos mysqli* e mysql*

 

Bem visto, não reparei nesse pormenor.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By juninhogpe
      Boa tarde pessoal.
       
      Tenho a seguinte estrutura para menu e submenu de uma loja virtual:
       
      {% for category in categories %} {% if loop.index <= nivelLimit %} <li class="category--{{ category.id }} category__item--one {% if category.children %} category__label{% endif %}{% if category.id == settings.featuredCategory %} featured{% endif %}"> <a href="{{ category.link }}" class="category__link--one">{{ category.name }}</a> {% if category.children %} <span class="hidden-lg category__button"> <svg class="category__button-icon icon--down"><use xlink:href="#icon-down"></use></svg> </span> <div class="category__dropdown"> <ul class="category__list--two"> {% for child in category.children %} <li class="category--{{ child.id }} category__item--two"> <a href="{{ child.link }}" class="category__link--two">{{ child.name }}</a> </li> {% if child.children %} {% for grandchild in child.children %} <li class="category--{{ grandchild.id }} category__item--three"> <a href="{{ grandchild.link }}" class="category__link--three">{{ grandchild.name }}</a> </li> {% endfor %} {% endif %} {% endfor %} </ul>  
       
      O problema é que o submenu só é exibido quando eu clico no ícone do svg, eu gostaria que ao clicar na "categoria" ele não abrisse a página da categoria e sim exibisse o submenu, como posso alterar esse código?
       
      Obrigado.
    • By jrolimajr
      Olá pessoal, tudo bem com vocês?
       
      Preciso de uma ajuda mas eu estou completamente perdido, tenho apenas a ideia na mente ainda e gostaria de saber se é possível pelo PHP.
       
      Eu estou planejando construir uma página para uso interno, onde ela terá acesso a um banco de dados e irá gerar um valor baseado nos dados inseridos anteriormente.
       
      MODELO DE EXEMPLO:
      Banco de dados:
      id, valor
       
      Execução:
      ID          VALOR
      01          1
      02          0
      03          1
      04          1
      05          0
      06          1
      07          0
      08          0
      09          0
      10          0
      11          1
      12          0
      13          0
      14          1
      15          1
      16          0
      17          1
      18          1
      19          1
      20          0
      21          ????
       
      Eu gostaria de fazer ele avaliar os resultados anteriores e TENTAR descobrir o próximo resultado e gerar ele, como se ele identificasse um padrão.
      ISSO É POSSÍVEL USANDO PHP???? Se sim, me deem uma luz pq eu não tenho ideia de como fazer isso. OBRIGADOOO...
    • By violin101
      Caros amigos, saudações...
       
      Desculpa em recorrer ao auxílio dos amigos.
       
      Gostaria de tirar uma dúvida, que é o seguinte.
       
      Tenho uma Tabela de Produtos e gostaria de Imprimir apenas os produtos selecionados, por exemplo:
       
      Tabela
      [ X ] - Caneta
      [     ] - Lápis
      [ X ] - Borracha
      [     ] - Régua
      [ X ] - Caderno
       
      Como faço para Imprimir somente os itens selecionados da Tabela ?
       
      Grato,
       
      Cesar
    • By mm_edilson
      Bom dia. Estou montando um sistema (meio que emergencial) para a igreja, para transmissão ao vivo, por causa do isolamento social. Na Página onde estou incorporando a live, no site da igreja, quero que, se a pessoa entrar dentro do dia e horário oficial de culto, e o vídeo não começar, apareça para ele uma div com um "clique aqui" para dar um restart na página. Se for outros dias e horários, onde não tiver ao vivo, que apareça outra div, com um "clique aqui" para ir para a página de cultos gravados. 
       
      Então, em resumo, quando a pessoa entrar, o php vai pegar  dia e a hora, e conferir com os dias e horários das variáveis. Se bater com algum, aparece a div 1, se não bater, aparece a div 2.
       
      A ideia eu tenho, mas quero correr enquanto mal consigo engatinhar, aí ficou difícil. Eis o código que pensei, mas que não funcionou:
       
      <?php $dataatual = ('w'); $horaatual = ('H:i:s'); $horade = '19:59:59'; $horaate = '21:00:01'; $horade1 = '08:59:59'; $horaate1 = '10:00:01'; $horade2 = '19:29:59'; $domingo = '0'; $quarta = '3'; $quinta = '4'; if (($dataatual = $domingo and ($horaatual >= $horade1 and $horaatual <= $horaate1))) or (($dataatual = $domingo and ($horaatual >= $horade2 and $horaatual <= $horaate))) or (($dataatual = $quarta and $horaatual >= $horade and $horaatual <= $horaate))) or (($dataatual = $quinta and $horaatual >= $horade and $horaatual <= $horaate))) { ?> <div class="conteudo"> <h3>Olá, estamos ao vivo. Caso não esteja visualizando o vídeo, Clique <a href="https://www.ibnagv.com.br/cultos-ao-vivo/">AQUI </a>para atualizar sua página.</h3> </div><?php } ?> else { ?> <div class="conteudo1"> <h3>Olá, no momento não estamos ao vivo. Mas você pode assistir nossos cultos gravados, clicando <a href="https://www.ibnagv.com.br/cultos-gravados/">AQUI </a>ou acessando o Menu Mídias / Cultos Gravados. Obrigado. </h3></div> <?php } ?>  
      Alguém pode dar uma força? 
       
       
    • By gersonab
      Bom dia, utilizo um sistema de auto complete que funciona quase que perfeitamente, porque quase, se eu tenho 10 Marias cadastradas o autocomplete só inicia após eu colocar uma letra do segundo nome e ou sobrenome, tipo :
      se eu escrever Maria somente, não aparece opções na lista;
      agora se eu escrever Maria A - ja começa a aparecer opções na lista;
      tem como iniciar as opções após uma terceira letra digitada ?
      segue o código que utilixo.
      form
      <label class="field"> <input type="text" name="nomec" id="nomec" class="gui-input"> <input type="hidden" name="idc" id="idc"> </label> ajax
      $( "#nomec" ).autocomplete({ source: function( request, response ) { $.ajax({ url: "../lista/autocli.php", type: 'post', dataType: "json", data: { search: request.term }, success: function( data ) { response( data ); } }); }, select: function (event, ui) { $('#nomec').val(ui.item.label); $('#idc').val(ui.item.value); return false; } }); autocli.php
      require_once('config.php'); if(isset($_POST['search'])){ $search = $_POST['search']; $query = "SELECT DISTINCT nomec AS nomec, idc FROM cli WHERE nomec like'%".$search."%'"; $result = mysqli_query($con,$query); $response = array(); while($row = mysqli_fetch_array($result) ){ $response[] = array("value"=>$row['idc'],"label"=>$row['nomec']); } echo json_encode($response); } exit; desde já agradeço.
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.