Ir al contenido


Foto

Problema con arrays


  • Por favor identifícate para responder
4 respuestas en este tema

#1 Payo

Payo

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 04 octubre 2013 - 10:00

Hace poco empecé el Curso de PHP y MySQL de César Cancino y la verdad es que estoy fascinada con todo lo que estoy aprendiendo. Estudio esto por placer y estoy enormemente agradecida a César Cancino, a Jesús Conde y a todos aquellos que de manera gratuita enseñan sus ámplios conocimientos en estos tiempos tan difíciles. Dado que ahora tengo bastante tiempo, le dedico varias horas al día a este curso y trato de hacer los ejercicios pero debo advertir que soy muy novata en este tema.
Estoy teniendo un pequeño problema con un ejercicio que César plantea en el videotutorial 5 que trata sobre los arrays. El ejercicio consiste en hacer tres combo box, uno con los días del mes, otros con los meses del año y un tercero con los años desde 1950 hasta el año en curso. Los problemas que se me plantean son los siguientes:
1.- Si pongo todo el código en la misma página:
a) en chrome sólo se me muestran los dos primeros
b) en firefox se me muestran los dos primeros y los datos del tercer combo box aparecen como una lista y con los problemas que describo en el siguiente punto.
2.- Cuando paso el código del tercer combo box a un archivo propio sucede que sólo funciona si al crear el array este comienza en 1000 pero a pesar de que debe contar hasta el 2013, en el navegador el combo box sólo muestra hasta el 1013. No entiendo porque pasa esto. ¿Podría alguien ayudar, por favor? Muchas gracias.




<?php
for($i=0;$i<=31;$i++)
{
$dias[$i]=$i;
}
?>
<select name="dias">
<option value="0">Seleciona el dia</option>

<?php

for($y=0;$y<sizeof($dias);$y++)
{
?>

<option value="<?php echo $dias[$y]?>" title="<?php echo $dias[$y]?>">
<?php echo $dias[$y]?>
</option>
<?php
}
?>
</select>



<?php
$meses[0]="enero";
$meses[1]="febrero";
$meses[2]="marzo";
$meses[3]="abril";
$meses[4]="mayo";
$meses[5]="junio";
$meses[6]="julio";
$meses[7]="agosto";
$meses[8]="septiembre";
$meses[9]="octubre";
$meses[10]="noviembre";
$meses[11]="diciembre";
?>

<select name="combo">
<option value="0">Seleciona el mes</option>

<?php
for($z=0;$z<count($meses);$z++)
{
?>
<option value="<?php echo $meses[$z]?>" title="<?php echo $meses[$z]?>">
<?php echo $meses[$z]?>
</option>

<?php
}
?>
</selec>



<?php
for($j=1000;$j<=2013;$j++)
{
$anyos[$j]=$j;
}
?>
<select name="anyos">
<option value="0">Seleciona el a&ntilde;o</option>

<?php

for($i=1000;$i<count($anyos);$i++)
{
?>

<option value="<?php echo $anyos[$i]?>" title="<?php echo $anyos[$i]?>">
<?php echo $anyos[$i]?>
</option>

<?php
}
?>
</select>



  • 0

#2 porfi.dev

porfi.dev

    Advanced Member

  • Miembros
  • PipPipPip
  • 183 mensajes
  • LocationMy House @ México

Escrito 04 octubre 2013 - 11:24

Bueno bienvenida al mundo de programación y recuerda que los maestros te enseñan a utilizar el lenguaje, pero veo que te falta much o la logica de programacion.

El maestro Cancino tiene un curso sobre eso, observalo antes de continuar.. en fin.

Vamos a la respuestas:

Primero lo primero, el codigo esta muy "mal indentado", la indentación puedes hacerla con la tecla tabulador (generalmente  a la izquierda de la Q).

Segundo, las variables que tulizas aqui, se llaman arreglos y su caracteristica es que pueden tener muchos datos. Tembien se les define como Listas o Matrices.

Tu principal error es que no prestaste atención donde mencionan que los arreglos empiezan desde 0, en tu codigo los dias se te muestran a partir del 0.. y que yo sepa el dia 0 no existe.

Así que podemos cambiar eso simplemente así:

<?php
for($i=0;$i<31;$i++){
$dias[$i]=$i + 1;
}
?>



El segundo es que tienes tantas etiquetas que igual se te confunde el código, y no puedes ver el error pero en tu codigo mostrado arriba tienes un </selec> en ves de un </select>


El tercer error es nuevamente en los arreglos

	for($j=1000;$j<=2013;$j++)
{
$anyos[$j]=$j;
}


tienes que estudiar mucho el ciclo for ya que mas que nada el error es los números los estas entendiendo mal.

Vuelve a ver el tutorial, ya que el codigo que planteas no es le mismo.. y esta mal organizado. En todo caso aqui te dejo una corrección a tu codigo.

<?php
for($i=0;$i<31;$i++){
$dias[$i]=$i + 1;
}
?>
<select name="dias">
<option value="0">Selecciona el día</option>
<?php
for($y=0;$y<sizeof($dias);$y++){
?>
<option value="<?php echo $dias[$y]?>"><?php echo $dias[$y]?></option>
<?php
}
?>
</select>
<hr>
<?php
$meses[0]="enero";
$meses[1]="febrero";
$meses[2]="marzo";
$meses[3]="abril";
$meses[4]="mayo";
$meses[5]="junio";
$meses[6]="julio";
$meses[7]="agosto";
$meses[8]="septiembre";
$meses[9]="octubre";
$meses[10]="noviembre";
$meses[11]="diciembre";
?>
<select name="combo">
<option value="0">Seleciona el mes</option>
<?php
for($z=0;$z<count($meses);$z++)
{
?>
<option value="<?php echo $meses[$z]?>"><?php echo $meses[$z]?></option>
<?php
}
?>
</select>
<hr>
<?php
for($j=1990;$j<=2013;$j++)
{
$anyos[$j]=$j;
}
?>

<select name="anyos">
<option value="0">Seleciona el a&ntilde;o</option>
<?php

for($i=0;$i<count($anyos);$i++)
{
$j = $i + 1990;
?>
<option value="<?php echo $anyos[$j]; ?>"> <?php echo $anyos[$j]; ?> </option>
<?php
  }
?>
</select>



  • 0

#3 Payo

Payo

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 07 octubre 2013 - 09:32

Quiero agradecerte elporfirio que contestaras tan rápido, tan eficientemente y de manera tan agradable. Quiero disculparme por no contestarte con mayor prontitud pero no dispongo de conexión a Internet en casa y cuando llegó tu respuesta la biblioteca en la que conecto estaba a punto de cerrar así que no pude estudiar bien todo lo que explicabas. No obstante, tengo que decir que me llenó de emoción descubrir la magnitud de la lección que estabas impartiendo. A lo mejor para la gente que sabe programación esto es una tontería pero para mi, que estoy en los comienzos, resultó como si se abriera una puerta a otro mundo y en  mi cabeza resonaban las palabras: 'es un maestro, un maestro'. Y me llené de felicidad.
Ahora que ya he estudiado más detenidamente todas tus explicaciones y el código corregido, me he dado cuenta de los fallos y entiendo mejor lo que estaba intentando hacer. Cuando el código funciona parece magia. Te voy a hacer caso: repasaré el ciclo for y miraré lo de la lógica de programación.
Una vez más, muchas gracias elporfirio.
  • 0

#4 porfi.dev

porfi.dev

    Advanced Member

  • Miembros
  • PipPipPip
  • 183 mensajes
  • LocationMy House @ México

Escrito 07 octubre 2013 - 03:44

Gracias por las flores.  (y)

En realidad soy un JUNIOR, en el ambito de la programación se clasifica generalmente por:
JUNIOR, SENIOR y MASTER

La principal diferencia es la habilidad de resolver problemas en base a la experiencia. No tanto el conocer un lenguaje aunque es un punto importante.

Mira pruebas estos codigos en el propio navegador o escribelos en tu computadora, te ayudarán a entender mejor que es el "indice contador":

http://www.w3schools...looping_for.asp

(por cierto el inglés es importante en esta bonita carrera te abre puertas a muchos codigos y problemas ya resueltos).
Saludos.
  • 0

#5 Payo

Payo

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 08 octubre 2013 - 10:10

Esta página que sugieres es genial; no sólo da explicaciones sino que además puedes visualizar el código y el resultado simultáneamente. Estoy impresionada, la de cosas que estoy descubriendo.

Te lo agradezco de nuevo, maestro. No importa que seas JUNIOR, SENIOR o MASTER. Para mi el maestro es una persona que enseña con generosidad e inteligencia algo que deseas aprender con muchas ganas; y enseña porque tiene suficientes conocimientos para hacerlo y la actitud adecuada.  El maestro es una persona a la que respetar y, en ocasiones, incluso admirar.

(y)

Saludos.
  • 0




IP.Board spam blocked by CleanTalk.