Pequeño inconveniente con la selección de una tabla de datos XD!

Es que, me lo selecciona bien y todo, pero cuando no hay datos, aparecen los campos: Alumno, email, materia, pero sin nada, y se me crean en la base de datos o.O supongo que es porque no está funcionando el while, acá el código:

<?php
$conexion=mysql_connect("mysql.99h.com.ar","[color=red]miuser[/color]","[color=orange]mipass[/color]") or die ("Problemas con la conexión a la base de datos");
mysql_select_db("[color=blue]mibase[/color]", $conexion) or die ("Problemas en la selección de la tabla/base de datos");
$registros=mysql_query("select alumno, mail, materia from alumnos") or die ("Problemas en el select".mysql_error());
while($reg=mysql_fetch_array($registros))
{
echo "Alumno:".$reg["alumno"]."<br />";
echo "E-mail (@):".$reg["mail"]."<br />";
echo "Materia seleccionado:";
switch ($reg["materia"])
{
case 1: echo "Lengua<br />";
break;
case 2: echo "Filososfía<br />";
break;
case 3: echo "Aritmética<br />";
break;
}
echo "<br />";
}
?>

Jaja, este era el primer formulario para insertar los datos:

<form action="[color=red]mipagina[/color]" method="POST">
Alumno: <input type="text" name="alumno"><br />
Email: <input type="text" name="mail"><br />
Materia a estudiar: <select name="materia">
<option value="1">Lengua</option>
<option value="2">Filosofía</option>
<option value="3">Aritmética</option>
</select><br />
<input type="submit" value="Enviar">
</form>

Y cada vez que recargo la página se ve, arriba de lo que inserté:

Alumno: *vacío*
Email: *vacío*
Materia: *vacío*

º-º

OMG, alguien sabe como lo soluciono?
Pues no te entendi bien , ¿Quieres que cuando haya datos vacios no muestre alumno,email,materia?

si es asi entonces intenta asi:

<?php
$conexion=mysql_connect("mysql.99h.com.ar","miuser","mipass") or die ("Problemas con la conexión a la base de datos");
mysql_select_db("mibase", $conexion) or die ("Problemas en la selección de la tabla/base de datos");
$registros=mysql_query("select alumno, mail, materia from alumnos") or die ("Problemas en el select".mysql_error());
$registros2 = mysql_num_rows($registros);
if($registros <= 0)
{
echo "";
}
else{

while($reg=mysql_fetch_array($registros))
{
echo "Alumno:".$reg["alumno"]."<br />";
echo "E-mail (@):".$reg["mail"]."<br />";
echo "Materia seleccionado:";
switch ($reg["materia"])
{
case 1: echo "Lengua<br />";
break;
case 2: echo "Filososfía<br />";
break;
case 3: echo "Aritmética<br />";
break;
}
echo "<br />";
}
}
?>
Sip, esa era la idea, pero no entiendo para que sirve la variable $registro2 con su función mysql_num_rows($registros)

No la veo mencionada en otra parte...
y cuenta la cantidad de registros que tiene $registros, por lo que si no es mayor que cero no hace nada. Buen aporte ;=)
Ah, jaja, ya me parecía, sería:

$registros2=mysql_num_rows($registros);
if ($registros2 <=0)
{
}

No?

Saludos!
Ah, ahora lo entiendo, pero sin embargo no funciona, JAJA.

Cada vez que recargo la página se crea en mi base de datos eso, y aparece:

Alumno: *vacio*
Email: *vacio*
Materia: *vacio*

Podrías probar el código para ver que tiene? Es una brujería D:!
Haber entonces se insertan datos en tu tabla de base de datos ??? ... o solo aparecen en pantalla Alumno,etc vacios ??
Esque se insertan y por eso se muestran!
Verás el formulario, el código para insertar y el que lo muestra están en la misma página.. lo había probado antes y me funcionaba! xd!

Se insertan y se muestran.

Saludos!
Entonces no me has mostrado todo el code porque yo no veo ningun codigo donde insertas en la bd :s
AH, JAJA, esque ahora junté todo en un mismo code, (para un sistema de comentarios medio linyera xd):

Acá el formulario:

<form action="comentarios.php" method="POST" class="form">
<span class="text">Autor:   </span><br />
<input type="text" name="autor"><br />
<span class="text">Comentario</span><br />
<textarea cols="30" rows="5" name="comentario"></textarea><br />
<input type="hidden" name="fecha" value="<?php date("d:m:Y")?>">
<input type="submit" value="Enviar comentario"><br />
</form>

Acá el php:

<?php
$conexion=mysql_connect("mysql.99h.com.ar", "miuser", "mipass") or die ("Problemas en la conexión mysql");
mysql_select_db("mibase", $conexion) or die ("Problemas en la selección de la base de datos");
mysql_query("INSERT INTO comentarios(autor,comentario) VALUES('".$_POST["autor"]."', '".$_POST["comentario"]."')") or die ("Problemas en al insertar en la tabla de datos".mysql_error());
$comentarios=mysql_query("select id,autor,comentario,fecha from comentarios") or die ("Problemas en el select".mysql_error());
$comentarios2 = mysql_num_rows($comentarios);
if($comentarios2 <= 0)
{
echo "<span class=\"comentario\">Este post no tiene comentarios, soyez le premier!</span>";
}
else{
while($com=mysql_fetch_array($comentarios))
{
echo "<div align=center><span class=\"comentario\"><strong>[ID:</strong>".$com["id"]."<strong>]     ".$com["autor"]."</strong></span></div>";
echo "<br />";
echo "<div align=center><span class=\"comentario\">".$com["comentario"]."</span></div>";
echo "<br />";
echo "<div align=center><span class=\"comentario2\">(".$com["fecha"].")</span></div>";
echo "<br />";
echo "<div align=center><span class=\"taringa\">------------------</span></div>";
echo "<br />";
}
}
mysql_close($conexion);
?>

Por cierto, ya que estamos, no me pone bien la fecha, en el formulario cree un campo escondido con un código php que tiene la fecha en la cual se publicó el comentario, ahora que lo pienso, tendría que poner más bien:

<input type="hidden" name="fecha" value="<?php $date=date("d:m:Y"); return $date;?>">

Sería así?

Bueno ahora son dos dudas, como poner la fecha en que se creó el comentario y como evitar que cada vez que recargo la página se cree un comentario vacío!

Saludos!

---Update---

Nope, así no funciona :B

Y me surgió otra duda, en esta parte del código php:

while($com=mysql_fetch_array($comentarios))

mysql_fetch_array, esa función, sirve para simbolizar de alguna manera lo seleccionado? JAJA, eso parece.

Saludos again!
Pues cuando!!!! .... sin ese insert nunca sabria cual es tu error.

el mysql_fetch_array devuelve la tabla de la base de datos y los parametros requeridos en el mysql_query() com un array y al pasarle el while recorre todo el array hasta llegar al final xD!

El codigo final sin fallos :

<?php
$conexion=mysql_connect("mysql.99h.com.ar", "miuser", "mipass") or die ("Problemas en la conexión mysql");
mysql_select_db("mibase", $conexion) or die ("Problemas en la selección de la base de datos");
mysql_query("INSERT INTO comentarios(autor,comentario) VALUES('".$_POST["autor"]."', '".$_POST["comentario"]."')") or die ("Problemas en al insertar en la tabla de datos".mysql_error());
$comentarios=mysql_query("select id,autor,comentario,fecha from comentarios") or die ("Problemas en el select".mysql_error());
$comentarios2 = mysql_num_rows($comentarios);
if($comentarios2 <= 0)
{
echo "<span class=\"comentario\">Este post no tiene comentarios, soyez le premier!</span>";
}
else{
while($com=mysql_fetch_array($comentarios))
{
echo "<div align=center><span class=\"comentario\"><strong>[ID:</strong>".$com["id"]."<strong>] ".$com["autor"]."</strong></span></div>";
echo "<br />";
echo "<div align=center><span class=\"comentario\">".$com["comentario"]."</span></div>";
echo "<br />";
echo "<div align=center><span class=\"comentario2\">(".$com["fecha"].")</span></div>";
echo "<br />";
echo "<div align=center><span class=\"taringa\">------------------</span></div>";
echo "<br />";
}
}
mysql_close($conexion);
?>

formulario :

<form action="comentarios.php" method="POST" class="form">
<span class="text">Autor: </span><br />
<input type="text" name="autor"><br />
<span class="text">Comentario</span><br />
<textarea cols="30" rows="5" name="comentario"></textarea><br />
<input type="hidden" name="fecha" value="<?=date("d:m:Y");?>">
<input type="submit" value="Enviar comentario"><br />
</form>
Jaja, bueno, es que antes no me había dado cuenta de ponerlo xd! Mi error D:!

Aunque en el código no veo lo que ha cambiado xd, ya sabes que ahora quiero entender las cosas más allá de usarlas simplemente xd!

Saludos!

---Update---

He notado que en este código:

<input type="hidden" name="fecha" value="<?[color=orange]=[/color]date("d:m:Y");?>">

Hay un igual antes que el date, para que sirve º-º

Saludos again!

---Update---

Estoy feliz porque ahora me sale usar los puntitos xd
Jaja era taqrde y tenia prisa que olvide modificar el error php ahora si aqui esta xD

<?php
$conexion=mysql_connect("mysql.99h.com.ar", "miuser", "mipass") or die ("Problemas en la conexión mysql");
mysql_select_db("mibase", $conexion) or die ("Problemas en la selección de la base de datos");

$comentarios=mysql_query("select id,autor,comentario,fecha from comentarios") or die ("Problemas en el select".mysql_error());
$comentarios2 = mysql_num_rows($comentarios);
if($comentarios2 <= 0)
{
echo "<span class=\"comentario\">Este post no tiene comentarios, soyez le premier!</span>";
}
else{
mysql_query("INSERT INTO comentarios(autor,comentario) VALUES('".$_POST["autor"]."', '".$_POST["comentario"]."')") or die ("Problemas en al insertar en la tabla de datos".mysql_error());
while($com=mysql_fetch_array($comentarios))
{
echo "<div align=center><span class=\"comentario\"><strong>[ID:</strong>".$com["id"]."<strong>] ".$com["autor"]."</strong></span></div>";
echo "<br />";
echo "<div align=center><span class=\"comentario\">".$com["comentario"]."</span></div>";
echo "<br />";
echo "<div align=center><span class=\"comentario2\">(".$com["fecha"].")</span></div>";
echo "<br />";
echo "<div align=center><span class=\"taringa\">------------------</span></div>";
echo "<br />";
}
}
mysql_close($conexion);
?>


El <?= sirve para ejecutar la primera funcion php que este dentro ej. <?=echo 'hola';?> de esa manera xD

PD: lol este post no tiene comentarios soyez le premier xD!
Pero de esta forma, si ya hay un comentario, no lo seguiría haciendo? Solo evitaría que pase cuando no hay comentarios xD!

---Update---

No, no pasa eso, simplemente que si el post no tiene comentarios no los inserta xD!

Y ahora que veo el código bien es eso lo que le dice que haga xD! El if hace que si no tiene comentarios, muestre el mensaje y no los inserte xd!

Saludos!

---Update---

Gracias a los códigos que me habías dado hace mucho creo que logré dar con el kid de la cuestión.

Resulta que se insertaba lo que había enviado en el formulario, y si no había enviado nada? Lo enviaba igual, porque es re heavy, por eso solo colocaba los campos que YO había puesto.

Entonces, para solucionar el error, al principio del code iría:

<?php
//Así re heavy en inglés...xd!
$id= $_POST["id"];
$author= $_POST["autor"];
$content= $_POST["contenido"];
$date= $_POST["fecha"];

if (empty($author))
{
echo "<span class=\"comentario\">No ingresaste tu nombre!</span>";
}
elseif (empty($content))
{
echo "<span class=\"comentario\">No ingresaste el comentario ._. salame...</span>";
}
else
{
Resto del código lalalala º.º
}

Será así?

Saludos!

---Update---

Me falta solucionar el tema de la date, cambié en el mysql el campo a date, (me había olvidado de eso) pero ahora me sale (00:00:0000)

Saludos!

---Update---

No! No funcionaba, xd, solo me dejaba ver los comentarios si enviaba alguno, pero descubrí como hacer para que eso no pase, colocándolo fuera del else:

<?php
//Así re heavy en inglés...xd!
$author= $_POST["autor"];
$comment= $_POST["comentario"];
$date= $_POST["fecha"];

if (empty($author) | empty($comment))
{
echo "<div align=center><span class=\"taringa\">No has ingresado nombre o autor o aún no has ingresado ningún comentario.</span></div><br /><br />";
}
else
{
$conexion=mysql_connect("mysql.99h.com.ar", "miuser", "mipass") or die ("Problemas en la conexión mysql");
mysql_select_db("miuser", $conexion) or die ("Problemas en la selección de la base de datos");
mysql_query("INSERT INTO comentarios(autor,comentario) VALUES('".$_POST["autor"]."', '".$_POST["comentario"]."')") or die ("Problemas en al insertar en la tabla de datos".mysql_error());
mysql_close($conexion);
}


//Hola ... :D! Separo el insert del select..
//Lalallala debo separar para vivir!
//POR LA HORDA!
//JODER, QUE BRAD Y ANGELINA ADOPTARON UN HIJO?
//He separado bien? Claro que sí, soy yo, el separador del insert del select :D :D :D...


$conexion=mysql_connect("mysql.99h.com.ar", "miuser", "mipass") or die ("Problemas en la conexión mysql");
mysql_select_db("mibase", $conexion) or die ("Problemas en la selección de la base de datos");

$comentarios=mysql_query("select id,autor,comentario,fecha from comentarios") or die ("Problemas en el select".mysql_error());
$comentarios2 = mysql_num_rows($comentarios);
if($comentarios2 <= 0)
{
echo "<div align=center><span class=\"comentarios\">Este post no tiene comentarios, soyez le premier!</span></div>";
}
else{
while($com=mysql_fetch_array($comentarios))
{
echo "<div align=center><span class=\"comentarios\"><strong><br />[ID:</strong>".$com["id"]."<strong>]     ".$com["autor"]."</strong></span></div>";
echo "<br />";
echo "<div align=center><span class=\"comentarios\">".$com["comentario"]."</span></div>";
echo "<br />";
echo "<div align=center><span class=\"comentarios2\">(".$com["fecha"].")</span></div>";
echo "<br />";
echo "<div align=center><span class=\"comentarios\">------------------</span></div>";
echo "<br />";
}
}
mysql_close($conexion);
?>

Jaja, ahora solo me faltan dos cosas, implementarle el BBCODE (ya lo sé hacer) y solucionar lo de la fecha, no sé que carajo pasa! :(

Saludos!
Bien ahi que ya entiendas los codes xD! ....Pues yo solo respondia la duda que tenias y pues no sabia lo que querias lograr , pero que bien que ya empezaste a razonar como saber aplicar distintos metodos , sin tener que copiar codes xD!

Saludos!
Jaja gracias, sí, algo he aprendido de tanto probar xd!

Pero, como hago lo de la fecha? Sigue apareciéndome mal :( xd!

Saludos!
_St, que problema tienes con la hora? Yo creo que lo mas facil es que guardes minutos, hora y segundo por separado para luego mostrarlo nomal ;)
No es la hora, es la fecha lo que me preocupa.
Cuando la coloco, en el formulario pongo:

<input type="hidden" value="<?php=date(d:m:Y) ?>">

Pero cuando la quiero mostrar en php aparece la fecha 00/00/0000

Saludos!
Prueba:
Fuera del formulario, pero en php:
$fecha=date(d/m/Y);
Y en el formulario:
<input type="hidden" value="<?php $fecha ?>">

Te aviso que tu sistema seria vunerable a la fecha, ya que con cualquier editor de codigo fuente (Firebug en Firefox, por ejemplo) se pueden ver todos los campos de hidden. Lo mejor es que declares la fecha en eol momento de insertar los valores en la tabla de datos, tal que asi:
$fecha=date(d/m/Y);

Y a la hora de insertar los datos:
INERT INTO (TUSCAMPOS,fecha) VALUES (TUSCAMPOS, '$fecha');
.....

Suerte :)
Lo pruebo y updateo, es interesante eso de la seguridad, pero si declaro la variable en el php y luego la coloco, solo se vería la variable sin su contenido no? Eso no me perjudicaría..

Saludos!

---Update---

No funcionó, pero me di cuenta que en ningún momento lo insertaba JAJA, asique lo arreglé pero tampoco funcionó, al final el code me quedó así (y no funciona):

//Así re heavy en inglés...xd!
$author= $_POST["autor"];
$comment= $_POST["comentario"];
$fecha=date("d:m:Y");

if (empty($author) | empty($comment))
{
echo "<div align=center><span class=\"taringa\">No has ingresado nombre, contenido o aún no has ingresado ningún comentario.</span></div><br /><br />";
}
else
{
$conexion=mysql_connect("mihost", "miuser", "mipass") or die ("Problemas en la conexión mysql");
mysql_select_db("midb", $conexion) or die ("Problemas en la selección de la base de datos");
mysql_query("INSERT INTO comentarios(autor,comentario,fecha) VALUES('".$_POST["autor"]."', '".$_POST["comentario"]."', '".$fecha."')") or die ("Problemas en al insertar en la tabla de datos".mysql_error());
mysql_close($conexion);
}


//Hola ... :D! Separo el insert del select..
//Lalallala debo separar para vivir!
//POR LA HORDA!
//JODER, COÑO DE LA MADRE!
//He separado bien? Claro que sí, soy yo, el separador del insert del select :D :D :D...


$conexion=mysql_connect("mihost", "miuser", "mipass") or die ("Problemas en la conexión mysql");
mysql_select_db("midb", $conexion) or die ("Problemas en la selección de la base de datos");

$comentarios=mysql_query("select id,autor,comentario,fecha from comentarios") or die ("Problemas en el select".mysql_error());
$comentarios2 = mysql_num_rows($comentarios);
if($comentarios2 <= 0)
{
echo "<div align=center><span class=\"taringa\">Este post no tiene comentarios, soyez le premier!</span></div>";
}
else{
while($com=mysql_fetch_array($comentarios))
{
echo "<div align=center><span class=\"taringa\"><strong><br />[ID:</strong>".$com["id"]."<strong>]     ".$com["autor"]."</strong></span></div>";
echo "<br />";
echo "<div align=center><span class=\"taringa\">".reemplazar($com["comentario"])."</span></div>";
echo "<br />";
echo "<div align=center><span class=\"taringa2\">(".$com["fecha"].")</span></div>";
echo "<br />";
echo "<div align=center><span class=\"taringa\">------------------</span></div>";
echo "<br />";
}
}
mysql_close($conexion);
?>

No le hagan caso a la función reemplazar, es para el bbcode xd!

Saludos!
prueba, justo despues de "insertarlo" en la bd, a poner
echo $fecha;
Y nos cuentas ok?
Lo que pasa es que en tu formulario al poner el input type hidden, un usuario malintencionado puede usar el Inspeccionar elemento de Google chrome (Firebug en Firefox) y cambiar el contenido de la variable fecha a su antojo pudiendo inyectar código malicioso en tu web.

Por eso, quita ese input, y en el código PHP añades esto:

$fecha = date("Y-m-d");

Si prefieres ponerlo como lo tenías, que no te lo aconsejo, el problema es que para mostrar la fecha en PHP el código debería ser:

<?php

$fecha = date("Y-m-d");
echo "$fecha";

?>