Foros del Web » Programando para Internet » PHP »

Retornar y grabar datos de mi BD

Estas en el tema de Retornar y grabar datos de mi BD en el foro de PHP en Foros del Web. Hola a todos, estoy creando un sistema de comentarios todo va bien hasta el último paso que es grabar los datos en el documento .PHP ...
  #1 (permalink)  
Antiguo 20/12/2013, 18:11
Avatar de eduardobrutaldeath  
Fecha de Ingreso: agosto-2013
Ubicación: América
Mensajes: 306
Antigüedad: 11 años, 4 meses
Puntos: 3
Retornar y grabar datos de mi BD

Hola a todos, estoy creando un sistema de comentarios
todo va bien hasta el último paso que es grabar los datos en el documento .PHP
Antes de trabajar con base de datos ya había hecho un sistema de comentarios pero usando un documento de texto (.txt) como almacén; trabajé con fopen, fwrite y fgets. Aquí les dejo un resumen de mi código:

Envío de datos
Código HTML:
Ver original
  1. <form method="post" action="receptor.php">
  2.             <input type="text" name="nome" />
  3.             <textarea name="comm"></textarea>
  4.             <input type="submit" value="Consultar" />
  5. </form>

Recepción de datos
Código PHP:
Ver original
  1. <?php
  2.         echo $_POST['nome'];
  3.         echo $_POST['comm'];
  4. ?>
Cuando ingreso el código de arriba sólo grabo datos temporalmente, cuando recargo la página se borran, por eso quiero usar base de datos, aunque como dije, también lo hice con fgets (según he esuchado con BD es más profesional y seguro). El que sigue es mi código para guardar la info en los campos de la tabla de mi base de datos

Código PHP:
Ver original
  1. $rel = mysql_connect('localhost','root','**********');
  2. mysql_select_db('loquesea', $rel);
  3. mysql_query("INSERT INTO comentarios(nome,comm) VALUES('$_POST[nome]','$_POST[comm]')", $rel);
Hasta ahí todo bien, los datos se graban con éxito, pero sólo en la base de datos porque en la página se siguen desapareciendo si actualizo... estuve averiguando y con la instrucción SELECT * puedo seleccionar los campos de mi base de datos y mostrarlos de forma permanente en mi página. Quisiera que alguien con conocimientos me diera los códigos y me explicara como funciona SELECT, y como hago para grabar el campo nome y comm en mi página; también si pueden me explican por favor eso de FETCH_ARRAY que no entiendo muy bien, he estado viendo algunos tutoriales pero, los maestros no son tan buenos enseñando, no saben explicar, no les he entendido, todo lo hacen de paporreta, espero tener mejor suerte aquí :)
  #2 (permalink)  
Antiguo 20/12/2013, 19:12
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 7 meses
Puntos: 320
Respuesta: Retornar y grabar datos de mi BD

Aver aver, antes que nada, no soy un maestro asi que si no me entiendes no me molestara.

Partiremos de lo basico de lo basico. en la web tienes 3 partes importantes: El CLIENTE(HTML, CSS, JS) EL SERVIDOR(PHP, HTACESS) Y LA BD(MYSQL,SQLITE). estas tres partes son independientes unas de otras, por lo tanto hacer que se relacionen tiene ciertas vueltas.

Lo que a ti te interesa es la relacion SERVIDOR - BASE DE DATOS asi que te explicare solo esa.

en PHP tienes temporales, datos que desaparecen al finalizar la ejecucion y en MYSQL tienes datos permanentes. con INSERT/UPDATE/DELETE puedes hacer que tus datos temporales php se guarden de forma permanente, es decir que los datos van de PHP---->MYSQL

eso ya lo hiciste, ahora lo que nesesitas es lo opuesto, que los datos permanentes vallan a php osea MYSQL--->PHP eso se hace con consultas SELECT.

vamos al codigo que ya me aburri de escribir zarasa

Código PHP:
Ver original
  1. $rel = mysql_connect('localhost','root','**********'); // con esto php le dice a mysql quien es y le pide que le deje acceder a los datos permanentes
  2. mysql_select_db('loquesea', $rel); // con esto php le pide a mysql que le deje ver los datos permanentes de una base particular
  3. mysql_query("INSERT INTO comentarios(nome,comm) VALUES('$_POST[nome]','$_POST[comm]')", $rel); // con esto php le dise a mysql lo que quiere que haga
  4. mysql_close($rel); // con esto le dise a mysql que ya no va a hacer mas nada

en tu caso quieres traer datos, por lo tanto debes pedirle a mysql que te devuelva los comentarios

Código PHP:
Ver original
  1. $resultados = mysql_query("SELECT * FROM comentarios");

Genial!! los datos permanentes de mysql ahora son temporales y estan en $resultados. pero.. como los accedes?

Código PHP:
Ver original
  1. while ($unComentario = mysql_fetch_array($resultado)) { //con esto recorres los comentarios, en cada vuelta del while $unComentario tendra un comentario diferente de los que se guardaron
  2.     // aca puedes hacer lo que quieras con tus comentarios
  3.    echo($unComentario['nome'].'-->'.$unComentario['comm'].'<hr>');
  4. }

$resultado tiene todos los comentarios, con mysql fetch array obtienes uno solo de estos comentarios y te permite hacer cualquier cosa, en el ejemplo los muetra
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 20/12/2013, 19:37
Avatar de eduardobrutaldeath  
Fecha de Ingreso: agosto-2013
Ubicación: América
Mensajes: 306
Antigüedad: 11 años, 4 meses
Puntos: 3
Respuesta: Retornar y grabar datos de mi BD

Cita:
Iniciado por NSD Ver Mensaje
en tu caso quieres traer datos, por lo tanto debes pedirle a mysql que te devuelva los comentarios

Código PHP:
Ver original
  1. $resultados = mysql_query("SELECT * FROM comentarios");

Genial!! los datos permanentes de mysql ahora son temporales y estan en $resultados. pero.. como los accedes?

Código PHP:
Ver original
  1. while ($unComentario = mysql_fetch_array($resultado)) { //con esto recorres los comentarios, en cada vuelta del while $unComentario tendra un comentario diferente de los que se guardaron
  2.     // aca puedes hacer lo que quieras con tus comentarios
  3.    echo($unComentario['nome'].'-->'.$unComentario['comm'].'<hr>');
  4. }

$resultado tiene todos los comentarios, con mysql fetch array obtienes uno solo de estos comentarios y te permite hacer cualquier cosa, en el ejemplo los muetra
Muchas gracias por la explicación, me funcionó muy bien, espero en algún momento entender al revés y al derecho el FETCH ARRAY y no estar copiando el código de otra persona.... Voy a estudiar más, por suerte ya voy a empezar mi curso de php.

Algo más que aprovecho para preguntarte es... como te dije, con el código que me has dado está bien, se están guardando los cambios en mi página pero, cada vez que actualizo el navegador se reinsertan los datos, es decir, si refresco y refresco la página se insertan una y otra vez los datos sin que yo los haya metido de nuevo en el formulario, eso no pasa por ejemplo en este foro o en otros, o sea que algo debe estar mal en mi código, o me falta dar una instrucción ¿no?
  #4 (permalink)  
Antiguo 21/12/2013, 06:16
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 9 meses
Puntos: 96
Respuesta: Retornar y grabar datos de mi BD

Tienes que separar la parte.donde guardas los datis de la que los muestra
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #5 (permalink)  
Antiguo 21/12/2013, 08:17
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 7 meses
Puntos: 320
Respuesta: Retornar y grabar datos de mi BD

En este foro no pasa por varias razones que nada tienen que ver con mysql (o quizas alguna si, no se como esta armado) en principio una persona no puede dar de alta un mensaje si no pasaron 30 segundos desde su ultima insercion.

esto lo puedes hacer guardando en $_SESSION el timestamp de cuando se guardo y antes de guardar comprar contra eso.

otra cosa que hace el foro es redireccionar, cuando das de alta un tema te redirecciona, de esta manera no quedan rastros de las variables y no es posible reinsertar actualizando.

otra cosa que hace es que estos comentarios se envian por ajax, por lo que no recargar la pagina no tiene ningun sentido.

hay muchas cosas que se pueden hacer pero te recomiendo que profundices bien un tema antes de empezar con otro. no se trata de saber poco de mucho, sino de saber lo que estas haciendo, si no sabes lo que estas haciendo ahora y las cosas funcionan ten cuidado porque ademas de hacer lo que tu quieres, pueden estar haciendo otra cosa que no quieras sin que lo notes y eso es peligroso
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #6 (permalink)  
Antiguo 21/12/2013, 11:02
Avatar de eduardobrutaldeath  
Fecha de Ingreso: agosto-2013
Ubicación: América
Mensajes: 306
Antigüedad: 11 años, 4 meses
Puntos: 3
Respuesta: Retornar y grabar datos de mi BD

Cita:
Iniciado por NSD Ver Mensaje
En este foro no pasa por varias razones que nada tienen que ver con mysql (o quizas alguna si, no se como esta armado) en principio una persona no puede dar de alta un mensaje si no pasaron 30 segundos desde su ultima insercion.

esto lo puedes hacer guardando en $_SESSION el timestamp de cuando se guardo y antes de guardar comprar contra eso.

otra cosa que hace el foro es redireccionar, cuando das de alta un tema te redirecciona, de esta manera no quedan rastros de las variables y no es posible reinsertar actualizando.

otra cosa que hace es que estos comentarios se envian por ajax, por lo que no recargar la pagina no tiene ningun sentido.

hay muchas cosas que se pueden hacer pero te recomiendo que profundices bien un tema antes de empezar con otro. no se trata de saber poco de mucho, sino de saber lo que estas haciendo, si no sabes lo que estas haciendo ahora y las cosas funcionan ten cuidado porque ademas de hacer lo que tu quieres, pueden estar haciendo otra cosa que no quieras sin que lo notes y eso es peligroso
Hola,
sí, como te dije, a mi no me gusta hacer las cosas sin saber, no me gusta copiar el código de otras personas, hace mucho que dejé de hacer eso en html y css, pero, en php todavía tengo nivel básico, estos son los temas que he estudiado y domino relativamente bien:

Impresiones (echo, print)
Variables y tipos
Constantes
Concatenaciones
Caracteres de escape
Arrays (simple, predefinido, asociativo, moderno, multidimensional)
Operadores
Condicionales (if, else, else if)
Switch
Bucles (while, for, do while)
Foreach y Vardump
Inclusiones (include, require, _once)
Functions
Get y Post

Yo pensé que con eso ya tenía un nivel considerable pero, me he dado cuenta de que mi nivel es bajo. Sobre todo tengo problemas a la hora de querer imitar un foro, se me hace difícil, eso de las sesiones, envió de correos, coockies, etc; y eso que me falta aprender PHP orientado a objetos, pero todavía no quiero pasar a esos temas sin dominar bien lo del envío y recepción de datos de formularios. ¿Qué temas consideras son más importantes en php? ¿Qué me recomendarías estudiar para dominar el tema de los formularios, foros, etc?

Etiquetas: bd, mysql, retornar, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:41.