Suporte » Desenvolvendo com WordPress » passar parâmetro do AngularJS para função PHP

  • Resolvido luizarusso1

    (@luizarusso1)


    Estou no projeto de um e-commerce e precisei criar uma página de adm de produtos, onde vinculamos os produtos as escolas.
    Nessa página tem um select de escolas e, ao selecionar a escola desejada, abaixo são carregados todos os produtos disponíveis. A ideia seria salvar em uma tabela wp_produtoescola (MySQL) os produtos que os alunos daquela escola podem enxergar no e-commerce.
    O meu problema está em passar o id da escola selecionada no select como parâmetro para minha função php e usar essa variável na minha query.
    Já tentei diversos tutoriais e exemplos, mas não dá certo.

    Consegui listar os produtos sem filtro nenhum, e meu código está assim:
    load_produtos.php

    <?php 
        global $wpdb;
    
        $results = $wpdb->get_results( "SELECT post.ID, post.post_title, meta.meta_value, m.meta_value, 
        IF(pe.id_escola = 1, 1, 0) sel
        FROM {$wpdb->prefix}posts post
        inner join {$wpdb->prefix}postmeta meta on post.id = meta.post_id
        inner join {$wpdb->prefix}postmeta m on meta.meta_value = m.post_id
        left join {$wpdb->prefix}produtoescola pe on post.id = pe.id_produto 
        where post.post_type='product' and post.post_status='publish' 
        and meta.meta_key= '_thumbnail_id' and m.meta_key='_wp_attached_file'
        ORDER BY post.post_title");
    
        echo json_encode($results);  
    ?> 

    script:

            $http.get("load_produtos")  
               .success(function(data){  
                $scope.produtos = data;
               })  
         };

    Imaginei que eu deveria usar $http.post no lugar de $http.get e tentei a seguinte estrutura:

    $http({
            url: "urltopost.php",
            method: "POST",
            data: {
                data: variable
            }
        }).success(function(response) {
        console.log(response);
    });

    e no php:

    <?php
    $request = json_decode( file_get_contents('php://input') );
    $variable = $request->data

    Mas também não rolou…
    Alguém teria ideia de como fazer isso? To estudando Angular e PHP faz uma semana e ta ossooo kkkk

    Valeuuu

Visualizando 1 resposta (de um total de 1)
  • Criador do tópico luizarusso1

    (@luizarusso1)

    Postando aqui a solucao para encerrar o tópico:
    Script:
    Meu $http.post levava para meusite/escolas/loado_produtos quando deveria ser meutsite/load_produtos -> isso foi resolvido colocando ../

            $http.post("../load_produtos", {
                        'id': id
                    })
                    .success(function(data) {
                        $scope.produtos = data;
                    })

    php:

    <?php
        $data = json_decode(file_get_contents("php://input"));
    
        if (count($data) > 0) {
            $id    = $data->id;
            $results = $wpdb->get_results( "SELECT post.ID, post.post_title, meta.meta_value, m.meta_value, 
            IF(pe.id_escola ='$id', 1, 0) sel
            FROM {$wpdb->prefix}posts post
            inner join {$wpdb->prefix}postmeta meta on post.id = meta.post_id
            inner join {$wpdb->prefix}postmeta m on meta.meta_value = m.post_id
            left join {$wpdb->prefix}produtoescola pe on post.id = pe.id_produto 
            where post.post_type='product' and post.post_status='publish' 
            and meta.meta_key= '_thumbnail_id' and m.meta_key='_wp_attached_file'
            ORDER BY post.post_title");
    
            echo json_encode($results);
        }
    ?> 

    Para mencionar a variável no meio da query era só usar ‘$id’

    É isso aí, não sei se é a melhor solução, mas foi a solução que encontrei em 1 semana de estudo XD

Visualizando 1 resposta (de um total de 1)
  • O tópico ‘passar parâmetro do AngularJS para função PHP’ está fechado para novas respostas.