[SECCION PHP] Editor:::Linkgl --- APRENDE PHP [TUTORIAL]

Programacion Orientada a Objetos (POO) - Objetos publicos y privados
Aqui, explicare un poco que significa "public" y "private" en php, en la leccion anterior teniamos esto:
<?php
Class HolaMundo {
private $unavariable;
public function mostrar()
{
$this->unavariable = "Hola Mundo";
echo $this->unavariable;
}
}
// Luego, para ejecutar el codigo:
$holamundo = new HolaMundo();
$holamundo->mostrar();
?>
Como ven hay dos objetos, una variable que es privada y una funcion que es publica.
private significa que a este objeto, solo se lo puede modificar o leer dentro de una clase, es decir, si nosotros pusieramos
$holamundo = new HolaMundo();
// Y aqui pusieramos
$holamundo->unavariable = "hola";
Nos daria error, ya que como la variable es privada, no la podemos modificar desde afuera. Se entiende?
Por eso, si la funcion es publica, la podemos usar desde fuera de la clase, mediante el operador ->:
$holamundo->mostrar();
Ahora, hagamos algo con dos funciones, una privada y una publica y ademas, con una variable:
<?php
Class HolaMundo {
private $texto;
private function definirtexto()
{
$this->texto = "Estas aprendiendo POO en PHP";
}
public function imprimir()
{
$this->definirtexto();
echo $this->texto;
}
}
// Y ahora usamos la clase y su funcion imprimir()
$holamundo = new HolaMundo();
$holamundo->imprimir();
?>
Como ven arriba, una funcion es privada, si la llamamos asi: $holamundo->definirtexto();
nos dara error, debido a la razon que explique previamente.
Como vemos, hay una linea:
$this->definirtexto();
Aqui si usamos esta funcion, porque la estamos usando dentro de la clase.
-------
Hasta aca parece que se escribe mucho para solo mostrar algo simple, entonces, les voy a mostrar un ejemplo practico. Esto lo usan la mayoria de los sistemas de foros como phpBB:
Class BaseDatos {
private $dbhost;
private $dbuser;
private $dbpass;
private $db;
public function iniciar($server, $usuario, $passwd, $base)
{
$this->dbhost = $server;
$this->dbuser = $usuario;
$this->dbpass = $passwd;
$this->db = $base;
mysql_connect($this->dbhost, $this->dbuser, $this->dbpass);
mysql_select_db($this->db);
}
}
/* Y aca, se vuelve mucho mas simple al querer conectarse a una base de datos: */
$BD = new BaseDatos();
$BD->iniciar('localhost','root','','desarrollos');
/* Ahi arriba, nos conectamos a nuestro servidor, ves que facil se vuelve? */
?>
Hola kenlogo,
cuanto tiempo?

pues lo que no entiendo es para que sirve todo esto, tienen algun uso en especial, o se usa para algun tipo de script?


nosaber
Si pues, de hecho, quienes mas lo utilizan son los sistemas de foros, por ejemplo phpBB usa programacion orientada a objetos, al igual que vBulletin, porque asi es mas simple, se declara todo en una sola clase y luego lo unico que debes hacer es llamar a la funcion que quieras.
PHP Orientado a Objetos (POO) - Metodo Constructor
Recuerdan que cuando llamabamos a una clase, por ejemplo: $mundo = new HolaMundo() ? Ven que no le ponemos parametros a esa clase entre los parentesis?
Ahora, vamos a aprender a hacerlo, con el metodo __construct
Class BaseDatos {
private $dbhost;
private $dbuser;
private $dbpass;
private $db;
public function __construct($server,$usuario,$passwd,$base)
{
$this->dbhost = $server;
$this->dbuser = $usuario;
$this->dbpass = $passwd;
$this->db = $base;
mysql_connect($this->dbhost, $this->dbuser, $this->dbpass);
mysql_select_db($this->db);
}
}
Que es lo nuevo en esta clase?
La linea:
public function __construct($server,$usuario,$passwd,$base)
Asi se definen los parametros para una clase, primero de todo, la funcion tiene que ser publica, segundo, debe llamarse __construct (dos guiones bajos) y tercero, debe declararse antes que cualquier otra funcion, es decir, debe ser la primera funcion de la clase, haciendolo de este modo, la usariamos asi:
$BD = new BaseDatos('localhost','root','','desarrollos');
E inmediatamente estariamos conectados a nuestra base de datos.
Hola! bueno xD me llego un comentario de un usuario sobre las lecciones php, xD y me dijo que no entendió NADA! XD entonces les intentare explicar un poco mas paso a paso primero que nada

POO sigifica Programación Orientada a Objetos, este es un tipo diferente al que habiamos visto que era ESTRUCTURADO, es decir solo se hacia la estructura del programa, la mayoria de los lenguajes usan POO por lo que es bueno acostumbrarse...

ahora como su nombre lo dice POO define objetos y les da parámetros o propiedades es decir creo un objeto:
Class Caja{

}
ahi creamos una bonita cajita =D ahora vamos a definirla las definiciones se hacen con function ya sea publica (public) o privada (private) como ya lo explico kenichi

ahora definamosla

Class Caja{
 public function Parametros(){
  $this->ancho = "la caja mide 150 cm de ancho";
  $this->alto = "la caja mide 150 cm de alto";
  //mostramos las dos variables
  echo $this>ancho;
  echo $this>alto;
 }
}

$caja = new Caja();
$caja->parametros;

expliquemos paso a paso

Class Caja() nos crea un objeto llamado caja
public function Parametros crea una propiedad a la caja en este caso ancho y alto

$this-> nos ayuda a definir las variables entonces definimos el ancho y el alto
y luego los mostramos con echo $this->variable

ahora OJO las clases NUNCA SE EJECUTAN SOLAS es decir si yo pongo:

Class Caja{
public function Parametros(){
$this->ancho = "la caja mide 150 cm de ancho";
$this->alto = "la caja mide 150 cm de alto";
//mostramos las dos variables
echo $this>ancho;
echo $this>alto;
}
}

no pasara nada!! porque? porque para eso sirven las clases son como includes xD las clases deben ser llamadas, y como se llama a una clase?

con una variable + new + clase
osea
$caja = new Caja(); caja llama al objeto Caja

cuando hacemos esto $caja ya es igual que el objeto Caja es decir se fusiono o se transformo en el objeto

ahora nomas falta llamar a las funciones o los parametros que tenga el objeto en este caso se llaman "parametros"

y nos quedará asi:

$caja = new Caja();
$caja->parametros;

que hace esto ultimo? pues llama a public function Parametros() y hace las funciones que tiene dentro osea primero define las variables alto ancho y despues las muestra esto tal vez te parezca inutil y estupido pero jaja xD perdon la expresion, pero enrealidad es muy util una vez que sabes utilizar, si no entiendes nada es normal, ami tambien me paso, fue mi punto debil el POO pero una vez que estudias ochomil lenguajes distintos pues algo se te queda xD es cosa de practicar y practicar hasta que te acostumbres a ver codigos raros y aprendas a estudiarlos saludos ;)
Hola,

aaaaaaa

pero sigo sin entender para que sirve,

poner algun ejemplo, de algun script en que se tenga que usar eso.

nosaber
kaotick escribió:Los dos sirven para lo mismo, al final no puse como verlo, aqui lo dejo:
<?php
$fp=fopen("datos.txt","r") or
die("No se pudo abrir el archivo");
while (!feof($fp))
{
$linea=fgets($fp);
$lineasalto=nl2br($linea);
echo $lineasalto;
}
fclose($ar);
?>
Lo primero es abrirlo con fopen("archivo","forma") "r" es decir read (apertura para lectura), despues la función feof retorna true si se ha llegado al final del archivo en caso contrario retorna false. Y despues nl2br, que crea por linea del archivo,un salto de linea (new line to br).Eso es todo.
Hola,

si no quitas el fclose($ar);
no funciona...probado cientificamente!
y aho mas cosas jaja

Link, se pueden activar las cookies localmente???


nosaber
KenLego escribió:Eso es porque linkgl se confundio con los nombres de las variables, al principio puso: $fp = fopen()... pero despues puse fclose($ar)
Es bastante obvio el error cierto?

bueno, yo lo probe quitandolo...yo entiendo solo pocas cosas y las que puedo kenichi jejeje...yo lo entinedo pero entre el adn en biologia i el php como que no me da jejejejejejejej

oye kenichi, los cookis se pueden activar localmente!


nosaber
ola chicos que tal :D :D he encontrado muy interesante vuestros tutoriales asique seguir explicandolo asi de bien xD queremos mas tutos!! por cierto tengo un par de dudas.. si mezclamos html (supongamos el index.html de mi web) con php... tendria que pasar a llamar a index.html en index.php para hacer funcionarlo?¿ y otra preguntilla.. mi hosting tiene una base de datos mysql y tiene el foro dentro de esa base de datos.. puedo modificarla y hacer más tablas agenas al foro (sin dañar el foro claro xD)?¿ graciass por vuestra atención y ánimo con los tutos que casi os aconsejo montar una web xD aahh y otra preguntita.. si tenemos dos archivos como los del ejemplo de uno de los formularios de la tuto.. formulario.php y insertar.php que hacemos con ellos.. en ese caso no hay que hacer nada con la base de datos no? insertar php iria insertado en una pagina .html y la pasariamos a llamar .php no? perdonar mi ignorancia :roll:
CineExtreme escribió:ola chicos que tal :D :D he encontrado muy interesante vuestros tutoriales asique seguir explicandolo asi de bien xD queremos mas tutos!! por cierto tengo un par de dudas.. si mezclamos html (supongamos el index.html de mi web) con php... tendria que pasar a llamar a index.html en index.php para hacer funcionarlo?¿ y otra preguntilla.. mi hosting tiene una base de datos mysql y tiene el foro dentro de esa base de datos.. puedo modificarla y hacer más tablas agenas al foro (sin dañar el foro claro xD)?¿ graciass por vuestra atención y ánimo con los tutos que casi os aconsejo montar una web xD aahh y otra preguntita.. si tenemos dos archivos como los del ejemplo de uno de los formularios de la tuto.. formulario.php y insertar.php que hacemos con ellos.. en ese caso no hay que hacer nada con la base de datos no? insertar php iria insertado en una pagina .html y la pasariamos a llamar .php no? perdonar mi ignorancia :roll:

Holaaa!

intentare esponderte todo lo que yo puedaa!!

-si tienes una pagina con php, para qeu funcione tiene que ser *.php


-Puedes modificar la base de datos, siempre y cuadno sepas modificar el foro entero, en su html...

-Los formularios no recueren una base de datos...normalmente, las bases se usan para guardar informacion donde adelante sera usada para algo.

-Si! te digo, una pagina para que funcione con php, teine que ser *.php Y si pones php en tu index.html, para que funcione tiene que ser index.php


Espero haberte ayudado ;)

nosaber
para nosaber sabes bastante xD bueno falta por contestar la de la base de datos que creo que no llegaste a entenderme.. solo tengo una base de datos myqsl y en ella tengo el foro dentro... pero pregunto si puedo modificarla para hacer mas tablas pero no exactamente para el foro si no para otros proyectos.. es decir tener en una misma base de datos un foro, tablas para encuestas, etc eso si sin afectar al foro... gracias por tu rapida respuesta llevo solo un dia con el php y lo voy entendiendo pero me van surgiendo las preguntas mas estupidas jajaj gracias :lol:
si los formularios no requieren una base de datos.. donde guardan lo información de los votos que se va acumulando, las medias y demás, me explico.. si yo voto ese voto necesita guardarse para a continuación hacer una media con los votos anteriores (que supongo se guardaran) sino seria votar por votar digo yo xD o se guardan en otro lado que no sea la base de datos? gracias y saludos :wink:
Si puedes usar esa base de datos dejando intacto tu foro, una base de datos tiene tablas, y en las tablas es donde se guarda la informacion, adentro de la base, para usar esa base de dato solo crea otra tabla dentro de ella y nada mas
gracias ya he hecho las tablas :P primer paso echo aora a practicar php
gracias a todos y segir con los tutoriales

saludos!!
Hola,

bueno, s me adelanteo Kenichi, digo...KenLogo jaja

bueno, que te vaya bien, siento no responderte antes, no tenog internet enc asa y rara vez me coneocto


nosaber
linkgl escribió:o es cierto si esque la verdad eh andado bastaaaaaaante ocupado con esto de regresar ala escuela dejan mucha tarea aparte tengo un trabajo de traducir un programa en otro foro ando traduciendo el photoshop CS4 BETA y pues lleva algo de tiempo...


No eh explicado los ciclos repetitivos si quieres puedes explicarlos
while for etc me harias un gran favor :D

hola buenisimo tu post men justo me estava matando la cabeza buscando al go como esto pana quiero crear un sistema de comentarios para mi web que por cierto trata de lo mismo q la tulla y la del pana de arriba quisiera compartir trafico con ustedes ya que somos del mismo tema...
bueno si me puedes enseñar te lo agradeceria !!!! :wink: :wink: :wink:
no me anda, me preguntaba si sera por lo que dices de darle permisos 777 a la carpeta imagenes, como se hace eso?gracias. muy bueno el tuto.
Hola:

He intentado poner un formulario sencillo PHP siguiendo la instruciones de este foro, pero cuando le doy a enviar me dice que se ha enviado pero no me llega ninngún email, lo probé en un hosting de pago que tengo y funciona pero en zobyhost que es gratuito y dicen que soporta PHP y MySQL no me funciona, ¿alguien sabe porque o tendré que cambiar de hosting?
Ahora me funciona aunque tardan un huevo en llegarme los mensajes y ademas no me sube las imagenes, voy a cambiar el hosting pero de momento os dejo el codigo del formulario por si alguno que sepa de esto me dice si esta bien o que es lo que falla.

<form action="concentras.php" method="post" enctype="multipart/from-data">
<fieldset><legend>Datos de la concentración</legend> 
		<table width="650" align="center" >
         <tr><td width="250" align="right">Nombre de la concentración:</td><td><input type="text" name="concentracion" size="50" /></td></tr>
         <tr><td width="250" align="right">Comunidad Autónoma:</td><td><select name="comunidad">
                <option selected="selected" value="0">Selecciona una comunidad</option>
                <option value="Andalucía">Andalucía</option>
                <option value="Aragón">Aragón</option>
                <option value="Asturias">Asturias</option>
                <option value="Baleares">Baleares</option>
                <option value="Canarias">Canarias</option>
                <option value="Cantabria">Cantabria</option>
                <option value="Castilla_La_Mancha">Castilla La Mancha</option>
                <option value="Castilla_Leon">Castilla León</option>
                <option value="Cataluña">Catalu&ntilde;a</option>
                <option value="Ceuta">Ceuta</option>
                <option value="Euskadi">Euskadi</option>
                <option value="Extremadura">Extremadura</option>
                <option value="Galicia">Galicia</option>
                <option value="La_Rioja">La Rioja</option>
                <option value="Madrid">Madrid</option>
                <option value="Melilla">Melilla</option>
                <option value="Murcia">Murcia</option>
                <option value="Navarra">Navarra</option>
                <option value="Valencia">Valencia</option>
              </select>
            </td></tr>
          <tr><td width="150" align="right">Provincia:</td><td><input type="text" name="provincia" size="50" /></td></tr>
          <tr><td width="150" align="right">Población:</td><td><input type="text" name="poblacion"  size="50" /></td></tr>
          <tr><td width="150" align="right">Fechas:</td><td><input type="text" name="fechas" size="15" /></td></tr>
		  <tr><td width="150" align="right">Teléfono:</td><td><input type="text" name="telefono" size="20" /></td></tr>
		  <tr><td width="150" align="right">Email:</td><td><input type="text" name="email" size="20" /></td></tr>
		  <tr><td width="150" align="right">Web:</td><td><input type="text" name="web" size="20" /></td></tr>
		  <tr><td width="150" align="right">Precio:</td><td><input type="text" name="precio" size="15" /></td></tr>
		  <tr><td width="150" align="right">Foto cartel:</td><td><input type="file" name="cartel" size="40" /></td></tr>
	  </table>
		  <p class="center"> <input name="submit" type="submit" value="ENVIAR" />
                    <input name="reset" type="reset" value="LIMPIAR" /></p>
	  </fieldset>
	   </form>
Hola tengo una pregunta, mira yo hago lo que decis para el caso de subir una imagen, pero me saltan estos errores:

Warning: move_uploaded_file(imagenes/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/estudioy/public_html/upload.php on line 12

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpStBwYz' to 'imagenes/' in /home/estudioy/public_html/upload.php on line 12

yo cree la carpeta imagen en el mismo directorio de los archivos php, osea

formulario.php
upload.php
imagenes

espero puedan ayudarme!! muchas gracias!!
Hola tengo una pregunta, mira yo hago lo que decis para el caso de subir una imagen, pero me saltan estos errores:

Warning: move_uploaded_file(imagenes/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/estudioy/public_html/upload.php on line 12

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpStBwYz' to 'imagenes/' in /home/estudioy/public_html/upload.php on line 12

yo cree la carpeta imagen en el mismo directorio de los archivos php, osea

formulario.php
upload.php
imagenes

espero puedan ayudarme!! muchas gracias!!