PHP - Insertar imagenes php

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Meneth (13 intervenciones) el 21/11/2020 13:43:36
Hola.
Estoy haciendo una web y tengo un poco de lío con php
Debo hacer una web que mediante un formulario un usuario pueda insertar imágenes a un directorio llamado "imagenes" haciendo uso de una base de datos.
Se supone que en el formulario el usuario debe insertar la ruta de la imagen en una cadena de texto y esta ruta se almacena en la base de datos
No sé muy bien como relacionar la base de datos con el directorio "imágenes"
Luego necesito que la web muestre las imágenes subidas aleatoriamente que están dentro de dicho directorio
Tengo un poco de lío y no sé muy bien como hacerlo...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Mauro (1034 intervenciones) el 23/11/2020 14:26:26
Hola:

Me parece que estás mezclando algunas cosas. Para comenzar, ¿el usuario debe ingresar la ruta de la imagen? En ese caso, el usuario debería conocer la estructura de los directorios del disco de tu servidor... no suena muy posible/deseable eso... seguramente sería mejor que el usuario pueda seleccionar la imagen de su propio disco y enviarla al servidor y que la guardes donde te parezca bien (el directorio "imagenes" por ejemplo).

Respecto de la base de datos, por lo que describes no veo la necesidad de usarla... si siempre vas a buscar al azar sobre el contenido del directorio imágenes... ¿para qué quieres la base de datos?

Para encontrar los archivos que están en un directorio puedes usar la función dir
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Meneth (13 intervenciones) el 23/11/2020 18:52:26
Gracias por responder
Me he explicado bastante mal
Lo que necesito hacer es exactamente eso, si, que el usuario pueda seleccionar desde su ordenador una imagen y subirla al servidor
Voy a explicarme mejor
Estoy haciendo una web que es como una simulación de una inmobiliaria, entonces necesito una BD para implementar más cosas luego
Tengo un apartado para los clientes, otro para los inmuebles,etc
Necesito hacer que el usuario pueda subir un inmueble mediante un formulario poner el nombre y una foto
Si no voy por mal camino, lo que debo hacer es guardar la ruta del directorio imágenes en el campo imagen de la BD y luego mediante un script de PHP permitir al usuario insertar un inmueble nuevo
Siento explicarme tan mal, tengo un lío con PHP.
Lo de las imágenes aleatorias era para mostrar las fotos de los inmuebles en el Index como si fuera una especie de escaparate, de forma que al entrar en la web lo primero que se ve es el menú y las fotos de los inmuebles,pero eso ya lo he resuelto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Mauro (1034 intervenciones) el 24/11/2020 13:21:46
Perfecto, ahora me queda mucho más claro, gracias :)

Lo que comentas sobre la ruta de la imagen es bastante así.

Lo que te conviene hacer es tomar el archivo enviado por el usuario y guardarlo dentro de tu directorio imagenes (Para esto debes usar el arreglo $_FILES y la función move_uploaded_file).

Una vez tengas la ruta en tu servidor, eso es lo que deberás guardar en tu base de datos.

Mi sugerencia es que no guardes la ruta completa si no sólo la última parte.

Esto es por dos razones:

1. Ocuparás menos espacio en la DB
2. Si en algún momento requieres cambiar el directorio raíz (Porque te mudas de hosting por ejemplo), no tendrás que modificar todos los registros de las imágenes.

Cuando necesites mostrar la imagen puedes usar un código similar a:

1
<img src="imagenes/<?php echo $inmueble['imagen']; ?>"/>

Lo importante aquí será que el directorio imagenes deberá ser accesible a través del servidor web.

Y respecto de la incorporación de nuevos inmuebles puedes hacerlo todo en un solo formulario o dividirlo en pasos... eso depende de cómo quieras armar la interface.

A mi me parece que vas bastante bien... ¿en qué tienes tanto lío con PHP?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Meneth (13 intervenciones) el 24/11/2020 20:50:06
Gracias por la ayuda
No sabía exactamente cómo era, pero intuía que era algo así, guardar la ruta relativa en la BD
Ahora mismo estoy trabajando en localhost porque es no es una web de verdad, es un trabajo de clase
Lo del lío con PHP en realidad es porque estoy trabajando con varias cosas a la vez, (PHP, JavaScript, CSS, HTML5 y MySQL) y llega un momento en que ya me lío completamente
Sobre todo me lío mucho con el tema de los arrays y las matrices, pero eso me pasa con todos los lenguajes
Hay un apartado de mi web que es como una especie de sección de noticias, en la que debo hacer que se muestren las tres últimas noticias con una imagen correspondiente a cada una.
Lo que he hecho (no sé si está bien hecho pero funciona) es hacer un array asociativo que en su primer valor guarda las imágenes correspondientes a la noticia (que están en un directorio concreto) y en el segundo valor guardo la noticia (situadas en otro directorio llamado "noticias") de forma que la imagen[0] se corresponde con la noticia[0] y así sucesivamente. Luego con un bucle while leo los archivos en ambos directorios, compruebo sus extensiones y los voy sumando al array y luego muestro el array asociativo por pantalla
En cuanto pueda dejo el script por aquí para poder explicarme mejor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Mauro (1034 intervenciones) el 25/11/2020 15:18:10
Lo del lío con PHP en realidad es porque estoy trabajando con varias cosas a la vez, (PHP, JavaScript, CSS, HTML5 y MySQL) y llega un momento en que ya me lío completamente

Si... entiendo. Es un tema el de tener tantas cosas en la cabeza a la vez... como que hay que jugar un juego de múltiples dimensiones :)

No te preocupes... con el tiempo lo harás naturalmente.

Sobre todo me lío mucho con el tema de los arrays y las matrices, pero eso me pasa con todos los lenguajes
¿Qué dificultades tienes con esto?

Lo que he hecho (no sé si está bien hecho pero funciona) es hacer un array asociativo que en su primer valor guarda las imágenes correspondientes a la noticia (que están en un directorio concreto) y en el segundo valor guardo la noticia (situadas en otro directorio llamado "noticias") de forma que la imagen[0] se corresponde con la noticia[0] y así sucesivamente. Luego con un bucle while leo los archivos en ambos directorios, compruebo sus extensiones y los voy sumando al array y luego muestro el array asociativo por pantalla

Algo que podría resultarte más cómodo es usar los arrays como si fuera registros.

De esta forma te quedaría algo como:

1
2
3
4
5
$noticias = [
  ['imagen' => '/imagenes/1.jpg', 'texto' => 'noticia 1',],
  ['imagen' => '/imagenes/2.jpg', 'texto' => 'noticia 2',],
  ['imagen' => '/imagenes/3.jpg', 'texto' => 'noticia 3',],
];

De este modo, para acceder a los datos de una noticia específica puedes usar

1
$noticias[0]['imagen'];

O también, si lo sabes, podrías usar objetos para modelar las noticias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Meneth (13 intervenciones) el 25/11/2020 18:04:04
Este es el script que hice

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function ultimas_noticias(){
	//Abrir el directorio de las noticias y el directorio donde están situadas las imágenes que corresponden a cada noticia
	$directorio=opendir("noticias");
	$imgs=opendir("imagenes/noticias");
 
	$ultimas_noticias=array(["$imgs"=>"$directorio"]); //Array asociativo
 
	while($noticia_dir=readdir($directorio) && $noticia_img=readdir($imgs)){ //Leer los ficheros de cada directorio
		$extension1 = substr($noticia_dir,-4); //Comprobar las extensiones de las noticias
		$extension2 = substr($noticia_img,-4); //Comprobar las extensiones de las imágenes
		if($extension1==".html" || $extension1==".htm" || $extension2==".jpg"){
			$ultimas_noticias['imgs']=$noticia_img; //imagen añadida al array
			$ultimas_noticias['directorio']=$noticia_dir; //noticia añadidia al array
			if(count($ultimas_noticias)-1>=3){ //Muestra las tres últimas noticias añadidas
				echo "<div id='noticias_portada'>
						<img src='imagenes/noticias/$ultimas_noticias[imgs]'></img>
						<a href='noticias/$ultimas_noticias[directorio]'id='noticia'>Noticia</a>
					</div>";
			}
			$ultimas_noticias[]++; //continúa el bucle hasta que ya no queden más archivos
		}
	}
}


Creo que dices que sería mejor hacer esto
1
$ultimas_noticias['imgs'=>$noticia_img,'directorio'=>$noticia_dir];
En lugar de esto
1
2
$ultimas_noticias['imgs']=$noticia_img;
$ultimas_noticias['directorio']=$noticia_dir;

Lo del tema de arrays y matrices es lo que peor llevo con diferencia, cuanto más vueltas le doy más me explota la cabeza...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Mauro (1034 intervenciones) el 25/11/2020 21:17:44
Se me dificulta un poco leer el código así... ¿podrías escribirlo usando la herramienta de marcado de código del foro?

Por lo que veo te diría que tengas cuidado con este if:

1
if($extension1==".html" || $extension1==".htm" || $extension2==".jpg")

Al usar un || (OR) basta con que cualquier condición se cumpla para que el intérprete considere verdadera la condición entera y en este caso que estás evaluando dos variables diferentes ($extension1 y $extension2) se me hace que puedes tener problemas.

Aquí hay otra cosa que me llama la atención:

1
$ultimas_noticias=array(["$imgs"=>"$directorio"]); //Array asociativo

Si usas "$imgs" en lugar de "imgs" estás diciéndole al intérprete que evalúe la variable $imgs y, con ese resultado establezca la clave del array, en este caso sería el resultado de opendir("imagenes/noticias")... dudo que eso funcione bien.

Por otra parte, estás creando un arreglo de arreglos al utilizar por un lado la función array() y, dentro de ella la nueva sintaxis de arreglos. Esto no necesariamente está mal, sólo que tienes que tener claro si es realmente lo que quieres hacer (Y en tal caso, te recomiendo usar siempre la misma sintaxis más que mezclar).


Creo que dices que sería mejor hacer esto
$ultimas_noticias['imgs'=>$noticia_img,'directorio'=>$noticia_dir];
En lugar de esto
$ultimas_noticias['imgs']=$noticia_img;
$ultimas_noticias['directorio']=$noticia_dir;

No exactamente.

Esta expresión:

1
$ultimas_noticias['imgs'=>$noticia_img,'directorio'=>$noticia_dir];

No realizará ningún tipo de asignación (Es decir, no creará un arreglo), en todo caso, la expresión correcta sería:

1
$ultimas_noticias = ['imgs'=>$noticia_img,'directorio'=>$noticia_dir];

O su equivalente:

1
2
3
$ultimas_noticias = [];
$ultimas_noticias['imgs']=$noticia_img;
$ultimas_noticias['directorio']=$noticia_dir;

Pero en cualquiera de los casos, $ultimas_noticias contendría una única noticia en lugar de un arreglo de noticias.

Creo que la forma más fácil de pensar en esto es siempre tomarlos como arreglos de una dimensión, en tu caso, un arreglo de noticias y simplemente sucede que cada elemento de ese arreglo es, a su vez, un arreglo cuyas claves coinciden con los campos de la noticia (imgs y directorio en este caso).

Si te queda alguna duda consulta nomás :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Meneth (13 intervenciones) el 26/11/2020 10:58:42
Me temo que me he perdido completamente
He cambiado el script a esto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function ultimas_noticias(){
	//Abrir el directorio de las noticias y el directorio donde están situadas las imágenes que corresponden a cada noticia
	$directorio=opendir("noticias");
	$imgs=opendir("imagenes/noticias");
 
	$ultimas_noticias=array("imgs"=>"directorio"); //Array asociativo
 
	while($noticia_dir=readdir($directorio) && $noticia_img=readdir($imgs)){ //Leer los ficheros de cada directorio
		$extension1 = substr($noticia_dir,-4); //Comprobar las extensiones de las noticias
		$extension2 = substr($noticia_img,-4); //Comprobar las extensiones de las imágenes
		if($extension1==".html" || $extension1==".htm" && $extension2 ==".jpg"){
			$ultimas_noticias=array($noticia_img=>$noticia_dir);
			if(count($ultimas_noticias)-1>=3){ //Muestra las tres últimas noticias añadidas
				echo "<div id='noticias_portada'>
						<img src='$ultimas_noticias[imgs]' id='noticiaimg'></img>
						<a href='$ultimas_noticias[directorio]'id='noticia'>Noticia</a>
					</div>";
 
			}
			$ultimas_noticias[]++; //continúa el bucle hasta que ya no queden más archivos
		}
	}
}

Se supone que he creado un array asociativo donde cada imagen debería corresponder a la noticia, pero creo que he creado un array vacío, aunque la funcion count() no me detecta nada
Realmente no sé lo que estoy haciendo, ahora no muestra la sección de noticias
¿Como puedo saber lo que está haciendo exactamente esa funcion?

Tampoco me funciona esto si lo pongo en el código

1
$ultimas_noticias=['imgs'=>$noticia_img,'directorio'=>$noticia_dir];

¿El problema puede estar en el bucle while? He intentado un for y un for each y estoy en las mismas...

No me da ningún error en el navegador, simplemente no muestra lo que debería hacer esa función
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Meneth (13 intervenciones) el 26/11/2020 11:53:09
Estoy intentando hacerlo de otra forma
He hecho esto

He metido las noticias en la bd y estoy intentando conectar a la bd y que las muestre desde ahí

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require_once("funciones_conexion.php");
function ultimas_noticias(){
 
	$conexion=ConexionBD();
	$consulta="SELECT * FROM noticias";
 
	$datos=$conexion->query($consulta);
 
	if($datos -> num_rows>0) {
		while ($noticias = $datos->fetch_array(MYSQLI_ASSOC)) {
			echo "$noticias[imagen]";
			echo "$noticias[titular]";
		}
 
	}
}

el codigo de la conexión
1
2
3
4
5
6
7
8
<?php
function ConexionBD(){
	$conexion= new mysqli("localhost","root","","inmobiliaria");
	$conexion->set_charset("UTF8");
	return $conexion;
}
 
?>

Ahora el problema que tengo es que muestra la cadena de texto tal de los directorios donde están siatuados las imágenes y las noticias tal y como está en la base de datos, y necesito que me muestre la imagen y el título, no la ruta de los directorios
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Mauro (1034 intervenciones) el 26/11/2020 13:07:33
Para empezar veo que tu función ultimas_noticias() no retorna nada.

En general te conviene separar la lógica de manejo de datos de aquellas instrucciones propias de la presentación (La generación del HTML en este caso).

Es decir, intenta hacer una versión de la función que haga lo que tiene que hacer y devuelva simplemente un arreglo con las últimas noticias.

Luego podrías hacer otra función que genere el HTML en base a un arreglo de noticias.

Al separarlo de esta forma será más fácil detectar y corregir eventuales errores.

1
$ultimas_noticias=array("imgs"=>"directorio");

Esta línea se ve algo raro... con esto lo que estás haciendo es crear un arreglo de un único elemento, cuya clave es "imgs" y su valor es "directorio"... Creo que te convendría darle una repasada a cómo funcionan los arreglos en PHP antes de continuar.

En este if:

1
if($extension1==".html" || $extension1==".htm" && $extension2 ==".jpg")

Te recomiendo que uses paréntesis para expresar exactamente lo que quieres.

No es lo mismo

1
if( ($extension1==".html" || $extension1==".htm") && $extension2 ==".jpg")

Que

1
if( $extension1==".html" || ($extension1==".htm" && $extension2 ==".jpg") )

Esta línea no te da error:

1
$ultimas_noticias[]++;

¿Como puedo saber lo que está haciendo exactamente esa funcion?

Para esto lo mejor que puedes hacer es instalar y usar un debugger (Por ejemplo xdebug). ¿Usas algún IDE?

¿Qué problema te da este código?

1
$ultimas_noticias=['imgs'=>$noticia_img,'directorio'=>$noticia_dir];
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Meneth (13 intervenciones) el 26/11/2020 17:45:42
Ante todo, muchas gracias por la ayuda
No, no uso ningún IDE, solo un editor de texto.
Efectivamente, he comprobado que lo que me estaba haciendo era un array de un único elemento, mostraba varias imágenes pero asociadas a la misma noticia.
He resuelto el problema con el último script que he hecho, el de conectar a la BD, aún que tengo un último problemilla, no tiene demasiada importancia, pero el ejercicio me pide mostrar las tres últimas noticias añadidas, y eso ya sí que no sé cómo hacerlo.
He intentado usar la función count() pero me da varios fallos
Aún así, voy a probar la solución que me has proporcionado, la de usar el manejo y el HTML por separado, y en cuanto pueda lo posteo por aquí, junto a los códigos que he usado
Muchas gracias, de verdad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Mauro (1034 intervenciones) el 26/11/2020 18:15:09
No, no uso ningún IDE, solo un editor de texto.

Pues te recomiendo que, si piensas desarrollar profesionalmente, adoptes uno :)

He resuelto el problema con el último script que he hecho, el de conectar a la BD, aún que tengo un último problemilla, no tiene demasiada importancia, pero el ejercicio me pide mostrar las tres últimas noticias añadidas, y eso ya sí que no sé cómo hacerlo.

Perfecto, inténtalo y si tienes alguna duda vuelves a preguntar. Una recomendación extra: trata de no abrir la conexión para cada consulta si no reutilizarla a lo largo de tu script.

He intentado usar la función count() pero me da varios fallos

¿Como cuáles?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Meneth (13 intervenciones) el 27/11/2020 11:57:24
Hola de nuevo
Estoy intentando hacer el script de subir imágenes mediante el formulario usando las funciones $_FILES y move_uploaded_file() y me salen los siguientes errrores

Notice: Undefined index: imagen in D:\xampp\htdocs\inmobiliaria\subir_imagen.php on line 21

Notice: Trying to access array offset on value of type null in D:\xampp\htdocs\inmobiliaria\subir_imagen.php on line 21

¿Que significan?

Dejo el código por aquí

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
 
		<form method="POST" action="#" id="nueva_noticia">
 
		Imagen de la noticia <input type="file" name="imagen" value="imagen"><br>
 
		<input type="submit" name="enviar" value="Enviar">
	</form>
 
 
	<?php
 
 
if (isset($_POST['enviar'])) {
 
   $archivo = $_FILES['imagen']['name'];
 
   if (isset($archivo) && $archivo != "") {
 
        $temp="imagenes/";
 
        if (move_uploaded_file($temp, 'imagenes/'.$archivo)) {
 
            echo '<div><b>Se ha subido correctamente la imagen.</b></div>';
 
            echo '<p><img src="imagenes/'.$archivo.'"></p>';
        }
        else {
 
           echo '<div><b>Ocurrió algún error al subir el fichero. No pudo guardarse.</b></div>';
        }
 
 
}
?>
 
 
 
 
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Mauro (1034 intervenciones) el 27/11/2020 14:55:19
Estoy intentando hacer el script de subir imágenes mediante el formulario usando las funciones $_FILES y move_uploaded_file() y me salen los siguientes errrores

Notice: Undefined index: imagen in D:\xampp\htdocs\inmobiliaria\subir_imagen.php on line 21

Notice: Trying to access array offset on value of type null in D:\xampp\htdocs\inmobiliaria\subir_imagen.php on line 21

¿Que significan?

La línea 21 de subir_imagen.php dice:

1
$archivo = $_FILES['imagen']['name'];

Undefined index significa índice no definido. En este caso lo que significa es que la clave "imagen" no está definida dentro del arreglo $_FILES (Arreglo, no función).

Esto puede deberse a que el enctype del formulario no está definido (Algo necesario para realizar las subidas de archivos).

La forma correcta de definir el form sería:

1
<form method="POST" action="#" id="nueva_noticia" enctype="multipart/form-data">

Trying to access array offset on value of type null

Significa que estás intentando acceder a un índice sobre un valor que no es un arreglo, si no un null.

En este caso lo que ocurre es que, como $_FILES['imagen'] no está definido, el intérprete lo toma como null, de modo que lo que estarías habciendo con $_FILES['imagen']['name'] es equivalente a null['name'] y null no es un arreglo.

Espero haberme explicado correctamente, consúltame si te quedó alguna duda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Meneth (13 intervenciones) el 27/11/2020 15:11:37
Lo acabo de arreglar
Era esta tontería
1
$ruta=$_SERVER['DOCUMENT_ROOT']."/inmobiliaria/imagenes/noticias";

Tengo la siguiente estructura de carpetas
Inmobiliaria
imagenes
noticias

Y no sabía que teniar que poner la ruta desde la carpeta raíz

Gracias por la ayuda

Pero una pregunta, ¿A que te refieres exactamente con que $_FILES['imagen'] no está definido?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Insertar imagenes php

Publicado por Meneth (13 intervenciones) el 27/11/2020 15:34:22
Arreglado también que me detecte la ruta relativa en lugar de la ruta absoluta
he cambiado esto
1
2
3
$ruta="/imagenes/noticias/";
 
$ruta=$ruta.basename($nombre_imagen);

De momento parece que funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar