This is the P2PU Archive. If you want the current site, go to www.p2pu.org!
You haven't posted any discussions yet.
De la semana pasada deberiamos haber probado ejemplos, mirado y tocado y probado como funciona un poco de codigo PHP, y entender que hace falta un servidor para que el PHP corra
RESUMEN
El proposito de esta semana es familiarizarnos con la sintaxis de PHP y avanzar en sus formas y elementos mas simples. Pondre unos mensajitos con teoria en el hilo de Lenguaje PHP sobre los temas de la semana: sintaxis, variables, operadores, estructuras de control (condicionales y ciclos/bucles), para que vayan siguiendo, tambien les recomiendo que lean esos temas del manual oficial http://php.net/manual y pueden ver tambien este http://www.forosdelweb.com/wiki/Manual_de_PHP:_Sintaxis_de_programaci%C3...
y algunas cosas de tutoriales faciles como http://www.tutorialesfacil.com.ar/php/Generalidades.htm y http://www.tutorialesfacil.com.ar/php/Condicionales.htm (gracias http://p2pu.org/users/cesarcastejon Cesar por el dato!)
EJEMPLOS
Los ejemplos para esta semana como siempre estan para bajar en http://nodosol.org/p2pu/ejemplos
pueden verlos en accion en http://nodosol.org/p2pu/ejemplos/2/nombre-del archivo (fijense que hay que poner el nombre del ejemplo que desean ver ;)
hay ejemplos que sirven solo como tutoriales, un poco de codigo mostrando lo que se puede hacer
variables.php - operadores.php - textos_con_variables.php - bucle.phph
tambien encontraran ejemplos mas interesantes, con alguna funcionalidad como
contador.php (un contador de visitas rudimentario)
alumnos.php (un listado de alumnos leido de una "base de datos" de texto)
alumnos2.php (el mismo listado pero con mezclando algo de HTML, eso lo veremos mejor la semana proxima HTML+PHP+HTML...)
y para hacerlo un poco mas divertido podemos agregar alumnos a la lista con
agregar_alumno.php
De paso si quieren ingresar todos su usuarioP2PU con nombre, mail, pais y todo eso de cada uno en
http://nodosol.org/p2pu/ejemplos/2/agregar_alumno.php
podemos ver lo de todos en
http://nodosol.org/p2pu/ejemplos/2/alumnos2.php
TAREA
La tarea de esta semana va a ser enviar via http://nodosol.org/p2pu
un archivo llamado tarea_semana_2.php que al verlo muestre
1) Fecha y hora actual
2) que muestre un saludo "Buenos dias", "Buenas tardes" o "Buenas noches" segun la hora del dia
3) los numeros impares del 1 al 300
4) el contenido de algun otro archivo que lea (con readfile o file_get_contents)
y el codigo PHP debe contener
1) alguna variable
2) algun bucle /ciclo
3) algun texto entre comillas (dobles o simples)
el proximo martes 8/2 voy a evaluar todos los que hayan subido sus archivos a http://nodosol.org/p2pu/ en cada carpeta de alumno y voy a dar una devolucion con puntaje, no solo por la funcionalidad que vale 50%, sino por la elegancia, legibilidad y claridad del codigo, que vale el otro 50%
las dudas, por este hilo, de la semana 2
SUERTE!
Hola Martín, ya subí algo pero no se ve como quiero, ya probé con codificación utf-8 y iso-8859-1 sin resultados, ¿alguna recomendación?. También quería preguntarte sobre la función file_exist(), que según la documentación de PHP debería devolver un booleano dependiendo de la existencia, o no, del archivo, pero al probarla en mi servidor local PHP dejaba de interpretar a partir de la linea en que la incluía, y al probar en tu servidor directamente obtenía un error. La sentencia que estaba probando era algo así como:
<?php
$archivo = "externo.txt";
if(file_exist($archivo)) {
readfile(archivo);
} else {
echo "ALERTA: el archivo no existe";
}
?>
Hola Luis, yo probé buscar si esa función estaba incluida y me dice que no, de donde sacaste la sintaxis? Te paso el scrip que utilice para ver si la tenes incluida a ver que te dice.
<?php
if (function_exists('file_exist')) {
echo "La funcion file_exist esta disponible";
} else {
echo "La funcion de file_exist no esta disponible";
}
?>
------ EDITO PORQUE ME DESCUBRI UN ERROR --------
Increíble, me corrijo a mi misma con minutos de diferencia, indagando un poco más encontré que tanto vos como yo estábamos cometiendo un error de escritura:
La función se llama file_exists()
Los dos estuvimos probando con file_exist (que no existe obviamente).
Saludos, espero que allá servido igual.
uff gracias, que tontera, me falló la vista xD
Hola Luis, faltaría poner el $ en la variable archivo para que la función readfile funcione: $archivo
sí gracias, pero ese fue un error al transcribir al post solamente, ojalá nadie se confunda con eso porque ya no me deja editar el post :P
Saludo a todos.
Para los que quieran estar mejor documentados acerca del comando DATE & TIME. Les recomiendo ésta página ... tiene muchas de las combinaciones necesarias.
http://www.ignside.net/man/php/fechas.php
Ya subi el codigo pero quedo con 3 problemitas.
1. - Como me aseguro para que la hora que aparece en la pagina sea la del computador desde donde el cliente la abre.
2 - Esta vez que la hora sea siempre la de determinada zona horaria, por ejemplo que siempre muestre la hora actual en New York.
3 - Al final del resultado en readfile() mi funcion me devuelve tambien la longitud de la cadena y no supe como quitarla :).
El que quiera ver mi tarea estos son los links:
Tarea ----> http://www.nodosol.org/p2pu/migueldavidx/tarea_semana_2.php
Codigo --> http://www.nodosol.org/p2pu/vercodigo.php?archivo=migueldavidx/tarea_sem...
De pronto son problemitas simples, pero la verdad no se mucho de programacion y no se que significan cosas como estas :)
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )
Intentaré responderte con lo que sé, si alguien gusta corregir, es bienvenido:
1.- PHP se ejecuta en el servidor, así que la unica hora que puede obtener es la del mismo. Para obtener la del cliente, tendrías que utilizar un lenguaje que se ejecute en el cliente, como JavaScript, y supongo que habrá alguna forma para una vez obtenido con JS, pasar esa información al servidor para que PHP lo utilice.
2.- Se me ocurre que podrías crear una función, conociendo la zona horaria del servidor (y me imagino que hay alguna función en PHP para esto), y haciendo un ajuste a la zona horaria deseada (Nueva York es -5 o -4 dependiendo del horario de verano), sumando las horas necesarias. Es una idea.
3.- Lo que está pasando es que en tu función readF, estás retornando el resultado de readfile($file), y eso lo estás imprimiendo. La función readfile por si sola imprime en la pantalla el resultado, no es necesario hacer un echo al resultado, porque, como te explicaré en un momento, el resultado es un entero. Lo correcto, si quieres hacerlo así como lo pusiste, con funciones separadas, sería que en tu código principal, solo la mandaras llamar a readF, no hicieras echo. Espero darme a entender.
Sobre
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )
, es la definición de la función. En prácticamente todos los lenguajes de programación, la estructura de una función es similar:-Valor de retorno [int]: Indica que tipo de dato va a retornar la función, en este caso un entero (Aqui es donde está el problema con tu función propia, como regresa el resultado de readfile, que es un entero, y le haces echo, lo estás imprimiendo).
-Nombre de la función [readfile].
-parámetros de entrada, entre parentesis[( string $filename [, bool $use_include_path = false [, resource $context ]] )]: En este caso puedes ver que incluye unos parámetros entre corchetes. Estos son opcionales, es por eso que nosotros solo mandamos llamar la función con un solo parametro, "string $filename". Si quisiéramos, podríamos utilizar "bool $use_include_path", pero como no queremos, la función automaticamente le pone el valor false (aparece como "= false").
Como conclusión, cuando tu mandas llamar tu función:
function readF ($f){
$file = $f;
if(file_exists($file)){
$result = readfile($file);
}
else {
$result = "El Archivo NO Existe";
}
return($result);
}
<?php echo readF($f); ?>
Uff, espero no haberte revuelto mas, si algo no quedó claro, o no me di a entender, con confianza pregunta.
Saludos.
:)
Super la explicación, creo que me queda muy claro. Ya me funciono lo de readfile().
Ahora solo queda aprender un poco mas sobre las funciones de fecha y hora como date() y time() entre otras.
Muchas gracias
Miguel, yo estoy utilizando http://www.000webhost.com/ como server para hacer las practicas. Como está configurado con otra zona horaria tuve que buscar una función para que me muestre la de Buenos Aires al imprimir la hora en pantalla.
Encontré una función que corrige la diferencia:
date_default_timezone_set('America/Argentina/San_Luis');
En vez de usar Buenos Aires uso San Luis porque es la zona horaria actual de todo el territorio (no se aplicó la corrección DST de verano)
Luego guardo fecha y hora en variables
$fecha = date("d/m/Y");
$hora = date("H:i:s");
Saludos
Gracias Enrique. Eso soluciona que siempre se muestre determinada zona horaria.
Funciona muy bien :)
Hola, saben que estaba haciendo la tarea, pero me surgió problema con el ultimo punto, de abrir un archivo.
Se me imprime algo que no debería, cuando le hago Echo me sale "Resource id #4" y no tengo la menor idea de por que me sale (Y no es lo que está dentro del archivo .txt =S)
Este es el código:
<?php
$archivo ='http://dl.dropbox.com/u/3517/P2Pu/PHP/2/archivo.txt';
$externo = file_get_contents("$archivo");
if (strlen($externo))
{echo "El archivo existe.";
$abrir = fopen($archivo, "r");
echo $abrir;}
else{echo "El archivo no existe.";}
?>
Lo que está pasando es que estás haciendole echo a $abrir, que es el resultado de fopen, y segun la definición del metodo en la documentación de PHP:
resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )
regresa un valor de tipo "resource". Por eso el echo dice "Resource id #4". A lo que tendrías que hacer echo es a $externo, que es la salida de file_get_contents que si es un string:
string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )
Osea, tu codigo debería de ser algo asi:
<?php
$archivo ='http://dl.dropbox.com/u/3517/P2Pu/PHP/2/archivo.txt';
$externo = file_get_contents("$archivo");
if (strlen($externo))
{
echo "El archivo existe.";
echo $externo;
} else {
echo "El archivo no existe.";
}
?>
Espero haberte ayudado. Saludos.
Hola Matias,
No soy muy experto en esto pero quizas te pueda ayudar en algo (al menos para que alguien me coorija y asi resolver tu duda). Creo que porque estas accediendo a un archivo externo (Servidor externo dropbox), puede que no tengas los permisos de escritura y lectura por lo tanto la funcion
<?phpfopen($archivo, "r")?>
no sea la mas adecuada chek it este link de los expertos donde te explican mejor fopen . Ahora mi solucion es esta:
<?php
$archivo ='http://dl.dropbox.com/u/3517/P2Pu/PHP/2/archivo.txt';
$externo = file_get_contents("$archivo");
if (strlen($externo))
{echo "El archivo existe.";
echo $externo;}
else{echo "El archivo no existe.";}
?>
No se si esta bien, pero me muestra un Sigo vivo!
esta perfecto lo que te dijeron antes, fopen() es para abrir un archivo para luego procesarlo, por eso devuelve un resource y no el contendio del archivo. fopen() es lo que podriamos llamar una "funcion de bajo nivel" es decir que hace cosas mas tecnicas, mas cerca del hardware, que solo abre un archivo y que uno debe usar combinada con otras, para leer, escribir y cerrar el archivo.
En cambio las funciones mas generales o "de alto nivel" que estabamos probando hacen todo eso junto, como readfile() que lo muestra en la pagina o file_get_contents() que lee todo el archivo o file_put_contents() que escribe todo un archivo a partir de un texto o de una variable
Perfecto!, me ha funcionado de peelos!, muchas gracias, ya vi el problema :P
Acá está mi tarea por si alguien la quiere ver.
http://www.nodosol.org/p2pu/Saitam/tarea_semana_2.php
y acá el archivo de fuente con comentarios, por si alguien le quiere hechar un ojo.
http://www.nodosol.org/p2pu/vercodigo.php?archivo=Saitam/tarea_semana_2.php
Hey matias estoy estudiando como hacer que los numeros me impares me salgan un poco ordenados algo asi como lo tenes voz, pero no entiendo como usar el box. bueno creo que eso es lo que necesito?
Si, lo que ocupo ahí se llama CSS, lo tienes que ver entre las etiquetas head, ahí búscate el código del .box y lo que cambies dentro de las llaves del .box cambiara la caja de los números, si tenes mas dudas me preguntas, slds.
Muchas gracias por tu tiempo matias, no tuve mas tiempo para seguir investigando sobre la pregunta, me toco hacerlo algo rustico, bueno hechale un vistaso, fue la idea mas rapida y sencilla que se me ocurrio.
http://www.nodosol.org/p2pu/cesar.castejon/tarea_semana_2.php
codigo
http://www.nodosol.org/p2pu/vercodigo.php?archivo=cesar.castejon/tarea_s...
Gracias.
Te recomiendo que leas sobre un poco de CSS :), si tienes duda, me avisas :)
Ok, gracias por tu consejo, vale mas que antes de esta semana habia estudiado un poco acerca de las variables y las sintaxis, pero si me tengo que empaparme mas con html y CSS.
Muchas gracias.
Acabo de subir mi trabajo para probar como se ve online pero resulta que he definido el charset y en mi equipo se ven bien, las tildes las eñes pero en el servidor de los trabajos no se muestra bien, http://www.nodosol.org/p2pu/kuroko/tarea_semana_2.php Ayuda, Gracias
Frank y todos, no se preocupen por esto de los acentos y la defincion del charset, tengo que revisar el servidor a ver que tiene, eso no va a ser un error de la tarea, obvio.
Cuando vea que le pasa les cuento asi aprendemos todos, si alguien tiene alguna idea escucho :)
Hola yo solucione el tema de los acentos con htmlentities, puse algo asi:
<?php
$archivo = 'http://dl.dropbox.com/u/9009120/php.txt';
$texto = file_get_contents($archivo);
if ($texto != FALSE) {
echo( htmlentities($texto));
}
else {
echo("<center><big><strong>El archivo no exite</strong></big></center>");
}
?>
Dejo la referencia de htmlentities
http://www.php.net/manual/es/function.htmlentities.php
Mi trabajo: http://www.nodosol.org/p2pu/otiuqx/tarea_semana_2.php.php XD
Lo del servidor podria ser que en la instalacion no tiene codificacion ut8 o el idioma esta incompleto. a mi me paso en un ubuntu server 10.04 lo instale en español y a la hora de configurar el idioma omiti algoi entosnces me daba ese mismo error lo que hice fue instalar el paquete de idioma completo y se soluciono.
Bueno, dejo mi tarea; la zona horaria me ha dado muchos problemas. Lo probé en mi servidor local y me funciono el código tal cual; pero al subirlo al servidor remoto me modifica la hora y el lenguaje. El programa cumple lo solicitado; espero encontrar la solución a esos detallitos.
Saludos.
http://www.nodosol.org/p2pu/Bloodsto/tarea_semana_2.php
Termine termine, adjunto mi tarea No 2
http://www.nodosol.org/p2pu/eddytodo/tarea_semana_2.php
Acabado, justo a tiempo,espero :D
http://www.nodosol.org/p2pu/Nihilistik/tarea2.php
Hola!
No puedo subir mi archivo porque mi nick no esta en la lista de "seleccionar usuario" /:
¿Que puedo hacer?
saque a todos los que no habian subido archivos, ahi estas agregado, ya podes subirlo. Gracias
Gracias Martin!
Más bien disculpa por la tardanza :)
Disculpa Martín es el mismo caso que Alonso, ma tarde debido a los viajes de trabajo que realize, bueno quiero ponerme al corriente, ya que cuento ahora con el tiempo para poder realizar el curso.
PDT. mi usuario es shabedekam, te lo agradecere mucho Martín
PRofe, tengo un pequño problema, apenas regresé de hacer unas instalaciones en un proyecto que se llama Ruralsat, en donde estuvimos en unas comunidades casi aisladas tecnológicamente, estoy descargando los ejemplos y dandole una leida, Veo que la tarea es para entregar el día de hoy, espero entregarla un poco mas tarde.
Gracias!!!!
Tube casi el mismo proble martin, he podido leer un poco los foros estos dias, pero no he podido sentarme a estudiar, por que esta semana comenzamos a planificar en el Colegio donde trabajo, espero y valga la tarea cuando la pueda hacer entre hoy y mañana.
Justo a tiempo: http://www.nodosol.org/p2pu/ANDRS/tarea_semana_2.php
Me di cuenta que la hora no era correcta al subirlo a la página. Muestra la hora del servidor.
Ouch, tarde lo subí espero lo tomes en cuenta. Chicus12
En Costa Rica todavía es martes.
q raro!!!! diai mae jeje, pero es cierto todavia es martes :P
Francisco ( Chicus12) subiste tu documento en extensión rar,
igual ahi estan tambien los archivos php y el txt
Hola Profesor, Una pregunta... Iba a subir mi tarea pero no encontre mi usuario??? me dieron de baja o algo asi?
Es japt23 y no lo encontre??
agregue a todos los que lo pidieron o dieron señales de vida
Listo mi tarea con retraso de 1 dia. No tengo escusas entre el trabajo y vida personal me retrase es todo. Gracias!
Martín, una consulta, donde podremos ver las notas?
Saludos :)
estan todos desaprobados!
era un chiste
creo que con el trabajo que da esto de corregir, mas bien lo vamos a hacer colaborativo!! dejenme pensar como acelerar esto y dar un feedback justo
algo interesante es que todos pueden ver las tareas de otros
Me parece!, y si hacemos una especie de votación?
Onda por ejemplo Votación de programación, Metodología, uso del PHP, y con una parte para dejar comentarios, onda para ver como se puede hacer mejor o ideas de optimizacion ? :P
Slds :)
Tome tiempo para ver muchas de las tareas, y pues en todas hay cosas distintas que no sabia, hay gente q domina bastante, sería bueno q los q dominan bastante sugieran a los q aún estamos comenzando
Hola a todos,
Yo tomé la solución de leer el un archivo php: http://nodosol.org/p2pu/ejemplos/1/info.php, pero me ejecuta el código del mismo.
Un saludo
Es correcto, lo que estas haciendo allí es ejecutando la función phpinfo() que está en el documento que estás llamando info.php. al momento de presentarlo lo procesa antes. prueba con un archivo de texto, mezcla palabras con algunas etiquetas html por ejemplo
que hace salto de linea
Corrección: que la etiqueta que no me aparece
<br>
(que es salto de linea) espero que me hayas comprendido compañeroPara ser mas preciso
;)
:)