Foro oficial de PHP

Laneros muchas gracias por sus comentarios.
le falta el punto y coma en la linea de
mysql_select_db


Como dijo que está en proceso de aprender, le hago algunos aportes

1. La extension mysql está obsoleta y no es recomendable (http://php.net/manual/es/function.mysql-connect.php) en su lugar usar mejor la extension mysqli o PDO_MySQL

2. Tambien le recomendaría que nunca concatene cadenas manualmente para hacer consultas SQL, por ejemplo en su caso, esta linea:

PHP:
mysql_query("INSERT INTO cursotable (NOMBRE,APELLIDO,PW)
    VALUES ('$_POST[nombre]','$_POST[apellido]','$_POST[pw]')",$conexion);

Eso lo deja vulnerable a ataques de inyección SQL, mejor usar "prepared statements" (http://php.net/manual/es/mysqli.prepare.php)

Saludos
Gracias por el consejo, primero voy a analizar lo que hice para entender como funciona y después me actualizo.
Según a info mysql funciona hasta versión 6, ya en la 7 no. la que yo uso en ese servidor gratuito es MySQL 5.5.49

Ya corregido el ( ; )no hay errores, pero hago un envío de prueba y no me aparece nada en la tabla de la base de datos, que me esta faltando? debo agregar algún código a la tabla en el host gratuito ?:(:(:(
 
Y al enviar el formulario si le sale el "datos insertados correctamente"?

Si no le sale, es probable que no esté entrando al primer if (El que tiene muchos "isset" y "!empty")
 
@Cacharrin gracias.
Me sale esto.
fddd.JPG

Cual seria la solucion
 
El problema es que en el código PHP está intentando manejar un dato como "apellido"
pero en el formulario el nombre que tiene es "appellidos"... por eso no le funciona...

Debe cambiar alguno de los dos para que se llamen igual.
 
El problema es que en el código PHP está intentando manejar un dato como "apellido"
pero en el formulario el nombre que tiene es "appellidos"... por eso no le funciona...

Debe cambiar alguno de los dos para que se llamen igual.
Muchas gracias por tu ayuda, ya pude hacerlo funcionar.
Me recomiendas un programa para programar php, para dummies, es decir, que si falta un ;, el programa avise
cual es mejor notepad+++ o dreamweaver. para dummies.
 
Yo te recomendaría mejor un IDE... yo te recomiendo Eclipse PHP, lo uso desde hace mucho rato y me ha ido bien con el...
Dreamweaver para mi es de lo peor que hay... depronto para principiantes ayuda a que las cosas funcionen y auto genera parte del código... pero a la final termina uno en las mismas sin saber como es que funciona y no aprende uno nada...
El eclipse PHP es un poco pesado pero a mi me funciona para lo que necesito...
El notepad++ te serviría para ver el código "con colores", pero no te va a decir que te falta un ; en una linea especifica... el IDE si lo hace.
 
Yo te recomendaría mejor un IDE... yo te recomiendo Eclipse PHP, lo uso desde hace mucho rato y me ha ido bien con el...
Dreamweaver para mi es de lo peor que hay... depronto para principiantes ayuda a que las cosas funcionen y auto genera parte del código... pero a la final termina uno en las mismas sin saber como es que funciona y no aprende uno nada...
El eclipse PHP es un poco pesado pero a mi me funciona para lo que necesito...
El notepad++ te serviría para ver el código "con colores", pero no te va a decir que te falta un ; en una linea especifica... el IDE si lo hace.
Gracias por la info, digamos que ya he logrado algo.
Una pregunta tengo una busqueda en una base de datos y cuando hago una busqueda vacia me dice, "que debo ingresar un documento," como hago para que cuando la busqueda no encuentre nada me diga, algo como "No encontrado "
Código:
<?php

    if(isset($_POST['btn2']))
    {
      include("abrir_conexion.php");

        $doc = $_POST['cedula'];
        if($doc=="") //VERIFICO QUE AGREGEN UN DOCUMENTO OBLIGATORIAMENTE.
          {echo "Digita un documento por favor. (Ej: 123)";}
        else
        {
          $resultados = mysqli_query($conexion,"SELECT * FROM $tabla WHERE cedula = $doc");
          while($consulta = mysqli_fetch_array($resultados))
          {
            echo
            "
--------------------              aqui viene una tabla

      include("cerrar_conexion.php");
    }
  ?>
 
Gracias por la info, digamos que ya he logrado algo.
Una pregunta tengo una busqueda en una base de datos y cuando hago una busqueda vacia me dice, "que debo ingresar un documento," como hago para que cuando la busqueda no encuentre nada me diga, algo como "No encontrado "
Código:
<?php

    if(isset($_POST['btn2']))
    {
      include("abrir_conexion.php");

        $doc = $_POST['cedula'];
        if($doc=="") //VERIFICO QUE AGREGEN UN DOCUMENTO OBLIGATORIAMENTE.
          {echo "Digita un documento por favor. (Ej: 123)";}
        else
        {
          $resultados = mysqli_query($conexion,"SELECT * FROM $tabla WHERE cedula = $doc");
          while($consulta = mysqli_fetch_array($resultados))
          {
            echo
            "
--------------------              aqui viene una tabla

      include("cerrar_conexion.php");
    }
  ?>

Agreguele un IF donde hace la consulta en la variable $resultado y en el ELSE le puede colocar un alert con javascript o un echo.
 
  • Me gusta
Reacciones: eridamega y Cacharrin
Agreguele un IF donde hace la consulta en la variable $resultado y en el ELSE le puede colocar un alert con javascript o un echo.
Gracias por la info, no he podido hacerlo (realmente no se nada del tema :(:(:( )
se que es muy impudente de mi parte, pero podrías colaborare en esa linea, no he dado cabeza con eso
yo lo agradeceria mucho
 
Gracias por la info, no he podido hacerlo (realmente no se nada del tema :(:(:( )
se que es muy impudente de mi parte, pero podrías colaborare en esa linea, no he dado cabeza con eso
yo lo agradeceria mucho

Algo mas o menos así, me corrigen si cometí algún error lo hice corriendo desde el notepad

Código:
<?php

  if(isset($_POST['btn2']))
  {
  include("abrir_conexion.php");

  $doc = $_POST['cedula'];
  if($doc=="") //VERIFICO QUE AGREGEN UN DOCUMENTO OBLIGATORIAMENTE.
  {echo "Digita un documento por favor. (Ej: 123)";}
  else
  {
  if ($resultados = mysqli_query($conexion,"SELECT * FROM $tabla WHERE cedula = $doc"))
      {
        while($consulta = mysqli_fetch_array($resultados))
        {
         echo
         "
      }
      else
      {
         ?>
         <script language="javascript">alert ('Sin datos');</script>
  <?php
  }
        
--------------------  aqui viene una tabla

  include("cerrar_conexion.php");
 
Gracias por la info, digamos que ya he logrado algo.
Una pregunta tengo una busqueda en una base de datos y cuando hago una busqueda vacia me dice, "que debo ingresar un documento," como hago para que cuando la busqueda no encuentre nada me diga, algo como "No encontrado "
Código:
<?php

    if(isset($_POST['btn2']))
    {
      include("abrir_conexion.php");

        $doc = $_POST['cedula'];
        if($doc=="") //VERIFICO QUE AGREGEN UN DOCUMENTO OBLIGATORIAMENTE.
          {echo "Digita un documento por favor. (Ej: 123)";}
        else
        {
          $resultados = mysqli_query($conexion,"SELECT * FROM $tabla WHERE cedula = $doc");
          while($consulta = mysqli_fetch_array($resultados))
          {
            echo
            "
--------------------              aqui viene una tabla

      include("cerrar_conexion.php");
    }
  ?>

Compa otra opción seria:

Código:
$resultados = mysqli_query($conexion,"SELECT * FROM $tabla WHERE cedula = $doc");
if($resultados->num_rows == 0)
{
    echo "Registro no encontrado";
}
else
{
    while($consulta = mysqli_fetch_array($resultados, MYSQLI_ASSOC))
    {
        echo $consulta['nombre']."<hr>";
    }
}
 
Algo mas o menos así, me corrigen si cometí algún error lo hice corriendo desde el notepad

Código:
<?php

  if(isset($_POST['btn2']))
  {
  include("abrir_conexion.php");

  $doc = $_POST['cedula'];
  if($doc=="") //VERIFICO QUE AGREGEN UN DOCUMENTO OBLIGATORIAMENTE.
  {echo "Digita un documento por favor. (Ej: 123)";}
  else
  {
  if ($resultados = mysqli_query($conexion,"SELECT * FROM $tabla WHERE cedula = $doc"))
      {
        while($consulta = mysqli_fetch_array($resultados))
        {
         echo
         "
      }
      else
      {
         ?>
         <script language="javascript">alert ('Sin datos');</script>
  <?php
  }
       
--------------------  aqui viene una tabla

  include("cerrar_conexion.php");


Compa otra opción seria:

Código:
$resultados = mysqli_query($conexion,"SELECT * FROM $tabla WHERE cedula = $doc");
if($resultados->num_rows == 0)
{
    echo "Registro no encontrado";
}
else
{
    while($consulta = mysqli_fetch_array($resultados, MYSQLI_ASSOC))
    {
        echo $consulta['nombre']."<hr>";
    }
}

Gracias por tomarse el tiempo en responder, he intentado los dos codigos ( al derecho y al revés) y definitivamente el problema soy yo, lo pude de varias formas y :banghead::banghead::banghead: definitivamente el problema soy yo. lo ultimo que hice fue esto y tiro la toalla
Código:
<html>
<head>
  <title>Programando Ando</title>
  <!-- Latest compiled and minified CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

  <!-- Optional theme -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous">

  <!-- Latest compiled and minified JavaScript -->
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</head>
<body>

<div class="row">
  <div class="col-md-4"></div>
  <div class="col-md-4">



    <center><h4>CONSULTA TU GUIA DE ENVIO</h4></center>

    <form method="POST" action="registro.php" >

    <div class="form-group">
      <label for="cedula">Documento</label>
      <input type="text" name="cedula" class="form-control" id="cedula">
  </div>

     <center>
   
      <input type="submit" value="Consultar" class="btn btn-info" name="btn2">
    </center>

  </form>



  <?php

    if(isset($_POST['btn2']))
    {
      include("abrir_conexion.php");

        $doc = $_POST['cedula'];
       
        if($doc=="") //VERIFICO QUE AGREGEN UN DOCUMENTO OBLIGATORIAMENTE.
          {echo "Digita un documento por favor. (Ej: 123)";}
        else
        { 
          $resultados = mysqli_query($conexion,"SELECT * FROM $tabla WHERE cedula = $doc");
          while($consulta = mysqli_fetch_array($resultados))
          {
            echo
            "
              <table width=\"100%\" border=\"1\">
                <tr>
                  <td height=\"28\"><b>Nombre</b></td><td>".$consulta['nombre']."</td>
                </tr>
                <tr>
                  <td height=\"28\"><b>Documento</b></td><td>".$consulta['cedula']."</td>
                </tr>
                <tr>
                  <td height=\"28\"><b>Guia</b></td><td>".$consulta['numerode']."</td>
                </tr>
                <tr>
                  <td height=\"28\"><b>Empresa de envio</b></td><td>".$consulta['empresade25']."</td>
                </tr>
                <tr>
                  <td height=\"28\"><b>Nota</b></td><td>".$consulta['nota']."</td>
                </tr>
                <tr>
                  <td height=\"28\"><b>Comentarios</b></td><td>".$consulta['comentarios']."</td>
                </tr>
               
              </table>
            ";
          }
        }

      include("cerrar_conexion.php");
    }
  ?>



  </div>
  <div class="col-md-4"></div>
</div>



 
 
</body>
</html>
 
Gracias por tomarse el tiempo en responder, he intentado los dos codigos ( al derecho y al revés) y definitivamente el problema soy yo, lo pude de varias formas y :banghead::banghead::banghead: definitivamente el problema soy yo. lo ultimo que hice fue esto y tiro la toalla

Según el código que usted puso la parte de PHP debería ir en otro archivo, además del archivo abrir_conexion.php que es el que lleva los datos de conexión, usted también llama un archivo cerrar_conexion.php, pero comenté esa linea porque no se que tiene usted ahí.

Los dos archivos quedarían así

HTML:
<html>
<head>
  <title>Programando Ando</title>
  <!-- Latest compiled and minified CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

  <!-- Optional theme -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous">

  <!-- Latest compiled and minified JavaScript -->
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</head>
<body>

<div class="row">
  <div class="col-md-4"></div>
  <div class="col-md-4">

    <center><h4>CONSULTA TU GUIA DE ENVIO</h4></center>
    <form method="POST" action="registro.php" >
    <div class="form-group">
      <label for="documento">Documento</label>
      <input type="text" name="doc" class="form-control" id="doc">
    </div>

     <center>
   
      <input type="submit" value="Consultar" class="btn btn-info" name="btn2">
    </center>

  </form>

  </div>
  <div class="col-md-4"></div>
</div>

</body>
</html>

PHP:
<?php

    if(isset($_POST['btn2']))
    {
      include("abrir_conexion.php");
       
    $conexion = mysqli_connect($host,$user,$pw, $bd);
        // prueba la conexión
    if (!$conexion) {
        die("Connection failed: " . mysqli_connect_error());
    }
    if($_POST['doc']=="") //VERIFICO QUE AGREGEN UN DOCUMENTO OBLIGATORIAMENTE.
       {echo "Digita un documento por favor. (Ej: 123)";}
     else
        {
        $resultados = mysqli_query($conexion,"SELECT * FROM (tabla) WHERE cedula = ('$_POST[doc]')");
        if($resultados->num_rows == 0)
            {
                echo "Registro no encontrado";
            }
        else
            {
            while($consulta = mysqli_fetch_array($resultados))
                {
                echo
                "
                <table width=\"100%\" border=\"1\">
                <tr>
                  <td height=\"28\"><b>Nombre</b></td><td>".$consulta['nombre']."</td>
                </tr>
                <tr>
                  <td height=\"28\"><b>Documento</b></td><td>".$consulta['cedula']."</td>
                </tr>
                <tr>
                  <td height=\"28\"><b>Guia</b></td><td>".$consulta['numerode']."</td>
                </tr>
                <tr>
                  <td height=\"28\"><b>Empresa de envio</b></td><td>".$consulta['empresade25']."</td>
                </tr>
                <tr>
                  <td height=\"28\"><b>Nota</b></td><td>".$consulta['nota']."</td>
                </tr>
                <tr>
                  <td height=\"28\"><b>Comentarios</b></td><td>".$consulta['comentarios']."</td>
                </tr>
               
                </table>
                ";
                }
            }   
        }
     // include("cerrar_conexion.php");
    }
  ?>

En este archivo va incluida la parte que le dijeron arriba que podía utilizar. Compare estos archivos con los suyos para que vea cuales son los errores que está cometiendo.

Saludos
 
Última edición:
Hola chicos.
Quiero poder realizar actualizaciones múltiples de un campo nombre para usar algo así en mi controlador:
PHP:
foreach ($valores as $key)
{
    $sql_update = "UPDATE tabla set nombre = {$key['nombre']}
    where codigo = '{$key['codigo']}'";
    $this->db->query($sql_update);
}
$valores es un array que tiene o debería tener lo siguiente: codigo, nombre
Código:
100,juan
200,belen
300,roberto
400,alejandra
500,tadeo
Y este array debería ser generado por un listado que tengo en la vista. En donde se visualiza el código y el nombre, y el nombre se puede modificar. Al dar check quiero que capture el código (que sí lo hace) pero no captura el campo nombre.
El código de la vista es este:
HTML:
{section name=i loop=$lista}
<tr>
    <td><input type="checkbox" name="codigo[]" id="codigo" value="{$lista[i]->codigo}"></td>
    <td>{$lista[i]->codigo}</td>
    <td><input type="text" name="nombre" id="nombre" value="{$lista[i]->nombre}"></td>
</tr>
{/section}
Todo está dentro de un formulario. Pero solamente captura el campo código.
Y si vuelvo array al campo nombre y va nombre[], se crean dos arrays, uno con los checks y los códigos checkeados y otro con nombre, pero captura todos los registros que se muestran.
Alguien tiene alguna sugerencia o ayuda al respecto?
 
Hola chicos.
Quiero poder realizar actualizaciones múltiples de un campo nombre para usar algo así en mi controlador:
PHP:
foreach ($valores as $key)
{
    $sql_update = "UPDATE tabla set nombre = {$key['nombre']}
    where codigo = '{$key['codigo']}'";
    $this->db->query($sql_update);
}
$valores es un array que tiene o debería tener lo siguiente: codigo, nombre
Código:
100,juan
200,belen
300,roberto
400,alejandra
500,tadeo
Y este array debería ser generado por un listado que tengo en la vista. En donde se visualiza el código y el nombre, y el nombre se puede modificar. Al dar check quiero que capture el código (que sí lo hace) pero no captura el campo nombre.
El código de la vista es este:
HTML:
{section name=i loop=$lista}
<tr>
    <td><input type="checkbox" name="codigo[]" id="codigo" value="{$lista[i]->codigo}"></td>
    <td>{$lista[i]->codigo}</td>
    <td><input type="text" name="nombre" id="nombre" value="{$lista[i]->nombre}"></td>
</tr>
{/section}
Todo está dentro de un formulario. Pero solamente captura el campo código.
Y si vuelvo array al campo nombre y va nombre[], se crean dos arrays, uno con los checks y los códigos checkeados y otro con nombre, pero captura todos los registros que se muestran.
Alguien tiene alguna sugerencia o ayuda al respecto?
Como asi que "pero captura todos los registros que se muestran"? Acaso cuales desea ignorar y cuales desea procesar?
 
Como asi que "pero captura todos los registros que se muestran"? Acaso cuales desea ignorar y cuales desea procesar?
Hola. En mi controlador tengo este código:
HTML:
{section name=i loop=$lista}
<tr>
    <td><input type="checkbox" name="codigo[]" id="codigo" value="{$lista[i]->codigo}"></td>
    <td>{$lista[i]->codigo}</td>
    <td><input type="text" name="nombre" id="nombre" value="{$lista[i]->nombre}"></td>
</tr>
{/section}
Este código muestra una lista de códigos y nombres anteceddidos de un checkbox. El campo Nombre se puede editar.
Si quiero modificar un nombre le doy check para identificar qué o cuáles registros voy a actualizar.
Pero así como está solo pasan los códigos, cómo hago para que pase el código y nombre?
 
Te falta [] en nombre

Código:
<td><input type="text" name="nombre[]" id="nombre" value="{$lista[i]->nombre}"></td>
 
Te falta [] en nombre

Código:
<td><input type="text" name="nombre[]" id="nombre" value="{$lista[i]->nombre}"></td>
No es así de simple, @Bandolera ya dijo que no quiere enviar todos los campos del formulario... solo quiere enviar algunos (Solo a los que se le de click en el checkbox).

Yo diría que le toca entonces hacer la petición manualmente a través de javascript para solo enviar los datos que ud necesita... porque el comportamiento normal de un "form" es enviar todos los valores de los inputs que este contenga (Sin importar si tienen un check al lado o no)
 
Última edición:
No es así de simple, @Bandolera ya dijo que no quiere enviar todos los campos del formulario... solo quiere enviar algunos (Solo a los que se le de click en el checkbox).

Yo diría que le toca entonces hacer la petición manualmente a través de javascript para solo enviar los datos que ud necesita... porque el comportamiento normal de un "form" es enviar todos los valores de los inputs que este contenga (Sin importar si tienen un check al lado o no)
Si utilizo nombre[] envía dos arregos, codigo[] con los valores seleccionados con el check y nombre[] que tiene toda la lista de nombres.
Entonces tendría que utilizar javascript? No hay otra forma?
 
No es así de simple, @Bandolera ya dijo que no quiere enviar todos los campos del formulario... solo quiere enviar algunos (Solo a los que se le de click en el checkbox).

Yo diría que le toca entonces hacer la petición manualmente a través de javascript para solo enviar los datos que ud necesita... porque el comportamiento normal de un "form" es enviar todos los valores de los inputs que este contenga (Sin importar si tienen un check al lado o no)

Si utilizo nombre[] envía dos arregos, codigo[] con los valores seleccionados con el check y nombre[] que tiene toda la lista de nombres.
Entonces tendría que utilizar javascript? No hay otra forma?

veamos, se quiera o no el POST de un form siempre envía todos los campos que haya en el form (visibles, hidden, ocultos con CSS, etc) excepto en caso de los checkbox y radiobuttons que si no hay nada seleccionado no envia nada

1. se puede ocultar el campo nombre y solo mostrarlo si el checkbox esta seleccionado, validando a su vez que si no esta seleccionado el checkbox, se debe ocultar y limpiar el valor del mismo, asi por lo menos tiene 'certeza' de que no entrara basura

2. hay que tener en cuenta que 'nombre' como identificador de input solo tomara el ultimo nombre de los n input 'nombre' en el form, por otro lado 'nombre[]' si almacena todos los valores del input (@ADIDAS esta en lo correcto)

3. un checkbox no seleccionado NO pasara como valor, asi las cosas puede basarse en los seleccionados para guardar el conjunto codigo-nombre

4. hay que verificar y sanitizar los datos que se enviaran a la base de datos, sino preguntarle a 'juanito DROP TABLE ' :p

5. si todo este texto sin un ejemplo pero para mi me parece mejor que se trate de entender 'que tengo' y 'que quiero/necesito' que poner el ejemplo/solución y no se aprendió nada
 
  • Me gusta
Reacciones: ADIDAS

Los últimos temas