Foros del Web » Programando para Internet » PHP »

Cómo puedo lograr lo siguiente?

Estas en el tema de Cómo puedo lograr lo siguiente? en el foro de PHP en Foros del Web. Buenas, tengo este sistema para enviar comentarios. Ahora bien, le hice de todo pero lo q no consigo es lo siguiente: Lo acomode para q ...
  #1 (permalink)  
Antiguo 29/05/2010, 12:44
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Cómo puedo lograr lo siguiente?

Buenas, tengo este sistema para enviar comentarios.
Ahora bien, le hice de todo pero lo q no consigo es lo siguiente:
Lo acomode para q el usuario comente con su nick si es q esta registrado y si no, comenta como Anonimo, hasta ahi todo bien pero lo q quiero lograr es q si el el usuario comenta como Anonimo, q el campo email lo complete si o si y q no le deje enviar el comentario si no puso el mail pero esto lo quiero solamente si el usuario es anonimo y si el usuario esta registrado, directamente ni le muestro el campo email, como pueden ver en el form le puse esa condicion.
Código PHP:
<?php
session_start
();
$nick=$_SESSION[usuario'];
if(isset($_POST['
enviar']) && $_POST['enviar'] == 'Comentar'){

if(!empty($_POST['
artUser']) && $_POST['artCom']){

$dia= date('
d',time() + 14400 );
$mes= date('
m',time() + 14400 );
$anio= date('
Y',time() + 14400 );
$hora= date('
H:i:s',time() + 14400 );
$articulo=$_GET['
articulo'];
$comart=$_POST['
comart'];
$artUser=$_POST['
artUser'];
$artEmail=$_POST['
artEmail'];
$artCom=$_POST['
artCom'];


$sqlInsertCom = mysql_query("INSERT INTO comart (dia, mes, anio, hora, articulo, comart, artUser, artEmail, artCom) VALUES ('
$dia', '$mes', '$anio', '$hora', '$articulo','$comart', '$artUser', '$artEmail', '$artCom')", $db_link)
or die(mysql_error());

header("Location:".$_SERVER['
HTTP_REFERER']);
}else{
// error de campo vacio
echo "Algun campo esta vacio";
}
}
?>
<form name="comart" action="<?php $_SERVER['
PHP_SELF']; ?>" method="post" style="width: 426px">
<input type="hidden" name="comart" value="'
$comart'">
<? if($nick){
echo"";
}else{
echo'
<fieldset>
<
label for="email"></label><br>
<
font style="color:purple" size="3px">Correo electrónico:</font><br>
<
input type="text" name="artEmail" onkeyup="checkEmail(this);" style="font:normal 11px verdana; color:purple;" size="45" maxlength="45"><span class="hint">Introduzca una dirección de e-mail real (no será publicado).</span>
</
fieldset>;
}
?>
<p style="width: 415px">
<font style="color:purple" size="3px">Escribe tu comentario:</font><br>
<textarea id="artCom" name="artCom" style="font:normal 11px verdana; color:purple; width: 405px; height: 113px;" rows="1"></textarea></p>
<p>
<input type="submit" name="enviar" value="Comentar">
<font style="color:purple" size="3px" title="Para no comentar como Anónimo, puedes registrarte.">Usuario: </font>
<input style= "border:0px; background-color: #EDEDE4" type="text" name="artUser" id="artUser" value="<? if(isset($nick)){
echo 
$nick;
}else{
echo 
"Anónimo";
?>" maxlength="0">
</p>
</form>
Asi se ve si es Anonimo:


Y asi si esta registrado:


Se le agrego en la segunda condicion de campos vacios, me afecta tanto al usuario anonimo como al registrado y unicamente quiero q complete el campo el usuario anonimo.
Gracias.
Saludos.
  #2 (permalink)  
Antiguo 29/05/2010, 16:56
Avatar de ColdFusion  
Fecha de Ingreso: octubre-2008
Ubicación: Tocoa, Colon Honduras C.A.
Mensajes: 419
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Cómo puedo lograr lo siguiente?

Mira mi hermano todo esta en esto $_SESSION[usuario'];

if (isset($_SESSION[usuario'])) {
muestro lo que quier
}else{
muestro esto
}

ahora bien para el usuario registrado lo que tenes q hacer es ingresar a la base de datos con el $_SESSION[usuario'];
y sacar el nick y correo y ponerlos en un input oculto
para enviarlos a la hora de dar click en submit

EJMPLO
<?
$nick = $_POST['nombre'];
$correo = $_POST['correo'];
$nombre = $_SESSION[usuario'];

if (!isset($_SESSION[usuario'])) {
$nick = "Anonimo";
}else{
$resultados = mysql_query("SELECT nombre, correo FROM tabla WHERE usuario = '$nombre'");
$datos = mysql_fetch_array($resultados)
$nick = $datos['usuario'];
$correo = $datos['correo'];
}
//ya tenemos los datos
?>
vamos al form
<form name="comentar" method="post" action="mismo.php">
<?
if (!isset($_SESSION[usuario'])) {
echo '<input type="text" name="nombre">';
echo '<input type="text" name="correo">';
}else{
echo("Logeado como: " . $nick);
echo '<input type="hidden" name="nombre" value="' . $nick . '">';
echo '<input type="hidden" name="correo" value="' . $correo . '">';
}
?>
<textarea name="comentario"></textarea>
<input type="submit" class="btn" value="Enviar">
</form>

ahi va la idea, espero que te ayude

Última edición por ColdFusion; 29/05/2010 a las 17:14
  #3 (permalink)  
Antiguo 29/05/2010, 17:40
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Cómo puedo lograr lo siguiente?

Muchas gracias.
Le dije q si la sesion existe, q muestre todo el proceso sin checkear el email y si es anonimo muestra otra vez todo el proceso pero checkeando el email.
Despues de todo eso creo la variable $nick y sigue todo como estaba.
  #4 (permalink)  
Antiguo 29/05/2010, 19:29
Avatar de jamesjara  
Fecha de Ingreso: mayo-2008
Ubicación: san jose
Mensajes: 449
Antigüedad: 16 años
Puntos: 7
Respuesta: Cómo puedo lograr lo siguiente?

esta bien pero no te recomiendo que las pongas en hidden porque puede ser modificads :-s
__________________
X7CLOUD El webservice latino!
Compatible
con mysql,sql,sqlitte.
Compatible con extjs , sencha , smargwt, Gwt , Jquery , Charts, Streaming.
  #5 (permalink)  
Antiguo 29/05/2010, 20:50
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 14 años, 4 meses
Puntos: 7
Respuesta: Cómo puedo lograr lo siguiente?

Luego para validar el mail (obligatorio) tienes dos opciones 1) como te dijo Coldfusion y dividir tu codigo y tu formulario en funciona de una u otra posibilidad o 2) hacer todo en un solo formulario, en donde te tocaría usar Javascript para las validaciones... El primer camino me parece rápido para resolver y el segundo al "más elegante...", pero depente de tus conocimientos en javascript y esas cositas... Saludos y éxitos

Etiquetas: siguiente
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 14:30.