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.
$sql = "UPDATE INTO noticias VALUES('','$titulo','$noticia','$categoria','','$data')";
mysql_query($sql)
asi?
Creo que necesitas leerte un poco de consultas MySQL
http://www.php-hispano.net/archivos/Articulos/220/1/Consultas-MySQL1.html
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?
$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?
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");
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
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
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>";
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
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."'
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
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
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]'");
#17 me refiero una tabla de comentarios, (esa idea ya la mencioné antes...) no en la misma de noticias
Descuida que yo tampoco lo entiendo, como he dicho, estoy dormido ya^, ahora mismo escribe mi subconsciente, asi que borro y punto ^^
Buenas noches
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