Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: mokoMonster en 19 Noviembre 2011, 00:07 am



Título: Error en Registro por Clases (POO)
Publicado por: mokoMonster en 19 Noviembre 2011, 00:07 am
Hola, no se que es lo que ocurre que mi codigo no registra lo pedido, me pueden ayudar?

Código:
<?php
// Class Register
class RegistrerQuote {
var $name;
var $age;
var $last_name;
var $company;
var $phone;
var $maiil;
var $project_type;
var $project_due;
var $fiile;


public function Registrer(){
$nombre = htmlspecialchars(strip_tags($_POST['storename']));
$apellido = htmlspecialchars(strip_tags($_POST['storelastname']));
$edad = htmlspecialchars(strip_tags($_POST['storeage']));
$compania = htmlspecialchars(strip_tags($_POST['storecompany']));
$telefono = htmlspecialchars(strip_tags($_POST['storephone']));
$email = htmlspecialchars(strip_tags($_POST['storemail']));
$tipo = htmlspecialchars(strip_tags($_POST['storeinfo']));
$entrega = htmlspecialchars(strip_tags($_POST['storedataneeded']));
$archivo = 'a'; //$_FILES['storefile']['name'];

$this->name = $nombre;
$this->last_name = $apellido;
$this->age = $edad;
$this->company = $compania;
$this->phone = $telefono;
$this->maiil = $email;
$this->project_type = $tipo;
$this->project_due = $entrega;
$this->fiile = $archivo;

connectBaby();

/* Compruebo que la url del archivo no exista en la tabla lb_quotes */
$check = printf("SELECT qt_file_url FROM lb_quotes WHERE qt_file_url = '%s'",$this->maiil);
$query = mysql_query($check)or die(mysql_error());

// Error
if(mysql_num_rows($query)){
echo 'Cambie el nombre del archivo, le sugerimos agregue la fecha.<br />';
mysql_free_result($query) or die(mysql_error());
exit;
}else{
$insert = printf("INSERT INTO lb_quotes
(qt_name,qt_last_name,qt_age,qt_company,qt_phone,qt_mail,qt_type,qt_project_due,qt_file_url) VALUES
('%s','%s','%s','%s','%s','%s','%s','%s','%s')",
$this->name,
$this->last_name,
$this->age,
$this->company,
$this->phone,
$this->maiil,
$this->project_type,
$this->project_due,
$this->fiile);

$query = mysql_query($insert) or die(mysql_error());
if(mysql_affected_rows()){
echo 'EL usuario $this->name se registro correctamente.';
}else{ echo 'error'; mysql_free_result($query); }
exit;
}
// Error

}
}
?>

El error esta entre los comentarios  //Error pero no entinedo cual es, muchas gracias de antemano.
Saluods


Título: Re: Error en Registro por Clases (POO)
Publicado por: Shell Root en 19 Noviembre 2011, 04:30 am
Pues como siempre lo he dicho, mira paso por paso enviado un mensaje de estado. Verifica si la query es correcta, para eso imprimela.
Código
  1. print "<b>Query:</b>".$insert;
Después verifica esa misma query dentro del motor de base de datos.

Verifica todo, desde la conexión hasta la ejecución de la query.


Título: Re: Error en Registro por Clases (POO)
Publicado por: mokoMonster en 19 Noviembre 2011, 04:50 am
La conexion a la BD esta bien, uso esto:
Código:
class config{
        function connectBaby(){
             $server='localhost';
             $database='lb';
             $db_user='root';
             $db_pass='';
             mysql_connect($server,$db_user,$db_pass) or die('Error conectando');
             mysql_select_db($database) or die('Error seleccionando');
        }
    }

Y mira, quise imprimir las query pero no imprime nada.
Código:
<?php
// Class Register
class RegistrerQuote {
var $name;
var $age;
var $last_name;
var $company;
var $phone;
var $maiil;
var $project_type;
var $project_due;
var $fiile;


public function Registrer(){
$nombre = htmlspecialchars(strip_tags($_POST['storename']));
$apellido = htmlspecialchars(strip_tags($_POST['storelastname']));
$edad = htmlspecialchars(strip_tags($_POST['storeage']));
$compania = htmlspecialchars(strip_tags($_POST['storecompany']));
$telefono = htmlspecialchars(strip_tags($_POST['storephone']));
$email = htmlspecialchars(strip_tags($_POST['storemail']));
$tipo = htmlspecialchars(strip_tags($_POST['storeinfo']));
$entrega = htmlspecialchars(strip_tags($_POST['storedataneeded']));
$archivo = 'a'; //$_FILES['storefile']['name'];

$this->name = $nombre;
$this->last_name = $apellido;
$this->age = $edad;
$this->company = $compania;
$this->phone = $telefono;
$this->maiil = $email;
$this->project_type = $tipo;
$this->project_due = $entrega;
$this->fiile = $archivo;

connectBaby();

/* Compruebo que la url del archivo no exista en la tabla lb_quotes */
$check = printf("SELECT qt_file_url FROM lb_quotes WHERE qt_file_url = '%s'",$this->maiil);
$query = mysql_query($check)or die(mysql_error());
print 'QUery: '.$query;
// Error
if(mysql_num_rows($query)){
echo 'Cambie el nombre del archivo, le sugerimos agregue la fecha.<br />';
mysql_free_result($query) or die(mysql_error());
exit;
}else{
$insert = printf("INSERT INTO lb_quotes
(qt_name,qt_last_name,qt_age,qt_company,qt_phone,qt_mail,qt_type,qt_project_due,qt_file_url) VALUES
('%s','%s','%s','%s','%s','%s','%s','%s','%s')",
$this->name,
$this->last_name,
$this->age,
$this->company,
$this->phone,
$this->maiil,
$this->project_type,
$this->project_due,
$this->fiile);

$query = mysql_query($insert) or die(mysql_error());
print 'QUery: '.$query;
if(mysql_affected_rows()){
// Hospital de cardiologia
echo 'EL usuario $this->name se registro correctamente.';
}else{ echo 'error'; mysql_free_result($query); }
exit;
}
// Error

}
}
?>

Este es el codigo del formulario
Código:
<form action="" method="POST" enctype="multipart/form-data"   onSubmit = "return validar(this)" >
<table border="0" style="vertical-align:auto;">
<tr><td>Nombre:</td><td> <input type="text" name="storename" maxlength="75" /></td></tr>
<tr><td>Empresa/ Organización:</td><td> <input type="text" name="storecompany" maxlength="100" /></td></tr>
<tr><td>E-mail:</td><td> <input type="text" name="storemail" maxlength="100" /></td></tr>
<tr><td>Teléfono:</td><td> <input type="text" name="storephone" maxlength="75" /></td></tr>
<tr><td>Tipo de proyect/ Mensaje:</td><td><textarea name="storeinfo"></textarea></td></tr>
<tr><td>Fecha de entrega:</td><td> <input type="text" name="storedateneeded" maxlength="75" /></td></tr>
<tr><td>Enviar mi documento:</td><td> <input type="file" name="storefile"  /></td></tr>
<tr><td colspan="2"><input type="submit" value="Send" /></td></tr>
</table>
</form>

Como ves? Gracias por tu ayuda :)


Título: Re: Error en Registro por Clases (POO)
Publicado por: s00rk en 19 Noviembre 2011, 04:56 am
El error que alcanso a ver asi es solamente el de printf, que deberia ser mas bien sprintf.

printf - Imprime un string con formato
sprintf - Devuelve un string con formato que en este caso es lo que ocupamos

intenta cambiando los printf a sprintf y ahi me cuentas n_n

Otra cosa es que al poner algo asi:
Código
  1. $query = mysql_query($insert) or die(mysql_error());
  2. echo 'EL usuario $this->name se registro correctamente.';
  3. }else{ echo 'error'; mysql_free_result($query); }
Esto si la query no se ejecuto el if y demas ya no saldra porque el die anterior habra detenido el codigo por lo que yo recomendaria hacer algo asi:
Código
  1. $query = mysql_query($insert);
  2. if($query){
  3. echo 'EL usuario $this->name se registro correctamente.';
  4. }else{
  5.                                echo 'Error: '.mysql_error(); mysql_free_result($query);
  6.                        }
  7.  
  8.  

P.D. Revise como deceabas imprimir la query y ahi efectivamente imprimes la query, pero lo que el amigo quiso decir era el codigo de la consulta que devio haber sido el $check, quedando asi:
echo "Query: ".$check;


Título: Re: Error en Registro por Clases (POO)
Publicado por: mokoMonster en 19 Noviembre 2011, 05:08 am
Ya lo tenia asi antes, pero no funciono tampoco, lo pongo actualizado:

Código:
<?php
// Class Register
class RegistrerQuote {
var $name;
var $age;
var $last_name;
var $company;
var $phone;
var $maiil;
var $project_type;
var $project_due;
var $fiile;


public function Registrer(){
$nombre = htmlspecialchars(strip_tags($_POST['storename']));
$apellido = htmlspecialchars(strip_tags($_POST['storelastname']));
$edad = htmlspecialchars(strip_tags($_POST['storeage']));
$compania = htmlspecialchars(strip_tags($_POST['storecompany']));
$telefono = htmlspecialchars(strip_tags($_POST['storephone']));
$email = htmlspecialchars(strip_tags($_POST['storemail']));
$tipo = htmlspecialchars(strip_tags($_POST['storeinfo']));
$entrega = htmlspecialchars(strip_tags($_POST['storedataneeded']));
$archivo = 'a'; //$_FILES['storefile']['name'];

$this->name = $nombre;
$this->last_name = $apellido;
$this->age = $edad;
$this->company = $compania;
$this->phone = $telefono;
$this->maiil = $email;
$this->project_type = $tipo;
$this->project_due = $entrega;
$this->fiile = $archivo;

connectBaby();

/* Compruebo que la url del archivo no exista en la tabla lb_quotes */
$check = sprintf("SELECT qt_file_url FROM lb_quotes WHERE qt_file_url = '%s'",$this->maiil);
$query = mysql_query($check)or die(mysql_error());
print 'QUery: '.$check;
// Error
if(mysql_num_rows($query)){
echo 'Cambie el nombre del archivo, le sugerimos agregue la fecha.<br />';
mysql_free_result($query) or die(mysql_error());
exit;
}else{
$insert = sprintf("INSERT INTO lb_quotes
(qt_name,qt_last_name,qt_age,qt_company,qt_phone,qt_mail,qt_type,qt_project_due,qt_file_url) VALUES
('%s','%s','%s','%s','%s','%s','%s','%s','%s')",
$this->name,
$this->last_name,
$this->age,
$this->company,
$this->phone,
$this->maiil,
$this->project_type,
$this->project_due,
$this->fiile);

$query = mysql_query($insert) or die(mysql_error());
print 'QUery: '.$check;
if(mysql_affected_rows()){
// Hospital de cardiologia
echo 'EL usuario $this->name se registro correctamente.';
}else{ echo 'error'; mysql_free_result($query); }
exit;
}
// Error

}
}
?>



Título: Re: Error en Registro por Clases (POO)
Publicado por: s00rk en 19 Noviembre 2011, 08:10 am
Error solucionado.

Faltaba crear el objeto y enviar los parametros a la funcion del objeto.


Título: Re: Error en Registro por Clases (POO)
Publicado por: mokoMonster en 20 Noviembre 2011, 04:37 am
Error solucionado.

Faltaba crear el objeto y enviar los parametros a la funcion del objeto.

Yeahhh :) gracias bro :)