Ir al contenido


Foto

Problema con consulta a MySQL


  • Por favor identifícate para responder
9 respuestas en este tema

#1 LSP-Cesar

LSP-Cesar

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 31 julio 2011 - 01:44

Hola amigos

Resulta que en la aplicación que estoy creando se me ha presentado un problema que no he podido encontrar solución:

Yo tengo una tabla en la base de datos con los campos id, pais, prioridad. La tabla quiero que solo contenga 9 registros, para eso quiero crear un <select> en la página de registro del pais y que solo me muestre los campos que me faltan de la siguiente forma:

El campo id es la llave primaria auto incrementable.
El campo prioridad es un único número para cada registro del 1 al 9, no tiene que ser consecutivo.

Lo que quiero hacer es que cuando cuando el usuario vaya a ingresar un país nuevo, en el los <option> solo le aparezca los valores de prioridad que no están en la tabla.

Este es el código que he hecho:



delphi
  1. <?php
  2. require_once("conexion.php");
  3. $sql="select prioridad from pais";
  4. $res=mysql_query($sql,$con);
  5. ?>
  6.  
  7. <form action="ingresaPais.php" name="form" method="post">
  8. Nuevo Pa&iacute;s:<br /><br />
  9. Prioridad: <select name="priori" id="priori">
  10. <option id="0" value="0">Seleccione prioridad</option>
  11.               <?php
  12. $reg=mysql_fetch_array($res);//también intenté con $reg=mysql_fetch_array($res,MYSQL_NUM);
  13. for($i=1;$i<10;$i++){
  14. if($reg[$i-1]!=$i){
  15. ?>
  16. <option id="<?=$i;?>" value="<?=$i;?>"><?=$i;?></option>
  17.                 <?php } }
  18. ?>
  19. </select>
  20. </form>



Qué tengo mal o ud cómo lo harían?

Gracias por la ayuda.
  • 0

#2 cesar_cz

cesar_cz

    Advanced Member

  • Moderadores
  • PipPipPip
  • 919 mensajes
  • LocationChile

Escrito 31 julio 2011 - 03:06

Hola LSP- CESAR no entiendo tu consulta...saludos..
  • 0

#3 LSP-Cesar

LSP-Cesar

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 31 julio 2011 - 03:38

Yo tengo una tabla llamada pais con los siguientes campos:
id, pais, prioridad

tengo tres registros:
1, colombia, 1
2, venezuela, 3
3, ecuador, 7

Quiero que solo hayan 9 registros y para controlar esto en la página de ingresar un nuevo país (para este ejemplo) quisiera que quedara así:



delphi
  1. <select>
  2. <option value="0">Seleccione la prioridad</option>
  3. <option value="1">2</option>
  4. <option value="2">4</option>
  5. <option value="3">5</option>
  6. <option value="4">6</option>
  7. <option value="5">8</option>
  8. <option value="6">9</option>
  9. </select>


O sea que solo me muestre los valores del 1 al 9 que no estén en la tabla pais campo prioridad.

Gracias.
  • 0

#4 LSP-Cesar

LSP-Cesar

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 31 julio 2011 - 07:14

Je yo soy una weba :p

Con un poco de lógica ya resolví el problema  :D



delphi
  1. <?php
  2. require_once("conexion.php");
  3. $sql="select * from pais";
  4. $res=mysql_query($sql,$con);
  5. $reg=mysql_fetch_array($res);
  6. ?>
  7. <form action="ingresaPais.php" name="form" method="post">
  8. Nuevo Pa&iacute;s:<br /><br />
  9. Prioridad: <select name="priori" id="priori">
  10.               <option value="0">Seleccione la prioridad</option>
  11.                 <?php
  12. for($i=1;$i<10;$i++){
  13. if($reg["prioridad"]!=$i){
  14. ?>
  15.                 <option value="<?=$i?>"><?=$i?></option>
  16.                 <?php } } ?>
  17. </select>
  18. </form>


  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 31 julio 2011 - 07:32

Hola LSP-Cesar

Bienvenido a DelphiAccess, sientete como en casa, que bien que hayas resuelto tu problema. (y).

Salud OS
  • 0

#6 LSP-Cesar

LSP-Cesar

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 31 julio 2011 - 07:54

Hola egostar, gracias por la bienvenida.

Pues resulta que no se me solucionó el problema, solo me funciona si tuviera un registro, pero con varios no.

El problema con el código que acabé de poner es que al encontrar el primero registro que cumpla con la condición

delphi
  1. $reg["prioridad"]!=$i

el ciclo

delphi
  1. for($i=1;$i<10;$i++)

deja de ejecutarse.

Ya ni sé como explicar mi duda para que sea clara:

Yo tengo una tabla llamada pais con los siguientes campos:
id, pais, prioridad

el campo 'id' es auto incrementable
pais 'varchar'
prioridad 'int' // pero solo del 1 al 9 para que me restrinja a solo tener 9 registros en la tabla, no es necesario que sean consecutivos y no se pueden repetir

en la página para ingresar un pais, el usuario elige la prioridad de éste y lo quiero hacer con un <select>
en el <select> quiero que me aparezcan los números del campo 'prioridad' que no están en la base de datos, así certifico que no van a haber dos datos 'prioridad' repetidos y que solo van a ser del 1 al 9.

Los códigos que he utilizado ya los publiqué, ya ni sé qué hacer  8o|

Gracias.
  • 0

#7 cesar_cz

cesar_cz

    Advanced Member

  • Moderadores
  • PipPipPip
  • 919 mensajes
  • LocationChile

Escrito 31 julio 2011 - 09:23

Hola LSP - Cesar y si tu consulta SQL la trabajas con un where preguntando por la prioridad que deseas mostrar ?
  • 0

#8 LSP-Cesar

LSP-Cesar

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 31 julio 2011 - 10:13

Hola LSP - Cesar y si tu consulta SQL la trabajas con un where preguntando por la prioridad que deseas mostrar ?

No entiendo a qué te refieres :p

Cómo hago una petición con un where diciendo que me muestre los registros del 1 al 9 que no estén en el campo? Por que básicamente eso es lo que he estado intentado hacer  :sad:

ED: César te podría mostrar todo el código de la página completa? No es mucho, apenas estoy empezando :)
  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 01 agosto 2011 - 05:57

Si no mal entiendo sería así:

SELECT * FROM PAIS WHERE PRIORIDAD NOT IN (1,2,3,4,5,6,7,8,9)


ó si el campo prioridad tiene valor nulo o 0 puedes hacer lo siguiente:

SELECT * FROM PAIS WHERE PRIORIDAD IS NULL
SELECT * FROM PAIS WHERE PRIORIDAD = 0


Saludos.

  • 0

#10 Kurassier

Kurassier

    Newbie

  • Miembros
  • Pip
  • 1 mensajes
  • LocationSantiago, Chile

Escrito 08 agosto 2011 - 03:38

Y si pruebas haciendo un LIMIT del ID... osea, mostrar los 9 primeros registros o las 9 primeras ID, que es lo que entendí de tu pregunta

es decir:


delphi
  1. $sqlConsulta = "SELECT * FROM PAIS ORDER BY id DESC LIMIT 0,9;
  2. $resultado = mysql_query($sqlConsulta);



Para ser mas práctico, el ejemplo:



delphi
  1. <?php
  2. $result=mysql_query("SELECT * FROM PAIS ORDER BY id DESC LIMIT 0,9");
  3.         if ($row = mysql_fetch_array($result)){
  4.                         echo '<select name= "select">  ';
  5.                 echo '<option value="">Selecciona Prioridad</option>';
  6.  
  7.         do {
  8.                         echo '<option value= "'.$row["id"].'">'. $row["id"] .' .- '. $row["Prioridad"].'</option>';
  9.               }
  10.         while ($row = mysql_fetch_array($result));
  11.                         echo '</select>';
  12. }
  13. ?> 


  • 0




IP.Board spam blocked by CleanTalk.