1. ¡OFERTA! con cupón "DIRVPS": hosting por $0,01 y también VPS Linux y Windows por $0,01 el primer mes por Interserver ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

Ayuda php consulta condicional MySQL

Tema en 'Asuntos Técnicos' iniciado por OFFICERTOM, 4 Ene 2012.

  1. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Hola amigos,

    Estoy preparando una página donde el visitante pueda introducir su código postal (CP) y comprobar si existe servicio de entrega a domicilio en su CP. A tal efecto he creado una base de datos con los CP donde SI esta el servicio disponible.

    La página con el FORM es:

    CODE, HTML o PHP Insertado:
    <form action="consulta_cp.php" method="post"> Codigo Postal <input name="cp" type="varchar" /> <input type="submit" value="Enviar" /> </form>
    Este me lleva a "consulta_cp.php" que hace la consulta sobre la BBDD de los CP. Si existe el CP introducido por el visitante se le redirige a la tienda sino a otra página donde se le indica que en su CP no hay servicio. Este es "consulta_cp.php":

    CODE, HTML o PHP Insertado:
    <?php
    //Connect To Database
    $hostname='bdconsulta2012.hostedresource.com';
    $username='bdconsulta2012';
    $password='*******';
    $dbname='bdconsulta2012';
    $usertable='bdconsulta2012';
    $yourfield = 'cp';
    
    mysql_connect($hostname,$username, $password) OR DIE ('No ha sido posible contactar con nuestra base de datos. Le rogamos vuelva a intentarlo más tarde. Gracias');
    mysql_select_db($dbname);
    
    $query = 'SELECT * FROM ' . $usertable WHERE cp = "cp_user";
    $result = mysql_query($query);
    if($result) 
    {
      ("href:/magento/express/?___store=default");
    }else
    {
      include("/magento/no-servicio/?___store=default");
    
    }
    ?>
    Pues bien, de momento me da ERROR de sintaxis en la línea del $query. Tampoco se si la acción condicional de redireccionamiento a la tienda es correcta.

    ¿Alquien puede ayudarme?
     
  2.  
  3. hyperwin

    hyperwin Usuario activo

    Te hace falta un punto y una comilla, también debes reemplazar "cp_user" por el valor enviado por el usuario, para ello debes usar $_POST, consulta los siguientes ejemplos

    http://www.webestilo.com/php/php09b.phtml

     
  4. OFFICERTOM

    OFFICERTOM Nuevo usuario

    CODE, HTML o PHP Insertado:
    <?php
    //Connect To Database
    $hostname='bdconsulta2012.hostedresource.com';
    $username='bdconsulta2012';
    $password='*******';
    $dbname='bdconsulta2012';
    $usertable='bdconsulta2012';
    $yourfield = 'cp';
    
    mysql_connect($hostname,$username, $password) OR DIE ('No ha sido posible contactar con nuestra base de datos. Le rogamos vuelva a intentarlo más tarde. Gracias');
    mysql_select_db($dbname);
    
    $query = 'SELECT * FROM' .$usertable.' WHERE cp ="cp_user";
    $result = mysql_query($query);
    if($result) 
    {
      ("href:?/magento/express/?___store=default");
    }else
    {
      include("?/magento/no-servicio/?___store=default");
    
    }
    ?>
    Pues nada. Lo he corregido con lo que me has dicho y me da el siguiente error en la línea 13 que es la del $query:

    Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /home/content/96/8254996/html/magento/belnature/consulta_cp.php on line 13

    Parse error: syntax error, unexpected T_STRING in /home/content/96/8254996/html/magento/belnature/consulta_cp.php on line 13


    El valor que me da el usuario es "cp_user".

    ¿Qué c!!o puede ser?. Gracias
     
  5. vicram

    vicram Usuario activo

    si el valor cp_user es el q recibes desde el formulario has de recibilo desde POST

    PHP:
    $cp_user $_POST['cp_user'];

    $query 'SELECT * FROM' .$usertable.' WHERE cp ="'$cp_user.'"';
     
  6. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Gracias vicram.

    Ahora ya no me da error en el query pero no me va en ninguno de los casos de la condicional a las respectivas páginas que yo quiero, simplemente se queda la pantalla en blanco aparcada en la página "consulta_cp.php".

    El código del formulario es:

    HTML:
    <form action="consulta_cp.php" method="post"> Codigo Postal <input name="cp" type="varchar" /> <input type="submit" value="Enviar" /> </form>
    El código de "consulta_cp.php" tal como ha quedado con vuestras correcciones es:

    PHP:
    <?php
    //Connect To Database
    $hostname='bdconsulta2012.db.hostedresource.com';
    $username='bdconsulta2012';
    $password='*******';
    $dbname='bdconsulta2012';
    $usertable='bdconsulta2012';
    $yourfield 'cp';

    mysql_connect($hostname,$username$password) OR DIE ('No ha sido posible contactar con nuestra base de datos. Le rogamos vuelva a intentarlo más tarde. Gracias');
    mysql_select_db($dbname);

    $cp_user $_POST['cp_user']; 
    $query 'SELECT * FROM' .$usertable.' WHERE cp ="'$cp_user.'"';
    $result mysql_query($query);
    if(
    $result
    {
      (
    "href:?/magento/express");
    }else
    {
      (
    "href:?/magento/no-servicio");

    }
    ?>
    Estoy más cerca pero algo todavía falla.
     
  7. vicram

    vicram Usuario activo

    HTML:
    <form action="consulta_cp.php" method="post"> Codigo Postal <input name="cp" type="varchar" /> <input type="submit" value="Enviar" /> </form>
    el campo input tiene distinto identificador

    HTML:
    <input name="cp_user" type="varchar" />
    o sea al recibir el dato tu mandas cp y no cp_user que es el que recibes
     
  8. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Perdona Vicram, había puesto una versión antigua del formulario.

    La versión con la que estoy trabajando es esta y concuerda con lo que tu me dices:

    HTML:
    <form action="?/consulta_cp.php" method="post"> Código Postal<input name="cp_user" type="varchar" /> <input type="submit" value="Enviar" /> </form>
    Por lo tanto debe haber algo mal en "consulta_cp.php"que me da el error que describo en mimensaje anterior.

    Ya podéis perdonar por lo plasta o ignorante que soy.
     
  9. vicram

    vicram Usuario activo

    HTML:
    <form action="?/consulta_cp.php" method="post"> Código Postal<input name="cp_user" type="varchar" /> <input type="submit" value="Enviar" /> </form>
    en el input el type="text" no varchar

    son cosas basicas ..... hay q estudiar o leer un poco mas
     
  10. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Gracias. Tienes toda la razón y de hecho he buscado y buscado, pero sigue sin funcionarme. :-(
     
  11. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Debo tener algún fallo en la condicional porque introduzca el CP que meta me va siempre a la página "?/magento/no-servicio" de no servicio disponible.

    El php lo tengo así:

    PHP:
    <?php
    //Connect To Database
    $hostname='bdconsulta2012.db.hostedresource.com';
    $username='bdconsulta2012';
    $password='*******';
    $dbname='bdconsulta2012';
    $usertable='bdconsulta2012';
    $yourfield 'cp';

    mysql_connect($hostname,$username$password) OR DIE ('No ha sido posible contactar con nuestra base de datos. Le rogamos vuelva a intentarlo más tarde. Gracias');
    mysql_select_db($dbname);

    $cp_user $_POST['cp_user']; 
    $query 'SELECT * FROM' .$usertable.' WHERE cp ="'$cp_user.'"';
    $result mysql_query($query);
    if(
    $result
    {
      
    header("Location: ?/magento/express");
    }else
    {
      
    header("Location: ?/magento/no-servicio");

    }
    ?>
    Lo veis por algún lado ? Gracias.


    :golpe::golpe::golpe::golpe::golpe::golpe:
     
  12. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Alguien que me pueda echar una mano con el post anterior? porque estoy atascado. Gracias.
     
  13. vicram

    vicram Usuario activo

    1.- he visto q en la consulta no dejas espacio entre FROM y la variable $usertable

    2.- a veces no se porque preguntar por $result directamente produce errores, yo suelo hacerlo por si devuelve 1 o mas valores por el total de registros devueltos

    quedaria asi:

    PHP:
    $query 'SELECT * FROM ' .$usertable.' WHERE cp ="'$cp_user.'"';
    $result mysql_query($query);
    if(
    mysql_nums_rows($result)>=1) {
      
    // recibimos que existe al menos 1 registro con esa consulta
      
    header("Location: ?/magento/express");
    } else {
      
    header("Location: ?/magento/no-servicio");
    }
     
  14. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Gracias Vicram

    Me da el siguiente error:

    Fatal error: Call to undefined function mysql_nums_rows() in /home/content/96/8254996/html/magento/consulta_cp.php on line 15

    La linea 15 es:
    PHP:
     if(mysql_nums_rows($result)>=1) {
    Lo siento pero sigo sin ver el error.
     
  15. ideasmultiples

    ideasmultiples Usuario activo

    mysql_nums_rows() esta mal es mysql_num_rows.

    Busca en los manuales de php, hay tienes todas las funciones que necesites.

    Creo que este tipo preguntas te la contestarían antes en un foro de php-programación.

    Recuerda que eso es un foro sobre hosting y tu pregunta es una pregunta sobre desarrollo y programación en php....

    :cool:
     
  16. Osiris

    Osiris Nuevo usuario

    Hola, no has intentado usar ajax para este tipo de cuestiones, digo, no tengo nada en contra de php. Pero ajax a veces puede ser una buena opcion.

    Otra cosa, estas usando mysql de php. Tambien puedes usar mysqli.

    Es igual, solo cambian algunas cosillas.

    Lo que necesitas es esto:

    if ($result){
    if(mysql_num_rows($result)>0){
    //a donde quieras ir
    }
    else{
    // la otra pagina
    }
    }

    espero te sirva
     
  17. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Gracias a todos por vuestra exquisita paciencia porque creo que mi inexperiencia aburre a cualquiera :sho:, pero esto sigue sin irme.

    Ahora todo el script lo tengo así:

    PHP:
    <?php
    //Connect To Database
    $hostname='bdconsulta2012.db.8254996.hostedresource.com';
    $username='bdconsulta2012';
    $password='**********';
    $dbname='bdconsulta2012';
    $usertable='cp';
    $yourfield 'cpserv';

    mysql_connect($hostname,$username$password) OR DIE ('No ha sido posible contactar con nuestra base de datos. Le rogamos vuelva a intentarlo más tarde. Gracias');
    mysql_select_db($dbname);
    $cp_user $_POST['cp_user']; 
    $query 'SELECT * FROM '$usertable.' WHERE cpserv ="'$cp_user.'"'
    $result mysql_query($query); 
    if (
    $result){
    if(
    mysql_num_rows($result)>0){
      
    // recibimos que existe al menos 1 registro con esa consulta 
      
    header("Location: ?/magento/postal/");
    }else {
      
    header("Location: ?/magento/no-servicio/");}
    }
    ?>
    Y meta el valor de CP que meta, va siempre a la página web señalada para la condicional FALSA (?/magento/no-servicio/)

    :eek::eek::eek::eek:
     
  18. Osiris

    Osiris Nuevo usuario

    Pero ya funciona???

    Esto de perdido es buena señal.

    Bueno, ahora has pruebas.

    Has un respaldo de tu codigo.

    Usa este:


    <?php
    //Connect To Database
    $hostname='bdconsulta2012.db.8254996.hostedresource.com';
    $username='bdconsulta2012';
    $password='**********';
    $dbname='bdconsulta2012';
    $usertable='cp';
    $yourfield = 'cpserv';

    mysql_connect($hostname,$username, $password) OR DIE ('No ha sido posible contactar con nuestra base de datos. Le rogamos vuelva a intentarlo más tarde. Gracias');
    mysql_select_db($dbname);
    $cp_user = $_POST['cp_user'];
    // imprime lo que enviaste del formulario
    echo $cp_user;
    $query = 'SELECT * FROM '. $usertable.' WHERE cpserv ="'. $cp_user.'"';
    $result = mysql_query($query);
    if ($result){
    if(mysql_num_rows($result)>0){
    //vamos a imprimir en una tabla los resultados de la consulta
    echo "<table>";
    //con el siguiente while mostraras cada una de las filas que encontro en la consulta
    //imprimira solamente el primer campo de la tabla
    while($fila = mysql_fetch_array($result)){
    echo "<tr><td>$fila[0]</td></tr>";
    }
    echo "</table>";
    }else {
    echo "no se encontro nada";
    }
    ?>

    Bueno, pruebalo, y comenta tus resultado.

    Espero no haberme equivocado, ya que lo escribi por aqui.
     
  19. OFFICERTOM

    OFFICERTOM Nuevo usuario

    PERFECTO OSIRIS!!!:aprueba::aprueba::aprueba:

    Funciona, imprime el valor dos veces si lo encuentra o imprime "no se encontró nada" si el valor no está en la tabla, luego la consulta y la condicional van bien.

    Lo que no sé es cómo modificar el código para que en el caso de que encuentre el valor vaya a la web "?/magento/store" o en el caso de que no lo encuentre vaya a la web "?/magento/no-servicio".

    :afirmar:
     
  20. Osiris

    Osiris Nuevo usuario

    ok, bueno, ya lo ultimo que queda es reedireccionar a las paginas que querias.

    basta con que reemplaces el codigo dentro del if asi:

    header('Location: pagina.php');

    esto siempre y cuando la pagina este en el mismo directorio.

    igualmente con el else.

    Pruebalo a ver si te sirve.
     
  21. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Resuelto!!!! Gracias a todos en especial a Osiris!!!

    Ya funciona. Gracias Osiris. Un millón de gracias. Llevaba con esto atascado casi dos semanas. Voy a publicarlo como ha quedado por si a algún otro le sirve.

    Se trata de un script que recibe un Código Postal introducido por el cliente en un formulario y que le lleva a una página web o a otra según exista el servicio de entrega o no en su CP.

    El formulario es el siguiente:

    HTML:
    <h3>Introduzca por favor el código postal de la direccion donde desea que le hagamos la entrega:</span></h3>
    
    <h3><form action="?/consulta_cp.php" method="post"><br />Código Postal</span> <input name="cp_user" type="text" /> <input type="submit" value="Enviar" /> </form></h3>
    El script ha quedado así:

    PHP:
    <?php
    //Connect To Database
    $hostname='bdconsulta2012.db.8254996.hostedresource.com';
    $username='bdconsulta2012';
    $password='******';
    $dbname='bdconsulta2012';
    $usertable='cp';
    $yourfield 'cpserv';

    mysql_connect($hostname,$username,$password) OR DIE ('No ha sido posible contactar con nuestra base de datos. Le rogamos vuelva a intentarlo más tarde. Gracias'); 
    mysql_select_db($dbname); 
    $cp_user $_POST['cp_user'];
    $query 'SELECT * FROM '$usertable.' WHERE cpserv ="'$cp_user.'"'
    $result mysql_query($query); 
    if (
    $result){ 
    if(
    mysql_num_rows($result)>0){ 
    header("Location: ?/express");
    }else { 
    header("Location: ?/no-servicio");
    }
    }
    ?>
    Una vez más gracias. Espero que sirva a más gente.

    GRACIAS !!!:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D
     


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


    
    
    
    
Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta ·