Foros del Web » Programando para Internet » PHP »

solo toma el ultimo valor...

Estas en el tema de solo toma el ultimo valor... en el foro de PHP en Foros del Web. Hola, La idea es que si un valor es igual a '1', se guarde in valor en la BD?; y si es > '1', se ...
  #1 (permalink)  
Antiguo 19/11/2013, 16:13
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 8 meses
Puntos: 5
Pregunta solo toma el ultimo valor...

Hola,

La idea es que si un valor es igual a '1', se guarde in valor en la BD?; y si es > '1', se debe guardar otro. Sin embargo, tengo un problema en la siguiente query:

Código PHP:
if($result_newname mysqli_query($mysqli,"SELECT * FROM $table;")); {
                
            while (
$row_named mysqli_fetch_array($result_newname)) {
                
                
$id $row_named['id'];
                
$new_title $row_named['new_title'];
                
$ver $row_named['version'];
                
                
$new_title_name $new_title ' - v.' $ver;
                
                
                
// Query para copiar valor de otra columna si version = 1
                
                
$result_addnewname mysqli_query($mysqli,"UPDATE $table SET final_title='$new_title' WHERE version = 1;");

                
// Query para copiar valor manual si version > 1
$result_addnewname_v mysqli_query($mysqli,"UPDATE $table SET final_title='$new_title_name' WHERE version > 1;"); 
El problema es que en la columna 'final_title' me copia la ultima linea (el ultimo valor) en todas las lineas... Es como si pillara solamente el ultimo valor de una array sin tener en cuenta el resto...

Podriais decirme donde me estoy equivocando?

Mil gracias!
__________________
Andrew :P
  #2 (permalink)  
Antiguo 19/11/2013, 19:20
Avatar de Cuervoo  
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 6 meses
Puntos: 43
Respuesta: solo toma el ultimo valor...

Como el ultimo valor? El ultimo caracter del string?
  #3 (permalink)  
Antiguo 20/11/2013, 02:58
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: solo toma el ultimo valor...

El último record:
Código PHP:
ID      new_title      version      final_title
========================================================
1      Title N° 1            1            Title N°4
2      Title N° 1            2            Title N°4
3      Title N° 2            1            Title N°4
4      Title N° 1            3            Title N°4
5      Title N° 3            1            Title N°4
6      Title N° 4            1            Title N°4 
Se reproduce la tabla de arriba en vez de esto:

Código PHP:
ID      new_title      version      final_title
========================================================
1      Title N° 1            1            Title N°1 v.1 
2      Title N° 1            2            Title N°1 
v.2
3      Title N° 2            1            Title N°2 
v.1
4      Title N° 1            3            Title N°1 
v.3
5      Title N° 3            1            Title N°3 
v.1
6      Title N° 4            1            Title N°4 
v.1 
__________________
Andrew :P
  #4 (permalink)  
Antiguo 20/11/2013, 03:02
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 13 años, 6 meses
Puntos: 48
Respuesta: solo toma el ultimo valor...

¿Para qué creas un campo (final_title) que puedes obtener de otros campos?
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España
  #5 (permalink)  
Antiguo 20/11/2013, 03:19
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: solo toma el ultimo valor...

La idea es copiar los mismos datos de esa columna original en la nueva dejando el titulo original si la version es '1' y añadiendo 'v-# ' si la version es mayor a uno. Es cierto que no ya esxisten los valores (excepto el 'titulo v-#'), pero por precausión no se quieren tocar los valores originales.
__________________
Andrew :P
  #6 (permalink)  
Antiguo 20/11/2013, 05:40
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: solo toma el ultimo valor...

Hola,

Creo que coincido con @Trublux... si tienes los datos no creo que fuese necesario definir una nueva columna.

Hay una salvedad, y radica en que si es una tabla MUY extensa con muchos registros, eso sí puede afectar el rendimiento... entonces es entendible, jejeje.

Yo te propongo (así a bote-pronto) algo así:

Código:
Define un array vacío ($ftitles)
Recupera TODOS los "new_title" y "ID" => $titles (lo trataré como si fuese un array, por comodidad)

Opera así:

for($i=0;$i<count($titles);$i++){
  if(isset($ftitles[$titles[$i]['new_title']])){
    $ftitles[$titles[$i]['new_title']]++
  }else{
    $ftitles[$titles[$i]['new_title']] = 1;
  }

  $titles[$i]['final_title'] = $titles[$i]['new_title'].' - v'.$ftitles[$titles[$i]['new_title']];
}

Al salir de ese bucle, haces un bucle para un update masivo...
Espero que te sirva... lo he hecho un poco "a lo loco", espero que no hayan errores.

Saludos.
  #7 (permalink)  
Antiguo 20/11/2013, 06:59
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 13 años, 6 meses
Puntos: 48
Pregunta Respuesta: solo toma el ultimo valor...

Cita:
Iniciado por andrewp Ver Mensaje
La idea es copiar los mismos datos de esa columna original en la nueva dejando el titulo original si la version es '1' y añadiendo 'v-# ' si la version es mayor a uno. Es cierto que no ya esxisten los valores (excepto el 'titulo v-#'), pero por precausión no se quieren tocar los valores originales.
Ya entendía lo que estabas haciendo, lo que no entiendo es por qué lo haces.
No sería más fácil (menos trabajo al no tener que actualizar el campo) que saques los valores de "new_title" y "version", y en el PHP los muestres como te apetezca (si en vez de poner " - v" lo cambias a otra forma no tendrías que actualizar los campos)... O incluso podrías cuando haces el select usar la función concat de MySQL para darles el formato que quieras.
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España

Etiquetas: mysql, select, sql, toma, ultimo
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 12:26.