Foros del Web » Programando para Internet » PHP »

SQL query

Estas en el tema de SQL query en el foro de PHP en Foros del Web. Hola Mi problema es un poco complicado y espero que me pueda explicar correctamente. Estoy diseñando un sitio que despliega fotos que son guardas en ...
  #1 (permalink)  
Antiguo 19/10/2004, 07:11
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta SQL query

Hola
Mi problema es un poco complicado y espero que me pueda explicar correctamente.
Estoy diseñando un sitio que despliega fotos que son guardas en una base de daros de forma binaria, junto con las fotos se despliegan en el archivo php una corta descripción de la foto.
Lo que yo quiero lograr, es una manera de ingresar valores enteros en html tags para cambiar el orden de cómo se despliegan las fotos en el archivo html/php.
Para esto, uso un while para ir loopiando en la base de datos, y así voy mostrando todas la fotos que esta en la bd.

Aquí va una parte del script:

Código:
result=mysql_query("SELECT * FROM imagen") or die("algo está  muy mal");//para loopiar en el while

$result2=mysql_query("SELECT des1 FROM imagen") or die("algo está  muy mal");//para imprimir los textos

$result3=mysql_query("SELECT orden FROM imagen") or die("algo está  muy mal");//para imprimir los textos

print "<form method='post' action='file.php'>
       <table border='1' align='left' cellpadding='2'  cellspacing='0'>
       <tr>
           <td>
               <p align='center'>foto</p>
           </td>
           <td>
               <p align='center'>des1</p>
           </td>
           <td>
               orden
           </td>
           <td>
               <p align='center'>nuevo orden</p>
           </td>
       </tr>
       <tr>";
$i=1;
$counter = 0;
While($row=mysql_fetch_object($result)) {
      $des1=mysql_fetch_object($result2);
      $orden= mysql_fetch_object($result3);
      print "<td>
                 <IMG SRC=\"header.php?PicNum=$row->PicNum\" border=\"0\" high=\"200\" width =\"100\">
            </td>
            <td>
                 <p align='center'>$des1->des1</p>
            </td>
                 <td><p align='center'>$orden->orden</p>
            </td>
            <td>
                 <p align= 'center'><input type='text' name='newO".$i++."'size='1' value=0 maxlength='15'></p>//miren el valor newO
            </td>";
            $counter += 1;

            if ($counter == 1){
                print "</tr>";
                $counter =0;
                }

}
print"</tr></table>";

for($i=0;$i<=87;$i++){
        print "<br/>";
        }
print"<input type='submit' name='orden' value='ir'></form>";

if($_POST['orden']){
//********************AQUÍ ESTÁ EL PROBLEMA CREO**************
$k=1;
$result=mysql_query("SELECT * FROM imagen") or die("algo está  muy mal");

while($row=mysql_fetch_object($result)){
      $n = $newO.$k;
       mysql_query("UPDATE imagen SET orden = $n WHERE PicNum = PicNum LIMIT 1") or die ("no podes pibe ".mysql_error());
       $k++;
       }
}
//******************************************************************
?>
Lo que estoy haciendo aquí es mostrar la foto junto con la descripción de la misma y un input text tag que sirve para ingresar los valores que cambiarán el orden de cómo aparecen las fotos en el html.
Yo creo que mi error está en esta linea: “mysql_query("UPDATE imagen SET orden = $n WHERE PicNum = PicNum LIMIT 1") or die ("no podes pibe ".mysql_error());” el valor $n no lo está tomando, cuando escribo un número en el campos y hago el submit, el valor “orden” no cambia en la bd.
“newO” es el nombre de los campos de texto, pero uso un “newO.$i++” para ir creando newO1, newO2, etc.
Si yo cambio $n por newO en el query, cambia el valor del primer campo de texto pero claro está, no de los otros, necesito crear una manera que sirva para todos y que sea independiente al número de fotos que halla en la bd.

Espero haberme explicado bien

Puden encontrar o que estoy haciendo en http://lafiestarefinal.net/imageWeb/file.php


Alvaro
  #2 (permalink)  
Antiguo 19/10/2004, 07:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
hola,

$n = $newO.$k; es concatenar el valor de la variable $newO con el calor de $k. $newO no existe. Tendria que ser algo como:
Código PHP:
$n $_POST['newO'.$k]; 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 19/10/2004, 07:43
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 13 años, 1 mes
Puntos: 0
Cambié esa linea:

Código:
$k=1;
$result=mysql_query("SELECT * FROM imagen") or die("algo está  muy mal");

while($row=mysql_fetch_object($result)){
       $n = $_POST['newO'.$k];//CAMBIO
       mysql_query("UPDATE imagen SET orden = $n WHERE PicNum = PicNum LIMIT 1") or die ("no podes pibe ".mysql_error());
       $k++;
       }
}
Pero cuando ingreso un número, me aparece el número 0, y no el que ingresé,
Además solo hace cambios en el primer campo de texto y no en los otros
Has visto el ejemplo que envié?

Gracias
Avaro
  #4 (permalink)  
Antiguo 19/10/2004, 08:18
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 13 años, 1 mes
Puntos: 0
Bueno, no está funcionando completamente, cuando ingreso un valor en la fila que dice "Ensayo", cuando hago el submit (hacerlo 1 vez, y después apreten f5 para ver el html actualizado), cambia el primer valor de la columan order y Ensayo

Saben que puede ser lo que esté mal??

para chequiarlo

http://lafiestarefinal.net/imageWeb/file.php

nuevo codigo:
Código:
<?php

include("db.php");

$result=mysql_query("SELECT * FROM imagen") or die("algo está  muy mal");//para loopiar en el while

$result2=mysql_query("SELECT des1 FROM imagen") or die("algo está  muy mal");//para imprimir los textos

$result3=mysql_query("SELECT orden FROM imagen") or die("algo está  muy mal");//para imprimir los textos

print "<form method='post' action='file.php'>
       <table border='1' align='left' cellpadding='2'  cellspacing='0'>
       <tr>
           <td>
               <p align='center'>pic</p>
           </td>
           <td>
               <p align='center'>des1</p>
           </td>
           <td>
               order
           </td>
           <td>
               <p align='center'>newO</p>
           </td>
       </tr>
       <tr>";
$i=1;
$counter = 0;
While($row=mysql_fetch_object($result)) {
      $des1=mysql_fetch_object($result2);
      $orden= mysql_fetch_object($result3);
      print "<td>
                 <IMG SRC=\"header.php?PicNum=$row->PicNum\" border=\"0\" high=\"200\" width =\"100\">
            </td>
            <td>
                 <p align='center'>$des1->des1</p>
            </td>
                 <td><p align='center'>$orden->orden</p>
            </td>
            <td>
                 <p align= 'center'><input type='text' name='newO".$i++."'size='1' value=0 maxlength='15'></p>
            </td>";
            $counter += 1;

            if ($counter == 1){
                print "</tr>";
                $counter =0;
                }

}
print"</tr></table>";

print"<input type='submit' name='orden' value='go'></form>";

if($_POST['orden']){
$k=1;
$result=mysql_query("SELECT * FROM imagen") or die("algo está  muy mal");

while($row=mysql_fetch_object($result)){
       $n = $_POST['newO'.$k];
       print $n;//para testiar
       mysql_query("UPDATE imagen SET orden = $n WHERE PicNum = PicNum LIMIT 1") or die ("no podes pibe ".mysql_error());
       $k++;
       }
}else{
      print "caca";

        }

?>

Gracias por la ayuda

Alvaro
  #5 (permalink)  
Antiguo 19/10/2004, 08:26
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Cita:
WHERE PicNum = PicNum LIMIT 1
¿Que pretendes con esto? Porque siempre corresponde con el primer registro (un campo siempre es igual a si mismo). ¿No querrias poner
Código PHP:
WHERE PicNum = {$row['PicNum']} LIMIT 1 
, es decir, el PicNum del registro que estas recorriendo?

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 19/10/2004, 08:36
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 13 años, 1 mes
Puntos: 0
Lo que yo pretendo es que el query se cumpla para todas las filas de la bd, voy ha probar con el cambio que tu me has escrito, pero no se si es ahí donde está el error, creo que todo radica en el valor newO.
Con el último escript que escribí, solo logro cambiar un valor en la bd, y no varios.
Has visto a mi sitio? lo probaste?....funciona a medias, solo cambia un valor, hay algo mal en el while (creo).

(además tengo que arreglar lo del refresh ese que tengo que hacer luego del submit para ver los valores actualizados).

Tu ayuda me sirve, produce que no me sienta solo en esto



Alvaro
  #7 (permalink)  
Antiguo 19/10/2004, 08:45
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 13 años, 1 mes
Puntos: 0
Por si sirve de algo, aqui está la bd:

Código:
CREATE TABLE `imagen` (
  `PicNum` int(11) NOT NULL auto_increment,
  `imagen` blob NOT NULL,
  `des1` varchar(25) NOT NULL default '',
  `des2` varchar(255) NOT NULL default '',
  `seccion` varchar(10) NOT NULL default '',
  `precio` int(11) NOT NULL default '0',
  `orden` int(11) NOT NULL default '0',
  PRIMARY KEY  (`PicNum`)
) TYPE=MyISAM
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 19:04.