Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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?

<?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 (php) [Seleccionar]
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:
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.
<?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

<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 (php) [Seleccionar]

$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;

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 (php) [Seleccionar]

$query = mysql_query($insert);
if($query){
echo 'EL usuario $this->name se registro correctamente.';
}else{
                                echo 'Error: '.mysql_error(); mysql_free_result($query);
                        }



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:

<?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
Cita de: s00rk en 19 Noviembre 2011, 08:10 AM
Error solucionado.

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

Yeahhh :) gracias bro :)