Código PHP:
<!-- Esto reemplaza a tu simple etiqueta <script> -->
<script type="text/javascript" language="javascript">
<!--
function comprueba_extension(formulario, archivo) {
//alerts para que vea lo que te muestra y lo analices
alert(formulario);
alert(archivo);
extensiones_permitidas = new Array(".gif", ".jpg", ".png", ".bmp");
mierror = "";
if (!archivo) {
//Si no tengo archivo, es que no se ha seleccionado un archivo en el formulario
mierror = "No has seleccionado ningún archivo";
}else{
//recupero la extensión de este nombre de archivo
extension = (archivo.substring(archivo.lastIndexOf("."))).toLowerCase();
//alert (extension);
//compruebo si la extensión está entre las permitidas
permitida = false;
for (var i = 0; i < extensiones_permitidas.length; i++) {
if (extensiones_permitidas[i] == extension) {
permitida = true;
break;
}
}
if (!permitida) {
mierror = "Comprueba la extensión de los archivos a subir. \nSólo se pueden subir archivos con extensiones: " + extensiones_permitidas.join();
}else{
//submito!
alert ("Todo correcto. Voy a submitir el formulario.");
//a esta linea le faltaba "document"
document.formulario.submit();
return 1;
}
}
//si estoy aqui es que no se ha podido submitir
alert (mierror);
return 0;
}
-->
</script>
<!--
"this.form.name" contiene el nombre del formulario
"this.form[0].value" contiene la ruta del archivo a subir
-->
<?php
//coloca la coneccion correcta a mysql aqui
$conexion = mysql_connect("sql201.byethost15.com", "user", "pass");
//selecciona la base de datos en la que quieres trabajar
//y si esa es la unica base de datos que tienes, no vuelvas a abrir coneccion con mysql
//ni a seleccionar otra vez la db
mysql_select_db("b15_5229524_graffiti", $conexion);
$queEmp = "SELECT * FROM fotos ORDER BY id DESC";
$resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());
$totEmp = mysql_num_rows($resEmp);
if ($totEmp> 0) {
while ($rowEmp = mysql_fetch_assoc($resEmp)) {
//while vacio...
}
}
//si esta coneccion es la misma que la de arriba, no hace falta incluirla
//y menos incluirla 3 o 4 veces
//include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db
//include('config');
$state = false;
if ($_POST['action'] == "add" && $_FILES['archivo']['name'] != "") {
//La subida de archivo dentro del condicional
$ruta = "./imagenes/" . $_FILES['archivo']['name'];
copy($_FILES['archivo']['tmp_name'], $ruta);
echo "La imagen subio correctamente";
//VERIFICA A QUI:
//aqui conectas, denuevo pero al parecer a otra base de datos
$conexion = mysql_connect("sql201.byethost15.com", "user", "pass");
//pero a una tabla del mismo nombre
mysql_select_db("b15_5229524_graffiti", $conexion);
//A $postear PUEDES DARLE UN VALOR MANUALMENTE PARA PROBAR Y QUE NO FALLE LA CONSULTA
$postear = $_SESSION[usuario];
//session_start() debe estar precedido de la @ a esta altura del script
@session_start();
$que = "INSERT INTO fotos (ruta, usuario, idusuario, categoria) ";
$que.= "VALUES ('".$ruta."', '".$_SESSION[usuario]."', '".$_SESSION[idusuario]."', '".$_POST['categoria']."')";
$res = mysql_query($que, $conexion) or die(mysql_error());
$state = true;
}
//SI INCLUDE() ES LA MISMA CONECCION A MYSQL QUE YA HICISTE NO ES NECESARIO
//include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db y la sesión
/*
if($_SESSION[level] == 1 or $_SESSION[level] == 3){
echo '';
}else{
Header("Location: index.php");
}
*/
?>
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db y la sesión
if($_SESSION[level] == 2)
{
echo '';
}else{
Header("Location: index.php");
}
?>
<form name="formulario" form id="insertar" enctype="multipart/form-data" method="POST" action="">
<p align="left" class="Estilo1">Añadir discos</p>
<p align="left"><br />
Imagen</p>
<p align="left">
<input type="file" name="archivo" id="archivo"/>
</p>
<p align="left">
<label>
<select name="categoria" id="categoria">
<option value="1">Bocetos</option>
<option value="2">Muros</option>
<option value="3">Trenes</option>
<option value="4">Otros</option>
</select>
</label>
</p>
<p align="left"><br />
<input type="submit" name="Submit" value="Subir imagen" onchange="comprueba_extension(this.form.name,this.form[0].value)">
<br />
<input type="hidden" name="action" value="add" />
<br />
</p>
</form>
<?php
if ($state) {
echo "<p /><em>Foto agregada</em></p>";
}
?>
Y asi si funciona:
Código PHP:
<form name="formulario" form id="insertar" enctype="multipart/form-data" method="POST" action="">
<p align="left" class="Estilo1">Añadir discos</p>
<p align="left"><br />
Imagen</p>
<p align="left">
<input type="file" name="archivo" id="archivo" onchange="comprueba_extension(this.form.name,this.form[0].value)">
</p>
<p align="left">
<label>
<select name="categoria" id="categoria">
<option value="1">Bocetos</option>
<option value="2">Muros</option>
<option value="3">Trenes</option>
<option value="4">Otros</option>
</select>
</label>
</p>
<p align="left"><br />
<input type="submit" name="Submit" value="Subir imagen" />
<br />
<input type="hidden" name="action" value="add" />
<br />
</p>
</form>
Simplemente cambio el
Código:
a el formulario archivo, pero no te deja elegir la opcion de categoria, cuando pones la foto luego luego se pone fomulario, y das aceptar, despues, imagen.jpg, y dice todo correcto voy a sumbitir el formulario.onchange="comprueba_extension(this.form.name,this.form[0].value)"
Pero yo quiero que aparesca eso hasta que le den en el boton enviar.