ERRORSQLSTATE [23000]: Integrity constraint violation: 1048 Column 'url' can not be null

0

When executing the query, I get the following error:

  

Notice: Undefined index: text in C: \ xampp \ htdocs \ Dreasity \ views \ new-publication.php on line 14   ERRORSQLSTATE [23000]: Integrity constraint violation: 1048 Column   'url' can not be null

It should be noted that the code written in nueva-publicacion.php is as follows:

    <?php
    include_once 'app/redireccion.inc.php';
    include_once 'app/controlsesion.inc.php';
    include_once 'app/config.inc.php';
    include_once 'app/conexion.inc.php';
    include_once 'app/publicaciones.inc.php';
    include_once 'app/repositoriopublicaciones.inc.php';
    include_once 'app/validadorpublicaciones.inc.php';

    $publicacion_publica = 0;

    if(isset($_POST['guardar'])){
Conexion::abrir_conexion();
/// ESTA ES LA LINEA 14 DEL ERROR /// $validador = new ValidadorPublicacion($_POST['titulo'], $_POST['url'], htmlspecialchars($_POST['texto']), Conexion::obtener_conexion());

if(isset($_POST['publicar']) && $_POST['publicar'] == 'si'){
    $publicacion_publica = 1;
}

if($validador-> publicacion_valida()){
    if(ControlSesion::sesion_iniciada()){
        $publicacion = new Publicacion('', $_SESSION['id_usuario'], $validador-> obtener_url(), $validador-> obtener_titulo(), $validador-> obtener_texto(), '', $publicacion_publica );
        $publicacion_insertada = RepositorioPublicacion::insertar_publicacion(Conexion::obtener_conexion(), $publicacion);

        if($publicacion_insertada){
            Redireccion::redirigir(RUTA_GESTOR_PUBLICACIONES);
        }
    }
    Conexion::cerrar_conexion();
}
    }

    $titulo = 'Nueva publicacion';

    include_once 'plantillas/documento-declaracion.inc.php';
    include_once 'plantillas/navbar.inc.php';
    ?>

    <?php
    if(ControlSesion :: sesion_iniciada()){
    ?>

    <div class="container">
<div class="jumbotron">
    <h2 class="text-center"> Nueva Publicacion </h2>
</div>
    </div>

    <div class="container">
<div class="row">
    <div class="col-md-12">
        <form id="form-nueva-publicacion" method="post" action="<?php echo RUTA_NUEVA_PUBLICACION; ?>">
            <?php
            if(isset($_POST['guardar'])){
                include_once 'plantillas/form-nueva-publicacion-validado.inc.php';
            }else{
                include_once 'plantillas/form-nueva-publicacion-vacio.inc.php';
            }
            ?>
        </form>
        <br>
        <br>
        <br>
    </div>
  </div>
</div>

    <?php
    }else{
    ?>
    Redireccion :: redirigir(SERVIDOR); 
    <?php
    }
    ?>

    <?php
    include_once 'plantillas/panel-control-cierre.inc.php';
    include_once 'plantillas/documento-cierre.inc.php';
    ?>

in other files as the validator of publications I have the following code:

<?php 
include_once 'repositoriopublicaciones.inc.php';

class ValidadorPublicacion{
    private $aviso_inicio;
    private $aviso_cierre;

    private $titulo;
    private $url;
    private $texto;

    private $error_titulo;
    private $error_url;
    private $error_texto;

        public function _construct($titulo, $url, $texto, $conexion){
        $this-> aviso_inicio = "<br><div class='alert alert-danger' role='alert'>";
        $this-> aviso_cierre = "</div>";

        $this-> titulo = "";
        $this-> url = "";
        $this-> texto = "";

        $this-> error_titulo =  $this-> validar_titulo($conexion, $titulo);
        $this-> error_url =  $this-> validar_url($conexion, $url);
        $this-> error_texto =  $this-> validar_texto($conexion, $texto);
    }

    private function variable_iniciada($variable) {
        if(isset($variable) && !empty($variable)){
            return true;
        }else{
            return false;
        }
    }

    private function validar_titulo($conexion, $titulo){
        if(!$this-> variable_iniciada($titulo)){
            return "Debes escribir un titulo";
        }else{
            $this-> titulo = $titulo;
        }

        if(strlen($titulo) > 255){
            return "El titulo no puede ocupar mas de 255 caracteres";
        }

        if(RepositorioPublicacion::titulo_existe($conexion, $titulo)){
            return "Ya hay una publicacion con este titulo, por favor, escribe otro titulo diferente";
        }
    }

    private function validar_url($conexion, $url){
        if(!$this-> variable_iniciada($url)){
            return "Debes escribir una url";
        }else{
            $this-> url = $url;
        }

        if(strlen($url) != strlen(trim($url))){
            return "La URL no puede contener espacio vacios";
        }

        if(RepositorioPublicacion::url_existe($conexion, $url)){
            return "Ya hay una publicacion con esta URL, por favor, escribe otra URL diferente";
        } 
    }

    private function validar_texto($conexion, $texto){
        if(!$this-> variable_iniciada($texto)){
            return "El contenido no puede estar vacio";
        }else{
            $this-> texto = $texto;
        }
     }

     public function obtener_titulo() {
         return $this-> titulo;
     }

     public function obtener_url() {
         return $this-> url;
     }

     public function obtener_texto() {
         return $this-> texto;
     }

     public function mostrar_titulo(){
         if($this-> titulo != ""){
             echo 'value = "'. $this-> titulo . '"';
         }
     }

     public function mostrar_url(){
         if($this-> url != ""){
             echo 'value = " '. $this-> url . '"';
         }
     }

     public function mostrar_texto(){
         if($this-> texto != "" && strlen(trim($this->texto)) > 0) {
             echo $this-> texto;
         }
     }

     public function mostrar_error_titulo(){
         if($this-> error_titulo != "") {
             echo $this-> aviso_inicio . $this-> error_titulo . $this-> aviso_cierre;
         }
     }

     public function mostrar_error_url(){
         if($this-> error_url != "") {
             echo $this-> aviso_inicio . $this-> error_url . $this-> aviso_cierre;
         }
     }

     public function mostrar_error_texto(){
         if($this-> error_texto != "") {
             echo $this-> aviso_inicio . $this-> error_texto . $this-> aviso_cierre;
         }
     }

     public function publicacion_valida(){
         if($this-> error_titulo == "" && $this-> error_url == "" && $this-> error_texto == ""){
             return true;
         }else{
             return false;
         }
     }
}

If someone could tell me what error there is, I would appreciate it very much

    
asked by marianorz 14.07.2018 в 08:46
source

1 answer

1

You are failing due to a constraint that you have defined in the database by which the url field can not be inserted empty.

  

ERRORSQLSTATE [23000]: Integrity constraint violation: 1048 Column 'url' can not be null

I think you never give it any value, do a quick test in the constructor:       $this-> url = "test";

Surely it happens to another error and you will have verified that it was the problem.

You should make sure of the behavior of your code, and if it makes sense to save the empty url field you should remove the constraint from the database.

    
answered by 14.07.2018 в 12:23