Foros del Web » Programando para Internet » PHP »

problema con insert into

Estas en el tema de problema con insert into en el foro de PHP en Foros del Web. Hola a ver si alguien puede ayudarme por favor: vereis, tengo un form donde se pide un nombre de carpeta que se crea dentro del ...
  #1 (permalink)  
Antiguo 06/12/2005, 05:15
Avatar de codigoflecha  
Fecha de Ingreso: noviembre-2004
Mensajes: 325
Antigüedad: 13 años, 1 mes
Puntos: 3
problema con insert into

Hola a ver si alguien puede ayudarme por favor:
vereis, tengo un form donde se pide un nombre de carpeta que se crea dentro del directorio imagenes, un titulo y una descripción. Me crea la carpeta pero no me mete los datos en la base de datos mysql.
A ver el code del insert:
Código:
<?
include ("includes/header.php");

$dir = "../imagenes/";
//
if (isset($accion)) {

	if ($accion == "insertar") {	
		if ($nombre!="" && $carpeta!="") {
			if (!file_exists($dir.$carpeta)) {			
				mkdir($dir.$carpeta, 0777);				
				$sql = 'INSERT INTO pg_categorias (nombre, carpeta, descripcion) VALUES (\''.$nombre.'\',\''.$carpeta.'\',\''.$descripcion.'\')'; 		
				$consulta = mysql_query($sql,$conexion);
				if ($consulta==1) { 
					echo "Categoría <strong>$nombre</strong> creada correctamente.";										
				} else {	
					echo "Ha habido un <span class=\"error\">error</span> en la actualización de campos. Prueba más tarde.";
} else { 
				echo "<span class=\"error\">Error :</span> La carpeta <strong>$carpeta</strong> ya está creada.";	
			}		
				}
Cuando intento desde el form introducir los datos me sale este echo de "ha habido un error en la actualización de datos..."

Compruebo y la carpeta me la ha creado, es más, si intento volver al formulario y crear la misma carpeta pues sale el mensaje de "la carpeta ya esta creada".
Alguna orientación por favor
  #2 (permalink)  
Antiguo 06/12/2005, 05:39
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
El que te cree la carpeta y no te haga la insersión de datos no es sorpresa, una cosa no tiene que ver con la otra....

El primer detalle que veo en tu código es que, aparenetemente, inténtas recojer los valores del formulario directamente; haz uso de la variable superglobal $_POST ó $_GET según corresponda.
Leete esta FAQ: http://www.forosdelweb.com/showpost....89&postcount=4
De la pág oficial: www.php.net/variables.external

Debería de quedarte algo así:
Código PHP:
if (isset($_GET['accion'])) { // lo recibes vía URI??
$nombre$_POST['nombre']; // vía formulario con method POST???
$sql"INSERT.... WHERE nombre='$nombre'"
Ok. Comentado eso, cabe la pregunta: ¿realizas bien la conexión a la BD?; en tu código no se ve que lo hagas... solo que la realizes en el archivo header.php.

Tienes que comprobar la conexión, la selección de la BD y la ejecución de la query se realizen correctamente. Te aconsejo hacer un "or die" después de cada función respectiva:
Código PHP:
mysql_connect("...etc...") or die (mysql_error());
mysql_select_db("tu_BD") or die (mysql_error());
$algomysql_query("INSERT...etc") or die (mysql_error()); 
Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 06/12/2005, 11:34
Avatar de codigoflecha  
Fecha de Ingreso: noviembre-2004
Mensajes: 325
Antigüedad: 13 años, 1 mes
Puntos: 3
antes que nada jam1138 muchas gracias por como siempre tus sabios consejos, verás lo de las variables globales no lo llevo muy bien, a ver si ahora que le estoy metiendo fuerte a esto del php consigo dominarlo medianamente.
He puesto algo asi, pero en algo me equivoco al declarar las variables porque no funciona:
Código PHP:
<?
include ("includes/header.php");

$dir "../imagenes/";
$nombre$_POST['nombre'];
$carpeta$_POST['carpeta'];
$descripcion$_POST['descripcion'];
//
if (isset($_POST['accion'])) {

Cita:
Tienes que comprobar la conexión, la selección de la BD y la ejecución de la query se realizen correctamente. Te aconsejo hacer un "or die" después de cada función respectiva
lo pongo pero no da ningún mensaje.



en fin si tienes un rato y me ayudas un poco te lo agradeceré muchísimo, y si necesitas alguna ayuda con algún diseño o algún proyecto de flash pues aqui estamos, se me resiste el php pero con esfuerzo y analizando ejemplos voy a terminar por aprender de una vez, lo he ido tocando poco a poco, pero ya me he decidido a tomarmelo en serio, para tener una base decente.
Por cierto con 4998 respuestas pues podias escribir un libro.

Última edición por codigoflecha; 06/12/2005 a las 23:26
  #4 (permalink)  
Antiguo 06/12/2005, 23:25
Avatar de codigoflecha  
Fecha de Ingreso: noviembre-2004
Mensajes: 325
Antigüedad: 13 años, 1 mes
Puntos: 3
ya está solucionado , ahora me funciona la aplicación perfectamente, verás jam1138 prepare un archivo php para comprobar la conexión con un mensaje de error y otro mensaje e conectado a la bd y la conexión la realizaba correctamente.
Luego pense en lo que me comentabas del or die que te comenté que no daba ningún mensaje, asi que configure el servidor para que me mostrara los mensajes de warning y viendo los errores eran todos de mysql_query y el error estaba en que en la conexion la nombraba:
$dbh = mysql_connect.........
y en los mysql_query les ponia erroneamente conexion:
$consulta = mysql_query($sql,$conexion);

asi que les puse el mismo valor y listo.
Un saludo
  #5 (permalink)  
Antiguo 06/12/2005, 23:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
claro!... aunque el parámetro conexión es opcional. Si solo manejas una sola conexión podría hasta estorbarte... que prácticamente fue lo que sucedió ahora .

Cita:
si necesitas alguna ayuda con algún diseño o algún proyecto de flash pues aqui estamos
Cuidado que te puedo tomar la palabra ...

Paz, amor y baile!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:48.