Ir para conteúdo
fbezerra

PDO button

Recommended Posts

bom dia galera, estou usando Vue js com poo, o problema que estou tendo é que eu não estou conseguindo entender de como passar para o button o id para exclusao, segue abaixo a onde eu parei.

index.php

 

<div id="modalMostrar">
        <div id="descricoes" class="scroll">
            <div class="card" v-for="descricao in descricoes">
                <div class="card-header">
                <h3 class="card-title">{{descricao.desc_data}}</h3>
                </div>
                <div class="card-body">
                     
                    {{descricao.descricao}}
                                                           
                    <a class="fa fa-times btn btn-danger right ml3" id="removerRegistro" v-bind:data-codigo="descricao.cli_id"></a>
                    
                    <button class="fa fa-edit btn btn-primary right"></button>
                    
                </div>
            </div>
        </div>
    </div>

 

script.js

 

//exibir registro-------
$(document).on('click', '#abrirModal', function(event){
    event.preventDefault(); 
    var id = $(this).attr('data-id')//pegando id
    window.desc = new Vue({
        el: '#descricoes',
        data: {
            descricoes: []
        }
    });
    
$.ajax({
    url: 'ajax/clienteDescricao.php?id=' + id, 
    type: 'GET',
    dataType: 'JSON'

}).done((e) => { 
    desc.descricoes = e;  
    })
    $('#modalMostrar').iziModal('open');
});

//remover Registro---------------------------------------------


$(document).on('click', '#removerRegistro', function(event){
    event.preventDefault(); 
    var id = $(this).data('codigo');//pegando id
    window.desc = new Vue({
        el: '#descricoes',
        data: {
            descricoes: []
        }
    });
    
$.ajax({
    url: 'ajax/removerRegistro.php?id=' + id, 
    type: 'GET',
    dataType: 'JSON'

}).done((e) => { 
    desc.descricoes = e;  
    })
    
});

removerRegistro.php

 

<?php
require_once "../database/conexao.php";

if(isset($_GET["id"]) && !empty($_GET["id"])){
    $conex = new conexao();

echo json_encode($conex->deleteDesc($_GET["id"])); 
}
    

 

conexao.php

 

    public function deleteDesc($cli_id){
        $sql = $this->conexao->prepare("DELETE FROM descricao WHERE cli_id = :cli_id");
        $sql->bindValue(':cli_id', $cli_id);
        $sql->execute();
	}

ele não está pegando o id.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por submic
      Boa tarde pessoal, qual é o erro no campo CPF?
       
      <template> <v-container fluid fill-height> <v-layout align-center justify-center row fill-height wrap> <v-flex xs10 sm7 md5 lg3 xl2> <v-form data-vv-scope="form1" :model="form1" lazy-validation @submit.prevent="submitForm('form1')" autocomplete="off" method="post" > <v-card class="elevation-18 my-4"> <v-toolbar flat color="transparent"> <v-toolbar-title>{{ $t('register_head') }}</v-toolbar-title> </v-toolbar> <v-card-text> <v-alert :value="form1.has_error && !form1.success" type="error" class="mb-4" > <span v-if="form1.error == 'registration_validation_error'">{{ $t('server_error') }}</span> <span v-else-if="form1.error == 'limitation_reached'">{{ $t('campaign_customer_sign_up_limit') }}</span> <span v-else>{{ $t('correct_errors') }}</span> </v-alert> <v-text-field v-model="form1.name" data-vv-name="name" v-validate="'required|min:2|max:32'" :label="$t('enter_your_name')" :data-vv-as="$t('name')" :error-messages="errors.collect('form1.name')" required prepend-inner-icon="person" ></v-text-field> <v-text-field type="email" v-model="form1.email" data-vv-name="email" v-validate="'required|max:64|email'" :label="$t('enter_email')" :data-vv-as="$t('email_address')" :error-messages="errors.collect('form1.email')" required prepend-inner-icon="email" ></v-text-field> <v-text-field type="number" v-model="form1.cpf" data-vv-name="cpf" v-validate="'required|min:11|max:11'" :label="$t('digite_cpf')" :data-vv-as="$t('cpf_numero')" :error-messages="errors.collect('form1.cpf')" required prepend-inner-icon="person" ></v-text-field> <v-text-field v-model="form1.password" data-vv-name="password" v-validate="'required|min:8|max:24'" :label="$t('enter_password')" :data-vv-as="$t('password')" :error-messages="errors.collect('form1.password')" :type="show_password ? 'text' : 'password'" :append-icon="show_password ? 'visibility' : 'visibility_off'" @click:append="show_password = !show_password" required prepend-inner-icon="lock" ></v-text-field> <v-checkbox type="checkbox" v-model="form1.terms" data-vv-name="terms" v-validate="'required'" :label="$t('agree_to_terms')" :data-vv-as="$t('terms')" :error-messages="errors.collect('form1.terms')" value="1" required > <template v-slot:label> <div> {{ $t('i_agree_to') }} <v-tooltip bottom> <template v-slot:activator="{ on }"> <a target="_blank" :href="$router.resolve({name: 'legal'}).href" @click.stop v-on="on" > {{ $t('terms_and_policy').toLowerCase() }} </a> </template> {{ $t('opens_in_new_window') }} </v-tooltip> </div> </template> </v-checkbox> </v-card-text> <v-card-actions> <v-btn color="primary" large block :loading="form1.loading" :disabled="form1.loading" type="submit" class="ml-0">{{ $t('create_account') }}</v-btn> </v-card-actions> </v-card> <v-btn @click="toLogin" :disabled="form1.loading" large block text class="no-caps"><v-icon size="16" class="mr-1">arrow_back</v-icon> {{ $t('back_to_login') }}</v-btn> </v-form> </v-flex> </v-layout> </v-container> </template> <script> export default { $_veeValidate: { validator: 'new' }, data() { return { show_password: false, form1: { loading: false, terms: '', name: '', email: '', password: '', locale: '', timezone: '', has_error: false, error: '', errors: {}, success: false } } }, created () { this.form1.locale = Intl.DateTimeFormat().resolvedOptions().locale || null this.form1.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone || null }, computed: { campaign () { return this.$store.state.app.campaign } }, methods: { toLogin() { this.$router.push({name: 'login'}) }, submitForm(formName) { this[formName].has_error = false this[formName].loading = true this.$validator.validateAll(formName).then((valid) => { if (valid) { this.register(formName); } else { this[formName].loading = false return false; } }); }, register(formName) { var app = this[formName] this.$auth.register({ data: { language: this.$i18n.locale, uuid: this.$store.state.app.campaign.uuid, name: app.name, email: app.email, password: app.password, locale: app.locale, timezone: app.timezone, terms: app.terms }, success: function () { app.success = true this.$auth.login({ rememberMe: true, fetchUser: true, params: { locale: this.$i18n.locale, uuid: this.$store.state.app.campaign.uuid, email: app.email, password: app.password, remember: true }, success () { // Handle redirection this.$router.push({name: 'points'}) } }) }, error: function (res) { app.has_error = true app.error = res.response.data.error app.errors = res.response.data.errors || {} if (app.error == 'limitation_reached') { app.name = '' app.email = '' app.password = '' } for (let field in app.errors) { this.$validator.errors.add({ field: formName + '.' + field, msg: app.errors[field][0] }) } app.loading = false } }) } }, } </script>
       
    • Por Rasp
      Fala galera! Estou com a seguinte situação e queria uma ajuda de pôr onde seguir o meu raciocínio para resolver:
       
      Possuo um array X com dados que vem do meu backend, exemplo:
       
      array = [ 0: [1, 'Banana', '3.00', '...'], 1: [2, 'Maça', '4.00', '...'], 2: [3, 'Abacaxi', '5.00', '...'] ];
      Monto para o usuário uma tela com a tabela desses dados, com informações resumidas e um botão "detalhar" para exibir o conteúdo em um modal:
       
      | ID | Fruta | Preço| Ação | | 1 | Banana | 3.00 | Detalhar | | 2 | Maça | 4.00 | Detalhar | | 3 | Abacaxi| 5.00 | Detalhar | Até aí tudo certo, funciona redondo. Mas preciso fazer com que ao abrir o modal, independente do registro que cliquei (ID 1, 2 ou 3), eu possa "navegar" entre os outros registros no modal (possuo botões para isso) sem precisar sair do modal, como se fosse uma paginação.
       
      Como poderia construir essa lógica?
    • Por janir.matheus
      Bom dia,
       
      Preciso de ajuda ajuda para resolver o problema de SIGSEGV, basicamente tennho um zconection dentro de uma classe e recebo erro quando tento acessá-lo. Segue um trecho da classe:
      unit unt_classconexao; {$mode objfpc}{$H+} interface uses Classes, SysUtils, ZConnection, ZDataset; type { tConexao } tConexao = class private public vConector : TZConnection; function Listar_Usuarios:TZReadOnlyQuery; procedure Conectar_Banco; end; implementation { tConexao } function tConexao.Listar_Usuarios: TZReadOnlyQuery; var zrquery : TZReadOnlyQuery; begin Conectar_Banco; try zrquery := TZReadOnlyQuery.Create(nil); zrquery.Connection := vConector; zrquery.SQL.Clear; zrquery.SQL.Text := 'SELECT * from tbl_profissionais'; zrquery.Open; Listar_Usuarios := zrquery; finally end; end; procedure tConexao.Conectar_Banco; begin //vConector := TZConnection.Create(nil); vConector.HostName := 'localhost'; vConector.Port := 3306; vConector.Database := 'Caps'; vConector.Protocol := 'mysql-5'; vConector.User := 'root'; vConector.Password := ''; vConector.Connected := true; end; end. Após isso tento fazer uso dessa classe para popular um DBGrid:
      unit unt_frmprincipal; {$mode objfpc}{$H+} interface uses Classes, SysUtils, DB, Forms, Controls, Graphics, Dialogs, Menus, DBGrids, ZConnection, unt_classconexao; type { Tfrm_principal } Tfrm_principal = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; MainMenu_frmPrincipal: TMainMenu; MenuItem_AplicativoSair: TMenuItem; N1: TMenuItem; MenuItem_AplicativoLogin: TMenuItem; MenuItem_Aplicativo: TMenuItem; procedure MenuItem_AplicativoLoginClick(Sender: TObject); private public vConexao : tConexao; end; var frm_principal: Tfrm_principal; implementation {$R *.lfm} { Tfrm_principal } procedure Tfrm_principal.MenuItem_AplicativoLoginClick(Sender: TObject); begin //vConexao := tConexao.Create; DataSource1.DataSet := vConexao.Listar_Usuarios; end; end. A mensagem de erro que recebo dá a entender que o problema ocorre logo que o zconnection começa a ser configurado, como vocês podem ver pelos trechos comentados eu tentei instanciar o componente também sem sucesso. Não tenho experiencia com POO e tenho certeza que estou cometendo um erro bobo, então peço uma explicação sobre como resolver isso. Agradeço de antemão a quem puder me ajudar.
       
      PS. Estou usando o Lazarus.
    • Por sergiosfpereira
      Boa tarde a todos,
       
      Estou estudando MVC e me deparei com a seguinte situação:

      Tenho uma View que precisa receber dados de dois Models diferentes, então no controller desta View eu tenho a função abaixo:
      public function teste($id) { $this->view->a = $this->getOneA($id); $this->loadModel('b'); $this->view->b = $this->model->getOneB($id); $this->view->render('app/teste'); } O cenário acima me retorna o esperado, pega os dados de A e de B e os deixa disponiveis para a View.
       
      Está correto utilizar esse método ?
       
      Se sim, eu deveria carregar o Model "b" no __construct do controller "a"  ou diretamente na função do controller "a" como neste exemplo?
       
      Se não, qual a melhor maneira de obter dados de diferentes Models?
       
      OBS: todos os controllers são filhos do controller principal e todos os models são filhos do model principal.
       
      E me perdoem se eu estiver falando bobagem, como disse, estou aprendendo e a finalidade aqui é didatica e agradeço a quem puder contribuir.
    • Por unset
      Olá, uma dúvida tenho uma classe que faz upload de imagens e cadastra no banco, como eu faço para executar uma outra classe ação função etc somente apos verificar que todo o upload dos arquivos foi realizado com sucesso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.