Duda tonta pero importante

Bueno, ahora que tengo tiempo ya que he terminado la tienda, me he puesto manos a la obra y ta tengo todo practicamente listo (modificar), aunque me he topado con un error algo absurdo pero que no me deja continuar.

El codigo es muy largo, asi que solo voy a poner lo esencial:

<?php
var_dump($_POST);  
$ema = $_SESSION['em'];
if ($ema <> ""){
$numVariables = 21;
$v = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$v[$i] = $_POST['v' . $i];
echo "v" .$i ."='" .$v[$i] ."'";
}
//RECOGEMOS LAS VARIABLES
if ($v[1] == ""  and $v[2] == "" and $v[3] == "" and $v[4] == "" and $v[5] == "" and $v[6] == "" and $v[7] == "" and $v[8] == "" and $v[9] == "" and $v[10] == "" and $v[11] == "" and $v[12] == "" and $v[13] == "" and $v[14] == "" and $v[15] == "" and $v[16] == "" and $v[17] == "" and $v[18] == "" and $v[19] == "" and $v[20] == ""){
//NO MODIFICAR DATOS
$accion = "listar";
//COMPROBAMOS QUE VAMOS A MODIFICAR (UPDATE) O A MOSTRAR ALGUNOS)
$id = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$id[$i] = $_POST['idmascota' . $i];
}
if ($id[1] == ""  and $id[2] == "" and $id[3] == "" and $id[4] == "" and $id[5] == "" and $id[6] == "" and $id[7] == "" and $id[8] == "" and $id[9] == "" and $id[10] == "" and $id[11] == "" and $id[12] == "" and $id[13] == "" and $id[14] == "" and $id[15] == "" and $id[16] == "" and $id[17] == "" and $id[18] == "" and $id[19] == "" and $id[20] == ""){
$accion = "listar";    
}
else
{
$accion = "modificar";
}
}
else
{
//ALGUNA NO VA VACIO Y X ESO QUEREMOS LISTAR ALGUNOS EN CONCRETP MOSTRARX    
echo "PASO2";
$accion = "mostrarx";
}
echo "accion=" .$accion;




if ($accion == "mostrarx"){
$nombre = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$nombre[$i] = $_POST['nombre' . $i];
}
$paises = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$paises[$i] = $_POST['paises' . $i];
//ESTA LINEA SIGUIENTE ESTA MAL Y NO SE PORQUE
//$paises[$i] = substr($paises[$i]20, 0, 1);
}
$tamano = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$tamano[$i] = $_POST['tamaño' . $i];
}
$estado = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$estado[$i] = $_POST['estado' . $i];
}
$es = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$es[$i] = $_POST['esterilizado' . $i];
}
$ed = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$ed[$i] = $_POST['edad' . $i];
}
$foto = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$foto[$i] = $_POST['foto' . $i];
}
$acogido = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$acogido[$i] = $_POST['acogido' . $i];
}
$ap = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$ap[$i] = $_POST['apadrinado' . $i];
}
$peso = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$peso[$i] = $_POST['peso' . $i];
}
$altura = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$altura[$i] = $_POST['altura' . $i];
}
$disp = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$disp[$i] = $_POST['disponible' . $i];
}
$hist = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$hist[$i] = $_POST['historia' . $i];
}
$vacunas = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$vacunas[$i] = $_POST['vacunas' . $i];
}
$enfermedades = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$apenfermedades[$i] = $_POST['enfermedades' . $i];
}
$estados = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$estados[$i] = $_POST['estados' . $i];
}
$sexo = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$sexo[$i] = $_POST['sexo' . $i];
}
$youtube = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$youtube[$i] = $_POST['youtube' . $i];
}
$comunidad = array(); //almacenaremos las IDS en un array, como es logico, para poder manejar el conjunto facilmente
for($i = 1; $i < $numVariables; $i++){
$comunidad[$i] = $_POST['comunidad' . $i];
}
}
  //AQUI TENGO QUE AÑADIR ALGO PARA SABER SI EL USUARIO ES PARTICULAR / PROTECTORA O ASOCIACION
  
 
    
    
    //HACEMOS LOS UPDATES CON LOS VALORES QUE CORRESPONDAN (SUPONGO QUE ESTARA BIEN))
    if ($accion == "modificar"){
        
        HACEMOS UNAS COSAS

}
}
  
if ($accion == "listar"){
    
    
    HACEMOS UNAS COSAS

<?php
$contador = $contador + 1;
$idmascota = $aa['mascota_id'];
?>
<input type="checkbox" name="
<?php
echo "v" .$contador;
?>" value="<?php
echo $idmascota;
?>"> 
<?php
echo " " .$idmascota;
?>

}
if ($accion == "mostrarx"){
    
    
    HACEMOS OTRAS COSAS
}
mysql_close($conexion);
REALIAZMOS UNA CONEXION A LA BASE DE DATOS DE JOOMLA PARA QUE TODO FUNCION (EL PORQUE NO LO ENTIENDO PERO SI NO SE HACE NO FUNCIONA)
?>


Explico asi por encima como funciona:

Apartado 1: Listar
Si es la priemra vez que entras, te LISTA de 20 en 20 todos los animales que te correspondan.

Apartado 2: Mostrarx
Si en el listar, se ha seleccionado 1 o varios checkbox, se envian por POST las variables y se muestran a modo COMPLETO los animales seleccionados (MAXIMO 20 YA QUE NO SE PUEDEN LISTAR + DE 20 | LIMITACION MIA)

Apartado 3: Modificar
Si has estado en el apartado 2 y le das a un boton Modificar, se envian muchas variables por POST y se realiza el UPDATE correspondiente.

DUDA: No se porque pero no me recoge bien las varibales (y eso que se que llegar llegan, ya que el var_dump me lo indica), pero si selecciono un checkbox y le doy al boton de modificar, me deberia poner accion = mostrarx pero no lo hace porque como digo las variables NO las recoge.

¿¡Estoy haciendo algo mal? ¿El que?

Muchas gracias.

Un saludo
Pues sere sincero , yo no habia utilizado var_dump y hasta ahora aprendo que es para recoger variables etc.
pero tengo una duda antes de continuar con tu codigo en esta parte que se supone que haria

$_POST['esterilizado' . $i];

de hecho aparece casi en todo, mmm el html esta algo asi

<input etc name="esterilizado1"> esta asi???

o puedes poner tu html para revisar mas a fondo.
Es facil programar "Solo interesate en aprender"
Si, lo hacia como tu dices, asignando esterilizado1, esterilizado2, etc.

Al final lo hacia mal porque dejaba un espacio antes de la variable que queria sacar.

Al final lo he solucionado asi:

extract($_POST); 

Con esto, te asigna automaticamente todo lo que se hubiera pasado por $POST al nombre que llevaba.

Ahora la duda la tengo en otra cosa; y es que al hacer esa linea, resulta que hay varios inputs que tienen como nombre: tamaño1, tamaño2, etc y si intento colocar: $tamaño1 no me inserta el codigo (esto me intriga).

Tambien me gustaria asegurarme de que esto lo hace bien:

$bytes = $_FILES['foto' .$id[$i]]['size'];
if ($byt > 350000){
    echo "La foto correspondiente al animal: " .$id[$i] ." no se ha subido ya que es demasiado grande (Max: 350K)";
}
else{
$org=$_FILES['foto' .$id[$i]]['tmp_name'];
$des= "/imagenesanimales/" .$id[$i] .".jpg";
move_uploaded_file($org, $des);
}

Tambien me gustaria saber si hay alguna forma de colocar en un input para seleccionar un archivo del PC del usuario y asi guardarlo en mi servidor, que SOLO se pueda seleccionar archivos de tipo .jpg

Ya se que es un poco lioso lo que pregunto pero bueno.

Un saludo.

La verdad es que estas son las pequeñas dudas que me faltan para terminar: modificar.php e introducir.php es muy facil de hacer; cuando lo termine te lo enseñare, veras que la "Zona Personal" ha quedado bastante bien.
Pues en cuanto a lo primero no entendi bien que es lo qu querias hacer pero en cuanto a lo segundo lo que quieres es que las cosas que suban solo sean imagenes de extension *.jpg? si es asi solo tienes que hacer esto

con un simple explode

$extension = explode(".",$_FILES['nombre_del_campo_img']['name']);
	if($extension[1] != "jpg")
	{
	  echo "Lo sentimos solo puedes subir archivos con la extension *.JPG vuelve a intentarlo";
	  }
	 else {
	Tu codigo de subida de imagenes
	}
Y listo dime si funciona
Es facil programar "Solo interesate en aprender"
Muchas gracias, lo probare y supongo que funcionara; lo que pasa es que me gustaria que solo se pudiera elegir archivos .jpg para enviar, y no que aparezca el mensaje de eror al enviar el formulario.

Lo primero que no sabias es que no me muestra el valor de las variables con Ñ y no se porque.

Un saludo y gracias por ayudar.
Pues es demasiado simple lo de las imagenes solo modifica tu formulario por esto:

<input type="file" name="nombre" accept="image/jpeg" />

Si te puedes dar cuenta solo fue introduciendo ese pequeño trozo de codigo:

accept="image/jpeg" 

y en cuanto a lo otro , pues es obvio ya que el lector de codigo php muchas veces no detecta ese tipo de caracteres asi que desde el envio de datos envez de poner por ejemplo : niño, pon : ni&ntilde;o para que pueda leer bien el formato y lo mostrara como : niño

saludos :wink:
Es facil programar "Solo interesate en aprender"
En cuanto a lo de las imagenes va perfecto, pero ¡Se puede eliminar el apartado que pone "Todos los archivos"?

La cosa rara es que con el extract te asigna las variables, y con var_dump te muestra todo lo que lleva el array $_POST y tamaño lo lleva tal cual:

array(21) { ["idmascota1"]=> string(2) " 1" ["nombre1"]=> string(6) " Ninii" ["estados"]=> string(1) "0" ["tamaño"]=> string(1) "1" ["paises"]=> string(11) "1,1,Mestizo" ["estado1"]=> string(1) "0" ["sexo1"]=> string(1) "1" ["esterilizado1"]=> string(1) "1" ["disponible1"]=> string(1) "0" ["edad1"]=> string(11) " 2009-04-01" ["foto1"]=> string(56) "http://www.eluniversodelperro.com/imagenesanimales/1.jpg" ["acogido1"]=> string(1) "0" ["apadrinado1"]=> string(1) "0" ["peso1"]=> string(1) "0" ["comunidad1"]=> string(1) "6" ["altura1"]=> string(1) "0" ["youtube1"]=> string(0) "" ["historia1"]=> string(32) "Nini es muy tranquila y sociable" ["vacunas1"]=> string(0) "" ["enfermedades1"]=> string(7) "Ninguna" ["adguest2"]=> string(9) "Modificar" }
o si era por metodo post la ñ obviamente no acepta los valores es que ahm no lo entendi bien crei que era otra cosa , pero en fin si es mejor no poner ñ a variables por post recomendadisimo y tambien es recomendado poner sinonimos por ejemplo en vez de tamaño poner magnitud, volumen etc.
usar sinonimos aveces es bueno

y en cuanto a lo de la imagen no no se puede evitar quitar todos los archivos ya que si te das cuenta en cualquier programa o web al abrir un archivo siempre veras todos los archivos ya que es una opcion predefinida y yo creo que asi esta bien ya que el comun de la gente no cambia a todos los archivos y se quedaria con solo imagenes jpg y si es que llega a cambiar añadele el script de comprobacion que te di asi tendrias con toda certeza que no subirian archivos de otro tipo.

Saludos y suerte con tu proyecto.

**cesar**
Es facil programar "Solo interesate en aprender"
De acuerdo, muchas gracias por todo. Si tengo alguna duda te aviso, y cuando este listo te lo dire para que entres y le eches un vistazo si quieres.

Saludos
ok esta bien aqui estaremos para ayudarte.
Es facil programar "Solo interesate en aprender"
Hola de nuevo.

Estoy dando los ultimos retoques a la zona personal, y te comento los fallos que tengo:

- En modificar.

En el boton de examinar la foto, cuando le doy a modificar, no me sube la foto al servidor a la carpeta que yo le digo (con la foto no hace nada).

Este es el trozo correspondiente a ello.

echo "byte= " .$bytes;
echo "tipo= " .$tipo;
echo "archivo= " .$archivo;
    if ($bytes < 350000){
    if ($archivo != "") {
        $destino =  "foticos/".$$iiidmascota;
        if (copy($_FILES['foto1']['tmp_name'],$destino)) {
    
        } 
    } 
    }
    else
    {
    echo "La foto correspondiente al animal: " .$$iiidmascota ." no se ha subido ya que es demasiado grande (Max: 350K)";    
    }

- En introducir

Cuando seleccionas el numero de registros a introducir, etc te coloca una tabla dentro de otra.

Muchas gracias por todo.

Un saludo
Pues a lo mejor es por tu codigo que bueno veo una variable mal hecha a lo mejor ahi esta el error esta asi

$$iiidmascota y tendria que ser asi : $iidmascota
Es facil programar "Solo interesate en aprender"
No me preguntes porque pero tengo que poner un doble $ para que me lleve los datos bien a la hora de hacer el UPDATE; es decir, mi update es asi:

UPDATE.....SET NOMBRE = $NOMBRE

Como todo esto esta metido en un bucle, no puedo poner $nombre .$i porque no funciona, la unica solucion es:

$iinombre = "nombre" .$i;


UPDATE.....SET NOMBRE = $$iinombre;


Pero como te comentaba, es que la foto no la pilla, ¿Porque?

No lo se
El apartado del descuadre en introucir.php ya esta solucionado, lo que sigue fallando en ambos es lo de la foto.
ahm que valor tiene la variable $archivos
Es facil programar "Solo interesate en aprender"
Al final ya lo he solucionado, resulta que llamaba foto a 2 cosas diferentes. Ahora ya lo hace todo.

Un saludo
si que bien.
suele suceder ese tipo de errores

un saludo :wink:
Es facil programar "Solo interesate en aprender"
Aqui os dejo los errores que tengo en los 2 archivos: modificar.php e introducir.php

Modificar
No sube las fotos - Aunque el nombre de la foto lo lleva bien
No deja seleccionado el tamaño, el select se llama tamaño
No recoge bien el tamaño (tamaño en lugar de tamano)
Error en los gatos, no pone value (en los perros lo hace bien)
Pone mas paginas de las que tienes (20 pag cuando solo tienes 15)
En algunos apartados provoca un error en el menu superior (esto es muy raro)


Introducir
No sube las fotos - Aunque el nombre de la foto lo lleva bien
No deja seleccionado el tamaño, el select se llama tamaño
No recoge bien el tamaño (tamaño en lugar de tamano)
Error en los gatos, no pone value (en los perros lo hace bien)
En algunos apartados provoca un error en el menu superior (esto es muy raro)


Lo mejor para que veais los fallos y como funciona todo, es que entreis a la web http://www.eluniversodelperro.com/index.php y entreis con los siguientes datos:

Nombre: prueba
Contraseña: prueba


Hay que tener en cuenta que lo de los selects dependientes se realiza con includes de otros archivos que (en teoria) realizan esas funciones

Espero que me podais ayudar ya que yo por mucho que miro, busco y cambio cosas, no consigo solucionar estos problemas.

Un saludo
Tienes demasiados errores!!!!

cualquiera que sepa un poco de php y mysql(bueno no un poco) obtendria toda tu BD la borraria haria lo que sea y tendria acceso a tu servidor :S

pero bueno tendremos que ir reparando paso a paso todo eso

bueno en primera, he creado un codigo de subida de imagenes anteriormente en la que ayude a un usuario, puedes ver el funcionamiento y copiar lo necesario, ya que como yo no tengo tu codigo ni base de datos pues no se como este estructurada pero ahi va:


http://www.comocreartuweb.com/phpBB2/ftopic27514-15.html

Saludos
Es facil programar "Solo interesate en aprender"
Demasiados errores....tampoco que sea para tanto.

No entiendo a que te refieres con que cualquiera podria borrarme la base de datos.

Como si no tiene acceso a los archivos PHP?

En cuanto a lo de las imagenes me ha venido la inspiracion y creo que ya se cual es el error; y es que en el formulario no ponia esto (creo): enctype="multipart/form-data"

voy a probar, pero casi seguro que ese es el problema de las imagenes.

En cuanto a los demas errores ahora iremos viendo
si, y de hecho si es para tanto, en este mundo dicen que nada es imposible y es cierto lo que te digo , con inyecciones sql en las peticiones GET se pueden obtener toda tu base de datos y hasta tu servidor
Es facil programar "Solo interesate en aprender"
En modificar.php ese apartado ya lo tenia puesto, en introducir no lo tenia puesto pero no ha funcionado.

Te dejo el codigo que hace referencia a lo de las imagenes: (es practicamente igual para los 2 archivos)


 $fotosubida = "fotosubida" .$ii;  
 if ($$fotosubida <> ""){
$destino = substr($$iiidmascota, 1, 6);
$tamanofoto = $_FILES ['fotosubida' .$ii ][ 'size' ];
$tipofoto =  $_FILES['fotosubida' .$ii]['type'];
if ($tipofoto == "image/jpeg"){
if ($tamanofoto < 300000){
if (move_uploaded_file($_FILES['fotosubida' .$ii]['tmp_name'], 'imagenesanimales/' .$destino .'.jpg')) {
} 
else {
echo "La foto correspondiente al IdAnimal: " .$destino ." no se ha  subido correctamente";
}
}
else
{
echo "La foto seleccionada para el animal con Id: " .$destino ." es demasiado grande (Max: 300Kb)";
}
    }
    else
    {
      echo "Solo estan permitidos los archivos .jpg; IdAnimal: " .$destino ." sin foto";  
    }

    echo "
IdAnimal = " .$maxid ." con Nombre = " .$$iinombre ." ha sido introducido satisfactoriamente";
}
}



<form enctype="multipart/form-data" name="formulario2" method="post">
.
.
.
.
<input name='fotosubida<? echo $contador; ?>' size='15' onkeypress='KeyPress()' type='file' accept="image/jpeg"/>
.
.
.
<input type="submit" name="adguest2" align="right" value="Introducir"/>

PD: He mirado el tema que me has comentado y es que lo tengo IGUAL.
Pero yo TODO lo hago con POST; genero la sentenica SQL segun los datos que se hayan seleccionados (lo mismo para UPDATES, INSERT).

¿Entonces como soluciono eso para que nadie pueda borrarlo?

Un saludo