Error when inserting in the Sql Server 2016 Database?

2

I have tried to store values in my database and I have run into a problem I am handling Laraver 5.5 and SQL Serve 2016

"message": "SQLSTATE[23000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]No se puede insertar el valor NULL en la columna 'Telefono', tabla 'Nombre_DB.dbo.tblTelefonos'. La columna no admite valores NULL. Error de INSERT. (SQL: insert into [dbo].[tblTelefonos] ([Telefono], [idParentesco]) values (, ))",

This is the code I have:

Vista

<div id="collapseFour" class="collapse" aria-labelledby="headingFour" data-parent="#accordion">
        <div class="card-body">
          <div class="container">
            <div class="row"><!-- Div Row -->
              <div class="col-md-3 cuadros">
                <h6 class="letra"><span class="obligatorio">*</span> Teléfono:</h6>
                <hr class="linea1">
                <input name="txtTelefono" class="k-textbox" type="text" id="txtTelefono" maxlength="10" style="width: 100%">
              </div>
              <div class="col-md-7 cuadros">
                <h6 class="letra"><span class="obligatorio">*</span> Parentesco:</h6>
                <hr class="linea1">
                <input name="cmbParentesco" placeholder="SELECCIONA" type="text" id="cmbParentesco" style="width: 100%">
              </div>
              <div class="col-md-2 cuadros">
                <button type="button" id="btnAgregarTelefono" onclick="agregarTelefono();" title="Agregar teléfono" class="btn btn-success"><i class="fas fa-plus" aria-hidden="true"></i> Agregar</button>
                <br>
              </div>
            </div><!-- Fin Div Row -->
            <br>
            <div class="row">
              <div class="navegacion-tabla">
                <table width="100%" id="tbTelefonos" class="table table-striped table-bordered">
                  <thead>
                    <tr>
                      <th width="30%">Teléfono</th>
                      <th width="60%">Parentesco</th>
                      <th width="10%">Eliminar</th>
                    </tr>
                  </thead>
                  <tbody>
                  </tbody>
                </table>   
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

Driver

<?php

namespace acciones\Http\Controllers;

use Illuminate\Http\Request;
use acciones\Telefono;
use DB;

class TelefonoController extends Controller
{
    //
    protected function obtenerTelefonosSolicitante($solicitante)
    {
        $result = DB::table('tblTelefonos')
                    ->select('idSolicitante','tblTelefonos.Telefono','tblTelefonos.idParentesco','tblCParentesco.idParentesco','tblCParentesco.Descripcion')
                    ->join('tblCParentesco', 'tblCParentesco.idParentesco', '=', 'tblTelefonos.idParentesco')
                    ->where('idSolicitante',$solicitante)->get();

        return response()->json($result);
    }

    protected function buscarTelefonoPorSolicitanteParentesco($solicitante,$parentesco,$telefono)
    {
        $arreglo = Telefono::where('idSolicitante',$solicitante)->
                            where('idParentesco',$parentesco)->
                            where('Telefono',$telefono)->get();

        if(count($arreglo)>0){
            return response()->json("true");
        }

        return response()->json("false");
    }

    protected function agregar(Request $request)
    {
        if($request->ajax()){
            Telefono::create($request->all());

            return response()->json([
                'mensaje' => 'Successfully created!'
            ]);
        } 
    }

    protected function eliminar(Request $request,$solicitante,$parentesco)
    {
        if($request->ajax()){

            DB::table('tblTelefonos')->
                where('idSolicitante',$solicitante)->
                where('idParentesco',$parentesco)->
                delete();

            return response()->json([
                'mensaje' => 'Successfully deleted!'
            ]);
        }
    }

}

Routes

Route::get('/telefonoPorSolicitante/{solicitante}','TelefonoController@obtenerTelefonosSolicitante');
        Route::get('/telefonoPorSolicitanteParentesco/{solicitante}/{parentesco}/{telefono}',' TelefonoController@buscarTelefonoPorSolicitanteParentesco');
        Route::post('/telefono/agregar','TelefonoController@agregar');
        Route::delete('/telefono/eliminar/{solicitante}/{parentesco}','TelefonoController@eliminar');

Js

function agregarTelefono(){

  let auxClaveAccion = claveAccion.substring(0,2) + '.' + claveAccion.substring(3,5) + '.' + claveAccion.substring(6);
  let bandera = '';

  $.ajaxSetup({async:false});
  //Verificar que el telefono existe en la tabla tblDatosSolicitantes
  $.getJSON('/solicitante/'+$('#txtCURP').val()+'/'+auxClaveAccion,function(item){
    solicitante = item.idSolicitante;
  });
  // console.log('/solicitante/'+auxClaveAccion);
  //solicitante = "1511"
  if(solicitante!=""){

    //Checar si el telefono ya existe en tblTelefonos
    $.getJSON('/telefonoPorSolicitanteParentesco/'+solicitante+'/'+idParentesco+'/'+telefono,function(data){
      bandera = data;
    });
   console.log('/telefonoPorSolicitanteParentesco/'+solicitante+'/'+idParentesco+'/'+telefono);
    //Si no está, se inserta
    if(bandera!="true"){
       $.ajax({
        url: '/telefono/agregar',
        async:false,
        headers:{'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')},
        type: 'POST',
        data: {
          "idSolicitante":solicitante,
          "Telefono":telefono,
          "idParentesco":idParentesco
        },
        success:function(data,status,xhr){
          console.log(xhr.responseText );
          recargarTablaTelefonos();
          //Ocultar ovelay
          $('#overlay').css({'display':'none'});
          //exito();
        },
        error:function(xhr, status, error){
          console.log(xhr.responseText );
          //Ocultar ovelay
          $('#overlay').css({'display':'none'});
          //alerta('<label><span class="fas fa-exclamation-triangle"></span> Ha ocurrido un error, por favor cierra la ventana e inténtalo nuevamente.</label>','danger');
        }
      });
    }else{
      //Ocultar ovelay
      $('#overlay').css({'display':'none'});
      mostrarError('Registro repetido.');
    }
  }
}

function eliminarTelefono(idSolicitante,idParentesco){

  $.ajax({
    url: '/telefono/eliminar/'+idSolicitante+'/'+idParentesco,
    async:false,
    headers:{'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')},
    type: 'DELETE',
    success:function(data,status,xhr){
      //console.log(xhr.responseText );

      //Recargar tabla de teléfonos
      recargarTablaTelefonos();
      //exito();
    },
    error:function(xhr, status, error){
      //console.log(xhr.responseText );
      //alerta('<label><span class="fas fa-exclamation-triangle"></span> Ha ocurrido un error, por favor cierra la ventana e inténtalo nuevamente.</label>','danger');
    }
  });
}

$('#btnAgregarTelefono').click(function(){

    telefono = $('#telefono').val();
    idParentesco = $('#cmbParentesco').data('kendoComboBox').value();
    parentesco = $('#cmbParentesco').data('kendoComboBox').text();

    if(telefono != "" && parentesco != ""){
      //Mostrar cargando
      $('#overlay').css({'display':'block'});

      clearTimeout(timer); 
      timer = setTimeout(agregarTelefono, 100);
    }else{
      mostrarError('Debes llenar los campos marcados con asterisco (*).');
    }

  });

I hope you can help me, regards.

    
asked by R.C. Ana 13.06.2018 в 17:37
source

1 answer

5

The problem is here:

//Si no está, se inserta
    if(bandera!="true"){
       $.ajax({
        url: '/telefono/agregar',
        async:false,
        headers:{'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')},
        type: 'POST',
        data: {
          "idSolicitante":solicitante,
          "Telefono":telefono,
          "idParentesco":idParentesco
        },

The scope of the variables is out of context, so using a let or a var followed by a selector solves the problem of null variables.

//Si no está, se inserta
    if(bandera!="true"){

       let telefono = $('#telefono').val();
       let idParentesco = $('#cmbParentesco').data('kendoComboBox').value();
       let solicitante = // aqui te faltó agregar el HTML relacionado a la variable. 

       $.ajax({
        url: '/telefono/agregar',
        async:false,
        headers:{'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')},
        type: 'POST',
        data: {
          "idSolicitante":solicitante,
          "Telefono":telefono,
          "idParentesco":idParentesco
        },
    
answered by 13.06.2018 / 19:52
source