editar una fila de una bd

ItNaS

necesito q alguien me diga como editar una celda de una tabla de una base de datos. Yo lo q hago es q al clicar en el dibujito de editar (xD) me vaya a un nuevo archivo llamado editnew.php en el q cogiendo la id mediante get me haga el formulario como si lo vaya a escribir, con el valor inicial q hay en la base de daos xa q se pueda editar. pero cuando le das al submit que es lo tendria q poner:S?
yo habia pensao en borrar la q habia y añadir la nueva xo no me qdaria con el id q habia antes. no se acer.

AcidNos

Con un update vale. No se como te complicas tanto la vida

ItNaS

$sql = "UPDATE INTO noticias VALUES('','$titulo','$noticia','$categoria','','$data')";
mysql_query($sql)

asi?

Whose

Creo que necesitas leerte un poco de consultas MySQL
http://www.php-hispano.net/archivos/Articulos/220/1/Consultas-MySQL1.html

ItNaS

ok ya lo he hecho.
otra cosa:

$sql = "SELECT titulo, noticia FROM noticias WHERE id='$id'";
mysql_query($sql) or die (mysql_error());

como se llama lo q hay dentro de las celdas titulo y noticia?

minipelos

$sql = "SELECT titulo, noticia FROM noticias WHERE id='$id'";
$result = mysql_query($sql)
if (!$result) die (mysql_error());

$row = mysql_fetch_row($result);

echo $row[0]; // titulo
echo $row[1]; // noticia

seria $row[el nº de la columna];

creo que es asi, nunca he trabajado (todavia) con mysql, he ido siempre por odbc. ahora la pregunta la lanzo yo... no hay algo mas facil como por ejemplo el odbc_result($exc,'columna'); es decir, que se ponga el titulo de la columna y no el numero pero para mysql?

Abreu

Tienes mysql_fetch_array para acceder así:

$Q = mysql_query("SELECT id,nick FROM miembros WHERE id=1");
$q = mysql_fetch_array($Q);
echo $q["id"];
echo $q["nick"];

Tambien lo puedes hacer sin crear el array (como haces con odbc):

$Q = mysql_query("SELECT id,nick FROM miembros WHERE id=1");
echo mysql_result($Q,"id");
echo mysql_result($Q,"nick");

uNbiG

dice de editar po lo tanto lo que tienes que hacer es un simple update
mysql_query("UPDATE tabla SET campo='$valor', campo1='$valor1' WHERE id='$_GET[id]'");

para sacar el valor de las celdas es por mysql_fetch_array

$ds = mysql_fetch_array(mysql_query("SELECT * FROM noticias WHERE id='$id'"));

$ds[campo];

$ds el array
[campo] el nombre del campo que tienes en la tabla

espero ayudarte en algo xd

ItNaS

gracias a todos

minipelos

abreu, gracias lo que pasa es que, segun he leido, almacenar en array es mas rapido pues mysql_result cada vez que lo llamas hace una consulta si no me equivoco no?

gracias por lo de fetch array, voy tomando apuntes para cuando me ponga con mysql jeje :)

E

#3 UPDATE INTO? ? ? ?! SEGUIDO??? DEL TIRON?? xD
SQL ANSI seguro que no es eso.

ItNaS

tengo otra duda. al crear una noticia kiero q se cree tb una nueva tabla xa los commentarios, la tabla kiero q se llama comment$id. pero el problema esta q no se como obtener la $id justo despues de haberse creado la nueva fila con esa id para crear la nueva tabal del comment. yo hbia pensao en esto:

if ($POST[addnoticia]){
$noticia = $
POST[noticia];
$titulo = $POST[titulo];
$categoria = $
POST[categoria];
if (!empty($noticia) && !empty($titulo) && !empty($categoria)){
$data = date("m/d/Y H:i",time());
$sql = "INSERT INTO noticias VALUES('','$titulo','$noticia','$categoria','','$data')";
mysql_query($sql) or die (mysql_error());
$sql = "SELECT id FROM noticias WHERE data='$data'";
$datos = mysql_query($sql);
mysql_query($sql) or die (mysql_error());
$row = mysql_fetch_row($datos);
$id= $row[id];
$sql = 'CREATE TABLE coment'.$id.' (id INT NOT NULL AUTO_INCREMENT, nombre TINYTEXT NOT NULL, coment TEXT NOT NULL, data TINYTEXT NOT NULL, ip TINYTEXT NOT NULL, PRIMARY KEY (id) )';
mysql_query($sql) or die (mysql_error());
$resultado = "<br><center class=\"verde\">Noticia introducida correctamente.</center><br>";
} else {
$resultado = "<br><center class=\"rojo\">Por favor, introduce todos los datos de la noticia.</center><br>";

minipelos

a ver, primero, el INSERT no lo veo muy correcto

hazlo asi mejor:
$sql = "INSERT INTO noticias (id,titulo,noticia,categoria,data) VALUES ($id,'".$titulo."',".$categoria.",".$data.")";

en cuanto al resto no voy a andar metiendo codigos ahora porque no apetece mucho, pero weno, estructuremos las cosas...
por lo que veo tienes la tabla de noticias con las columnas titulo, noticia, categoria y data. añade la de id para tener un id de cada noticia y que cada noticia lo tenga único.

luego pon otra tabla que sea comentarios_noticias con los campos id (para enlazar con la id de la noticia), data, nombre, coment. y enlazas por la id. no hagas un create table porque si ya existe va a estar dandote fallos de que ya existe, tenla ya creada mejor. luego lo sacas con select * from comentarios_noticias where id=".$id;

vamos, yo veo mejor uso asi que andar haciendo una tabla nueva por cada noticia, yo creo que mejor una sola para todos los comentarios.

otra cosa, el uso de INSERT es este:
INSERT INTO tabla (columna1,columna2,columna3...) VALUES (valor1,valor2,valor3...)

y para editar pues como ya ha dicho #8

ItNaS

minipelost explico como lo he hecho yo:
escribiendo VALUES('','$titulo','$noticia','$categoria','','$data') el php ya pilla en q columana va caad dato y el hecho q haya al principio un '' significa q hay no se mete nada xq es el campo de la id con autoincrement. a cadaa noticia q meto me pone una id un numero ams grande y lo q pretendo es crear una tabla de comment para cada noticia q se llame comment$id (x ejemplo comment56) el caso esq no se sacar el valor de la $id de la noticia acabada de meter para llamar a la tabla q se crea 'comment".$id."'

erdanblo

Asco de media-vida con tó el código hay al montón, ponerlo en el www.pastebind.com o lo que sea, que da una pereza leer... buff

minipelos

ARGH como me jode esto a veces, acabo de escribir una parrafada, le doy a submit y pasa de mi, vuelvo atras y desaparece... en fin a lo que iba...

si se supone que va incrementando a cada noticia nueva lo mas lógico es que la id mas alta fuese de la noticia mas reciente...

yo haría algo así:
$q=mysql_query("select * from noticias order by id");
$id=mysql_result($q,"id");

yo no haria una tabla nueva por cada noticia introducida... meteria todos los comentarios en la misma tabla con su respectiva id de noticia, pero bueno, como se suele decir, cada maestrillo tiene su librillo. si lo vas a hacer así no olvides que cuando borres una noticia debes borrar la tabla tambien. te pongo un ejemplo:

acabas de crear la noticia 20... en consecuencia la tabla coment20. si borras esa noticia a la hora de crear una nueva noticia va a volver a tomar el 20 (si es la ultima que creaste claro) intentara crear la tabla coment20... por eso no olvides borrar tabla si borras noticia

erdanblo

Noticias + Comentarios:

Base de datos: mi_db
|
|____ TABLA1: noticias
Id, autor, noticia, fecha, ip, etc...
|
|_____ TABLA2: comentarios
Id, id_noticia,autor, noticia, fecha, ip, etc...

¿Como saco los comentarios para cada noticia?

Pués tendremos que tener una url tipo noticias.php?id=n donde n es un número que vamos a coger con $_GET[id], y luego lo vamos a mostrar los comentarios buscando la id en la tabla comentarios en el campo id_noticia:

$leer_com = mysql_query("SELECT * FROM comentarios WHERE id_noticia='$_GET[id]'");

http://www.maestrosdelweb.com/editorial/comphp/

minipelos

#17 me refiero una tabla de comentarios, (esa idea ya la mencioné antes...) no en la misma de noticias :P

minipelos

#19 es lo mismo que digo yo :S

yo me refiero a NO crear una TABLA por cada noticia creada, si no a crear una única tabla de comentarios donde ir añadiendo cada comentario...

no entiendo porque dices lo de #17

erdanblo

Descuida que yo tampoco lo entiendo, como he dicho, estoy dormido ya^, ahora mismo escribe mi subconsciente, asi que borro y punto ^^

Buenas noches

Soltrac

Yo no se PHP pero si BBDD y crear una tabla de comentarios por cada noticia es una brutalidad.

Tal y como te explica erdanblo

Cada noticia tiene una idNoticia :)

Tabla Noticias: idNoticia, blablablabla

Cada comentario tiene un idComentario que sera un identificador unico que se vaya aumentando en uno y un idNoticia que será el idNoticia al q vaya asociada.

Por lo tanto.....como te han explicado antes...para sacar los comentarios de uan noticia es un

SELECT * FROM Comentarios WHERE idNoticia=5 P ej :)

Y ahi tienes TODOS los comentarios de la noticia 5.

Para agregar comentarios a la noticia 5 pos:

INSERT INTO Comentarios(idNoticia,blablabla....) VALUES (5,blablabla....)

PD: A mi entender, todos los q aprendeis PHP asociais PHP a SQL y si, estan intimamentes relacionados, pro son conceptos diferentes e intentar aprenderlos a la vez es una locura y crean lios como estos. Lo primero es aprender SQL y luego...el lenguaje q te de la gana :)

ItNaS

gracias

uNbiG

itnas si tienes mas duda sobre ese tema posteo yo xd

Usuarios habituales

  • uNbiG
  • ItNaS
  • Soltrac
  • erdanblo
  • minipelos
  • Abreu
  • AcidNos