PHP - problema al filtrar recordset

 
Vista:
Imágen de perfil de Jorge

problema al filtrar recordset

Publicado por Jorge (6 intervenciones) el 05/06/2016 19:29:24
Buenas!!!

Espero encontrar en este foro ayuda para salir de mi problema, hace días que no encuentro cual es el error que cometo.

Soy nuevo en php y hasta ahora mi web marchaba bien. Es una web donde quiero pasar presupuestos para viajes en combis (shuttler en otros lados) .

Puedo llamar desde una página a otra para editar registros desde el método href="e_comen.php?id_comentario= <?php echo $row_comentarios['id_comentario']. esto funciona ok cuando el la página de destino filtro el recordset por el valor id_comentario.

Pero al intentar hacer lo mismo desde un formulario y usando post, En la página de destino, capto la variable enviada, pero no tengo forma de filtrar el recordset por esta variable. Ya probe todo lo que se me ocurrio, usando request, post, get, etc. y el pinche recorset no me devuelve nada.


Asi trabaja:
Pagina de Origen:
el encabezado del form: <form action="cotizacionnew.php" method="post" id="formelije">
el select simple: <option value= "<?php echo $row_Recordset_lugares['lugar']?>"><?php echo $row_Recordset_lugares['lugar']?></option>

Pagina destino:
Muestro la variable recibida: <?php echo $_REQUEST["destino"];?>
El recordset que no funciona (autogenerao por cs6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }
 
  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
 
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
 
$maxRows_Recordset1 = 10;
$pageNum_Recordset1 = 0;
if (isset($_GET['pageNum_Recordset1'])) {
  $pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
 
$colname_Recordset1 = "-1";
if (isset($_SERVER['destino'])) {
  $colname_Recordset1 = $_SERVER['destino'];
}
mysql_select_db($database_local, $local);
$query_Recordset1 = sprintf("SELECT * FROM distancias WHERE lugar = %s", GetSQLValueString($colname_Recordset1, "text"));
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $local) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
 
if (isset($_GET['totalRows_Recordset1'])) {
  $totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
} else {
  $all_Recordset1 = mysql_query($query_Recordset1);
  $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>


2016-06-05-2

2016-06-05-4
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

problema al filtrar recordset

Publicado por kip (877 intervenciones) el 05/06/2016 20:25:22
Hola, noto que cuando creas el select no colocas el atributo name, deberias hacerlo puesto que al momento de hacer el submit el valor se enviara con el nombre del select que colocaste:

el select simple
1
2
3
4
5
<select name="lugar">
        <option value="lugar1">Lugar 1</option>
        <option value="lugar2">Lugar 2</option>
        <option value="lugar3">Lugar 3</option>
</select>

Claro que si deseas mostrar cada option con los valores de resultados de la consulta previa puedes hacerlo asi:
1
2
3
4
5
6
7
<select name="lugar">
        <?php
             while($row_Recordset_lugares = mysql_fetch_array($resultado)){
               echo '<option value= "'.$row_Recordset_lugares['lugar'].'">'.$row_Recordset_lugares['lugar'].'</option>'
             }
        ?>
</select>

Luego en la pagina de destino, en este caso cotizacionnew.php la recibes asi:
1
2
3
if (isset($_POST['lugar'])){
        echo $_POST['lugar']
}

Creo haberte entendido que esa era el problema, prueba y nos comentas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Jorge

problema al filtrar recordset

Publicado por Jorge (6 intervenciones) el 05/06/2016 21:32:44
Perdón, lo que pasa que no puse el código completo para no aburrir. Si tengo declarado name:

El Select Completo es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<select name="destino" size="1">
<?php
do {
?>
<option value= "<?php echo $row_Recordset_lugares['lugar']?>"><?php echo $row_Recordset_lugares['lugar']?></option>
<?php
} while ($row_Recordset_lugares = mysql_fetch_assoc($Recordset_lugares));
  $rows = mysql_num_rows($Recordset_lugares);
  if($rows > 0) {
      mysql_data_seek($Recordset_lugares, 0);
	  $row_Recordset_lugares = mysql_fetch_assoc($Recordset_lugares);
  }
?>
</select>

Además la ventana de seteo del recordset, de la página destino la tengo asi:

2016-06-05-5

Gracias por tu ayuda KIP.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

problema al filtrar recordset

Publicado por kip (877 intervenciones) el 05/06/2016 22:40:18
Ya veo, porque no tratas de enviar los datos simplificando el codigo que tienes, el lugar de usar do while, usa while:

1
2
3
4
5
6
7
8
9
10
11
<select name="destino" size="1">
        <?php
        $rows = mysql_num_rows($Recordset_lugares);
        if($rows > 0){
            mysql_data_seek($Recordset_lugares, 0);
            while($row_Recordset_lugares = mysql_fetch_array($Recordset_lugares)){
                echo '<option value= "'.$row_Recordset_lugares['lugar'].'">'.$row_Recordset_lugares['lugar'].'</option>'
             }
        }
        ?>
</select>

Ademas de eso, si en el atrivuto METHOD del form tienes POST, pues deberias recibirla asi:
1
2
3
if (isset($_POST['destino'])) {
  $colname_Recordset1 = $_POST['destino'];
}

Comentanos como te fue.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jorge

problema al filtrar recordset

Publicado por Jorge (6 intervenciones) el 06/06/2016 01:44:08
Lo Saque !!!

Tuve que hacer mejor el filtro del recordset, que quedó de la siguiente manera.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if (isset($_GET['pageNum_Recordset1'])) {
  $pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
 
$destino2_Recordset1 = "Cacheuta";
if (isset($_POST['destino'])) {
  $destino2_Recordset1 = $_POST['destino'];
}
mysql_select_db($database_local, $local);
$query_Recordset1 = sprintf("SELECT * FROM distancias WHERE distancias.lugar = %s", GetSQLValueString($destino2_Recordset1, "text"));
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $local) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
 
if (isset($_GET['totalRows_Recordset1'])) {
  $totalRows_Recordset1 = $_POST['totalRows_Recordset1'];
} else {
  $all_Recordset1 = mysql_query($query_Recordset1);
  $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>

El problema era que no hacia bien el SQL del recordset página destino.
Ahora sigo avanzando a lo más complicado, necesito trabajar con fechas y que no me deje ingresar una fecha anterior a la actual, y calcular la diferencia de días entre salida y llegada.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar