Foros del Web » Programando para Internet » PHP »

Duda de mi codigo

Estas en el tema de Duda de mi codigo en el foro de PHP en Foros del Web. Buenas tardes, estoy desarrollando una aplicación web, y el código que acabo de desarrollar no me inserta ni me borra los datos de cliente, alguien ...
  #1 (permalink)  
Antiguo 24/10/2006, 10:38
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Duda de mi codigo

Buenas tardes, estoy desarrollando una aplicación web, y el código que acabo de desarrollar no me inserta ni me borra los datos de cliente, alguien podría decirme si tengo algun fallo en el codigo????

Código PHP:
<?
include("indexup.php");
include(
"menuizquierda.php");
?>
<div id="centro">
<div id="centrodentro" class="cuadrocentral">
<?
if($_SESSION['level'] == 1){

    echo
"<h1>GESTIÓN DE LOS CLIENTES</h1>";
    
    echo
"<p>Para dar la configuración deseada al texto que introduzca, aquí tiene una lista 
    de las etiquetas HTML más importantes:
    <ul>
    <li><b>&lt;p&gt; párrafo &lt;/p&gt;</b>: Párrafo. (cada párrafo debe ir entre las dos etiquetas)</li>
    <li><b>&lt;br/&gt; </b>: Retorno de carro.</li>
    <li><b>&lt;b&gt; texto &lt;/b&gt;</b>: Negrita. (poner el texto deseado entre las dos etiquetas, inicio y cierre)</li>
    <li><b>&lt;u&gt; texto &lt;/u&gt;</b>: Subrayado. (poner el texto deseado entre las dos etiquetas, inicio y cierre)</li>
    <li><b>&lt;i&gt; texto &lt;/i&gt;</b>: Cursiva. (poner el texto deseado entre las dos etiquetas, inicio y cierre)</li>    
    </ul>
    </p>"
;

    
//Agregar clientes a la base de datos
    
echo"<h6>Agregar clientes</h6>";
    echo
"<p><i>Los campos marcados con * son obligatorios</i></p>";
    echo
"<form action=\"gestionclientes.php\" method=\"post\">
    Nombre*:<input type=\"text\" name=\"nombre\" size=\"30\"></input><br>
    Apellidos*:<input type=\"text\" name=\"apellidos\" size=\"50\"></input><br>
    Dirección*:<input type=\"text\" name=\"direccion\" size=\"50\" maxlength=\"50\"></input><br>
    Ciudad*:<input type=\"text\" name=\"ciudad\" size=\"30\" maxlength=\"30\"></input><br>
    Pais*:<input type=\"text\" name=\"pais\" size=\"30\" maxlength=\"30\"></input><br>
    E-mail*:<input type=\"text\" name=\"email\" size=\"30\" maxlength=\"30\"></input><br>
    Empresa*:<input type=\"text\" name=\"empresa\" size=\"30\" maxlength=\"30\"></input><br>
    Fax*:<input type=\"text\" name=\"fax\" size=\"30\" maxlength=\"30\"></input><br>
    Teléfono*:<input type=\"text\" name=\"telefono\" size=\"30\" maxlength=\"30\"></input><br>
    Profesión*:<input type=\"text\" name=\"profesion\" size=\"30\" maxlength=\"30\"></input><br>
    <input type=\"submit\" name=\"agregardisco\" value=\"Enviar\" class=\"botonformu\"></input>
    </form>"
;
    
//introducimos el nuevo registro en la tabla mia
    
if(isset($nombre)&&isset($apellidos)&&isset($direccion)&&isset($ciudad)&&isset($pais)&&isset($email)&&isset($empresa)&&isset($fax)&&isset($telefono)&&isset($profesion)){
            if(
$nombre!='' && $apellidos!='' && $direccion!='' && $ciudad!='' && $pais!='' && $email!='' && $empresa!='' && $fax!='' && $telefono!='' && $profesion!=''){
            
mysql_query("INSERT INTO mia (nombre,apellidos,direccion,ciudad,pais,email,empresa,fax,telefono,profesion) values ('','$nombre','$apellidos','$direccion','$ciudad','$pais','$email','$empresa','$fax','$telefono','$profesion') "); 
            echo 
'<b>Clientes actualizados con éxito</b>'
            }else echo 
'<b>Por favor, rellena todos los campos.</b>';
        }
    echo
"<hr noshade color=\"gray\"></hr>";
    
    echo
"<p>Aquí puedes ver todos los clientes que existen actualmente en la base de datos:</p>";

    
//Consulta sql, que se guarda en una variable
    
$sql=mysql_query("SELECT id_c,nombre,apellidos,direccion,ciudad,pais,email,empresa,fax,telefono,profesion FROM mia");

    
//Mientras existan datos en la tabla, mostrarlos:
    
while($result=mysql_fetch_array($sql)){
        echo
"<table border=1 bordercolor=\"#000000\">
        <tr>
        <td>"
;

        echo 
"<b>"; echo $result['nombre']; echo"</b><br>";
        echo 
"<b>"; echo $result['apellildos']; echo"</b><br>";
        echo 
"<i> ( Cliente cuyo e-mail y teléfono es: "; echo $result['email']; echo"-"; echo $result['telefono']; echo" )</i><br>";
        echo 
$result['empresa']; echo "<br>";
        
        
//Borrar clientes de la base de datos
        
$identif=$result['id_c'];
        echo
"<table><tr><td>";
        echo
"<form action=\"gestionclientes.php\" method=\"post\">
        <input type='hidden' name='num' value='$identif'></input>
        <input type=\"submit\" name=\"borrarcliente\" value=\"Borrar\" class=\"botonformu\"></input>
        </form></td><td>"
;        
        echo
"<form action=\"editarcliente.php\" method=\"post\">
        <input type='hidden' name='num' value='$identif'></input>
        <input type=\"submit\" name=\"editarcliente\" value=\"Editar\" class=\"botonformu\"></input>
        </form></td></tr></table>"
;    
        
//borramos o editamos el cliente elegido de la base de datos
        
if(isset($borrarcliente)){
            
mysql_query("DELETE FROM mia WHERE id_c=$num"); 
        }else if(isset(
$editarcliente)){
            include(
"editarcliente.php");
        }
        
        echo
"</td>
        </tr>
        </table>"
;
    }
        
}else{
echo 
'Está intentando acceder a una sección solo para administradores.';
}
echo
"</div>";
echo
"</div>";

include(
"indexdown.php");
?>
Gracias

Última edición por Cluster; 24/10/2006 a las 11:29 Razón: Colerado código PHP . .por favor usar el botón "PHP".
  #2 (permalink)  
Antiguo 24/10/2006, 10:43
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Hola, quizas tengas algun error de consulta o de conexion de base de datos.
cuando hagas una mysql_query() luego pon un or die(mysql_error());
asi sabras si la consulta es correcta.

kedaria algoa asi:

Código PHP:
mysql_query("tuconsulta") or die(mysql_error()); 
saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #3 (permalink)  
Antiguo 24/10/2006, 10:58
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años
Puntos: 3
Buenas, lo que tambien puedes hacer, es un echo de la sentencia sql, la copias y la pegas en tu gestor de base de datos y miras a ver si es correcta. Por lo menos sabras que la consulta está bien.
Suerte.
  #4 (permalink)  
Antiguo 24/10/2006, 11:10
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
la conexion es correcta, no es por eso q me falla.
  #5 (permalink)  
Antiguo 24/10/2006, 11:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ahora que "coloreé" el código .. se obseva que usas sesiones ($_SESSION ..)

¿Estás seguro que tu código entra a la seccción que coresponde (bajo tu if() que actua sobre tu variable de sesión)?

¿Las sesiones en general te funcionan (con pruebas sobre otra sección o aplicación que las use)?.

Por cierto .. tomas las variables de tus formularios en forma "global": tipo .. $nombre_variable?

Debes USAR el array supeglobal asociado:

$_POST['nombre_variable'] (siendo nombre_variable alguna que defines en tu formulario HTML).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 24/10/2006, 11:54
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Y si cambias tu código por este otro:

Código PHP:
<?php
include ( "indexup.php" );
include ( 
"menuizquierda.php" );

echo 
"<div id=\"centro\">";
echo 
"<div id=\"centrodentro\" class=\"cuadrocentral\">";

if ( 
$_SESSION['level'] == )
{
   echo
"<h1>GESTIÓN DE LOS CLIENTES</h1>";

   echo
"<p>Para dar la configuración deseada al texto que introduzca, aquí tiene una lista 
   de las etiquetas HTML más importantes:
   <ul>
   <li><b>&lt;p&gt; párrafo &lt;/p&gt;</b>: Párrafo. (cada párrafo debe ir entre las dos etiquetas)</li>
   <li><b>&lt;br/&gt; </b>: Retorno de carro.</li>
   <li><b>&lt;b&gt; texto &lt;/b&gt;</b>: Negrita. (poner el texto deseado entre las dos etiquetas, inicio y cierre)</li>
   <li><b>&lt;u&gt; texto &lt;/u&gt;</b>: Subrayado. (poner el texto deseado entre las dos etiquetas, inicio y cierre)</li>
   <li><b>&lt;i&gt; texto &lt;/i&gt;</b>: Cursiva. (poner el texto deseado entre las dos etiquetas, inicio y cierre)</li> 
   </ul>
   </p>"
;

   
// Agregar clientes a la base de datos
   
echo "<h6>Agregar clientes</h6>";
   echo 
"<p><i>Los campos marcados con * son obligatorios</i></p>";
   echo 
"<form action=\"gestionclientes.php\" method=\"post\">
         Nombre*:<input type=\"text\" name=\"nombre\" size=\"30\"></input><br>
         Apellidos*:<input type=\"text\" name=\"apellidos\" size=\"50\"></input><br>
         Dirección*:<input type=\"text\" name=\"direccion\" size=\"50\" maxlength=\"50\"></input><br>
         Ciudad*:<input type=\"text\" name=\"ciudad\" size=\"30\" maxlength=\"30\"></input><br>
         Pais*:<input type=\"text\" name=\"pais\" size=\"30\" maxlength=\"30\"></input><br>
         E-mail*:<input type=\"text\" name=\"email\" size=\"30\" maxlength=\"30\"></input><br>
         Empresa*:<input type=\"text\" name=\"empresa\" size=\"30\" maxlength=\"30\"></input><br>
         Fax*:<input type=\"text\" name=\"fax\" size=\"30\" maxlength=\"30\"></input><br>
         Teléfono*:<input type=\"text\" name=\"telefono\" size=\"30\" maxlength=\"30\"></input><br>
         Profesión*:<input type=\"text\" name=\"profesion\" size=\"30\" maxlength=\"30\"></input><br>
         <input type=\"submit\" name=\"agregardisco\" value=\"Enviar\" class=\"botonformu\"></input>
         </form>"
;

   
// introducimos el nuevo registro en la tabla mia
   
if ( isset ( $_POST['agregardisco'] ) )
   {  
// creamos nombres de variables cortos
      
$nombre trim $_POST['nombre'] );
      
$apellidos trim $_POST['apellidos'] );
      
$direccion trim $_POST['direccion'] );
      
$ciudad trim $_POST['ciudad'] );
      
$pais trim $_POST['pais'] );
      
$email trim $_POST['email'] );
      
$empresa trim $_POST['empresa'] );
      
$fax trim $_POST['fax'] );
      
$telefono trim $_POST['telefono'] );
      
$profesion trim $_POST['profesion'] );

      if ( !empty ( 
$nombre ) && !empty ( $apellidos ) && !empty ( $direccion ) && !empty ( $ciudad ) && !empty ( $pais ) && !empty ( $email ) && !empty ( $empresa ) && !empty ( $fax ) && !empty ( $telefono ) && !empty ( $profesion ) )
      {
         
mysql_query "INSERT INTO mia ( nombre,apellidos,direccion,ciudad,pais,email,empresa,fax,telefono,profesion ) VALUES ( '".$nombre."','".$apellidos."','".$direccion."','".$ciudad."', '".pais."','".$email."','".$empresa."','".$fax."','".$telefono."','".$profesion."'" ) or die ( mysql_error() );
         echo 
'<b>Clientes actualizados con éxito</b>'
      }
      else
      {
         echo 
'<b>Por favor, rellena todos los campos.</b>';
      }
   }

   
//borramos el cliente elegido de la base de datos
   
if( isset ( $_POST['borrarcliente'] ) )
   {
      
$num $_POST['num'];
      
mysql_query "DELETE FROM mia WHERE id_c = ".$num ) or die ( mysql_error() );
   }

   echo 
"<hr noshade color=\"gray\"></hr>";

   echo
"<p>Aquí puedes ver todos los clientes que existen actualmente en la base de datos:</p>";

   
//Consulta sql, que se guarda en una variable
   
$sql mysql_query "SELECT * FROM mia" ) or die ( mysql_error() );

   
//Mientras existan datos en la tabla, mostrarlos:
   
while ( $result mysql_fetch_array $sql ) )
   {
      echo
"<table border=1 bordercolor=\"#000000\"><tr><td>";

      echo 
"<b>".$result['nombre']."</b><br>";
      echo 
"<b>".$result['apellildos']."</b><br>";
      echo 
"<i> ( Cliente cuyo e-mail y teléfono es: ".$result['email']."-".$result['telefono']." )</i><br>";
      echo 
$result['empresa']."<br>";

      
//Borrar clientes de la base de datos
      
$identif $result['id_c'];

      echo 
"<table><tr><td>";
      echo 
"<form action=\"gestionclientes.php\" method=\"post\">
            <input type=\"hidden\" name=\"num\" value=\""
.$identif."\"></input>
            <input type=\"submit\" name=\"borrarcliente\" value=\"Borrar\" class=\"botonformu\"></input>
            </form></td><td>"
;

      echo
"<form action=\"editarcliente.php\" method=\"post\">
           <input type=\"hidden\" name=\"num\" value=\""
.$identif."\"></input>
           <input type=\"submit\" name=\"editarcliente\" value=\"Editar\" class=\"botonformu\"></input>
           </form></td></tr></table>"
;

      echo
"</td></tr></table>";
   }
}
else
{
   echo 
'Está intentando acceder a una sección solo para administradores.';
}
echo
"</div>";
echo
"</div>";

include(
"indexdown.php");
?>
Esto suponiendo que tu archivo se llama gestionclientes.php y que en alguno de tus dos primeros includes defines la conexion y la seleccion de la base de datos que utilizarán tus consultas (donde se encuentra la tabla "mia") y que serían unas líneas parecidas a estas:


Código PHP:
mysql_pconnect 'servername''username''password' );
mysql_select_db 'basededatos' ); 
De lo contrario no te va a funcionar.Espero te sirva o por lo menos te de una idea. Suerte

Última edición por Erikfrancisco; 24/10/2006 a las 12:18
  #7 (permalink)  
Antiguo 25/10/2006, 08:03
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
hola buenas, he utilizado el codigo que me habeis colocado y me da el siguiente error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

alguien sabe a q se puede deber???
es algo de las comillas, pero en que campos estarán mal usadas y que habria q pones??? gracias
  #8 (permalink)  
Antiguo 25/10/2006, 08:11
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Buenas Gildor,
ese error es de tu consulta sql, no te dice nada de q sean las comillas sino q el error esta cerca de las comillas, revisa bien los campos q usas, y las variables q usas a ver si te llegan bien.
imprime tus variables antes de usarlas y asi sabras si te llegan o no.

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #9 (permalink)  
Antiguo 25/10/2006, 08:33
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
haber, en el if de la consulta me entra, xq sino relleno todos los campos me sale el error, asi q el fallo está en la consulta, pero yo creo q las variables están bien colocadas, asi q no se porque puede ser el error
  #10 (permalink)  
Antiguo 25/10/2006, 09:04
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
nadie lo encuentra, no?joer, es q ademas, tengo otra funcion, q es insertar usuarios, q hago practicamente lo mismo, lo unico q lleva password, porque son los usuarios de la web, y no me da ningun problema, pero esto na.
  #11 (permalink)  
Antiguo 25/10/2006, 09:05
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
¿Tus campos fax y telefono son numéricos? Por que si es así entonces el error se debe a que le estas intentando insertar texto cuando ese campo sólo hacepta números. Para solucionar esto, sólo hay que quitar las comillas simples de esos campos (hay que modificar los VALUES de la consulta) así:

Código PHP:
VALUES '".$nombre."','".$apellidos."','".$direccion."','".$ciudad."''".pais."','".$email."','".$empresa."',".$fax.",".$telefono.",'".$profesion."'" ) 
Suerte
  #12 (permalink)  
Antiguo 25/10/2006, 09:15
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
no, en la bd los tengo declarados como varchar para evitar problemas, de todas formas, a lo mejor tiene algo q ver el insertar con el hecho, de que en la tabla clientes tengo un "id_c", aunq como lo tego declarado como auto_increment, no tendria q haber problemas, no?
Gracias
  #13 (permalink)  
Antiguo 25/10/2006, 09:28
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Creo que ya se por que el error, cambia el value:
Código PHP:
VALUES '".$nombre."','".$apellidos."','".$direccion."','".$ciudad."''".pais."','".$email."','".$empresa."','".$fax."','".$telefono."','".$profesion."'" ) 
Por este otro:
Código PHP:
VALUES '".$nombre."','".$apellidos."','".$direccion."','".$ciudad."''".$pais."','".$email."','".$empresa."','".$fax."','".$telefono."','".$profesion."'" ) 
Me acabo de dar cuenta que la variable pais no tenia el simbolo $

Si aún así no te funciona, cambia el query:
Código PHP:
mysql_query "INSERT INTO mia ( nombre,apellidos,direccion,ciudad,pais,email,empresa,fax,telefono,profesion ) VALUES ( '".$nombre."','".$apellidos."','".$direccion."','".$ciudad."', '".$pais."','".$email."','".$empresa."','".$fax."','".$telefono."','".$profesion."'" ) or die ( mysql_error() ); 
Por este otro:
Código PHP:
mysql_query "INSERT INTO mia ( id_c,nombre,apellidos,direccion,ciudad,pais,email,empresa,fax,telefono,profesion ) VALUES ( NULL,'".$nombre."','".$apellidos."','".$direccion."','".$ciudad."', '".$pais."','".$email."','".$empresa."','".$fax."','".$telefono."','".$profesion."'" ) or die ( mysql_error() ); 
Suerte
  #14 (permalink)  
Antiguo 25/10/2006, 09:32
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
sigue sin funcionar, me sigue dando el mismo error

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

y es q me estoy volviendo loco, porque creo q esta bien.
  #15 (permalink)  
Antiguo 25/10/2006, 09:47
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Ups, se me olvido también avisarte que faltaba cerrar bien el paréntesis del value:
Código PHP:
mysql_query "INSERT INTO mia ( nombre,apellidos,direccion,ciudad,pais,email,empresa,fax,telefono,profesion ) VALUES ( '".$nombre."','".$apellidos."','".$direccion."','".$ciudad."', '".$pais."','".$email."','".$empresa."','".$fax."','".$telefono."','".$profesion."' )" ) or die ( mysql_error() ); 
Suerte
  #16 (permalink)  
Antiguo 25/10/2006, 09:56
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Ahora me sale este error:

Parse error: parse error, unexpected ')' in C:\apachefriends\xampp\htdocs\Bcpass\gestionclient es.php on line 58

yo ya no se q hacer, cada vez es una cosa distinta, de todas formas gracias por las molestias q te estoy causando
  #17 (permalink)  
Antiguo 25/10/2006, 09:59
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
he modificado y ahora me sale este error

Parse error: parse error, unexpected '"' in C:\apachefriends\xampp\htdocs\Bcpass\gestionclient es.php on line 57
  #18 (permalink)  
Antiguo 25/10/2006, 10:02
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
ya esta, joder, por fin inserto, muchas gracias tio, lastima q vivas en america, si fueras de españa te invitaba a cervezas.
Ahora voy a ver si me van los borrar y editar, espero poder contar con tu ayuda.Gracias
  #19 (permalink)  
Antiguo 25/10/2006, 10:05
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
No estaría demas que pusieras que fue lo que modificaste para que los que lo lean sepan cual fue el motivo de esos mensajes de error.
  #20 (permalink)  
Antiguo 25/10/2006, 10:09
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
los fallos eran xq soy un inutil, y habia puesto demasiadas comillas y demasiadas leches y me daba unexpected, vamos, errores de sintaxis.
Por cierto el borrar me funciona, pero el editar me entra en mi bucle, pero me ejecuta la parte q me da error, es decir, q no me pudo ejecutar la consulta, voy a ver q pasa y si eso te pregunto, se q soy un pesado tio, pero lo siento, no me mandes a la mierda aun. Gracias
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 07:26.