Error en Registro por Clases (POO)

Iniciado por mokoMonster, 19 Noviembre 2011, 00:07 AM

0 Miembros y 1 Visitante están viendo este tema.

mokoMonster

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
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

Shell Root

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.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

mokoMonster

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 :)
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

s00rk

#3
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;

mokoMonster

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

}
}
?>


"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

s00rk

Error solucionado.

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

mokoMonster

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 :)
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange