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