Error en código dependiendo de mostrar una cosa u otra

Buenas!

En mi sistema de comentarios tengo un sistema de moderación con el que edito los comentarios, y cuando los edito en la base de datos se guarda la fecha y hora de edición. Lo que quiero es que si el comentario nunca lo edité, no ponga nada, pero si lo edité, sí que ponga la última edición.

Si el comentario no se edito, tiene en la DB un valor NULL donde el campo d fecha y hora de edición.
[B][U]CAMPOS               TIPO                     NULL         DEFAULT[/U][/B]

edicion	           date			Yes	          NULL		 	 	 	 	 	 	
horaedicion	   time			Yes	          NULL		 	 	 	 	 	 


Y para mostrar o no el mensaje de última edición tengo esto: (Sólo pongo la parte del código donde muestro o no la hora de edición)

$idcomentario = $qry[idcomentario];
$edicion = mysql_query("SELECT edicion FROM `basededatos`.`comentarios` WHERE idcomentario=$idcomentario");
if($edicion==NULL){
echo " 			</div><!-- .comment-meta .commentmetadata --> 
		</div> 
 
		<!--div class='reply'>
					</div--><!-- .reply --> 
	</div><!-- #comment-##  --> 
 
	</li>";
} else {
echo " | <small><b>Última edición: <u>$dia2/$mes2/$ano2</u> a las <u>$qry[horaedicion]</u></b></small>
</div><!-- .comment-meta .commentmetadata --> 
		</div> 
 
		<!--div class='reply'>
					</div--><!-- .reply --> 
	</div><!-- #comment-##  --> 
 
	</li>";
}

El problema viene en que se muestra en todos los comentarios esto:
Última edición: // a las

Excepto en los que fueron editados, que funcionan bien. Pero no quiero que aparezca el Última edición: // a las si el comentario nunca fue editado.

¿Cuál es el error? Gracias!
Sobretodo peude estar en que no cierras el else, alguno mas creo que hya, pero es de ese del que me acuerdo (Lo miré hace 5 mins y tengo poca memoria retentiva) PEro creo que es un fallo tuyo en el copy and past ;)
Fallo mío, el else está cerrado pero al hacer el copy past no lo puse jeje
Hola, por casualidad ¿has probado mostrando el contenido de $edición (con echo o print)? Esto es para asegurarte de que devuelva NULL y lo estes comparando con el valor adecuado:

$idcomentario = $qry[idcomentario];
$edicion = mysql_query("SELECT edicion FROM `basededatos`.`comentarios` WHERE idcomentario=$idcomentario");
echo "<p>Edici&oacute;n: $edicion</p>";

if($edicion==NULL){
echo "             </div><!-- .comment-meta .commentmetadata --> 
        </div> 
 
        <!--div class='reply'>
                    </div--><!-- .reply --> 
    </div><!-- #comment-##  --> 
 
    </li>";
} else {
echo " | <small><b>Última edición: <u>$dia2/$mes2/$ano2</u> a las <u>$qry[horaedicion]</u></b></small>
</div><!-- .comment-meta .commentmetadata --> 
        </div> 
 
        <!--div class='reply'>
                    </div--><!-- .reply --> 
    </div><!-- #comment-##  --> 
 
    </li>";
}

Aunque yo cambiaría el código para que quede así:

$idcomentario = $qry[idcomentario];
$edicion = mysql_query("SELECT edicion FROM `basededatos`.`comentarios` WHERE idcomentario=$idcomentario");
if( $edicion !== NULL ) {
 echo " | <small><b>Última edición: <u>$dia2/$mes2/$ano2</u> a las <u>$qry[horaedicion]</u></b></small>";
}
// Lo siguiente siempre se ejecutará:
echo "</div><!-- .comment-meta .commentmetadata --> 
        </div> 
 
        <!--div class='reply'>
                    </div--><!-- .reply --> 
    </div><!-- #comment-##  --> 
 
    </li>";
}

De esta forma, sólo si $edicion es distinto de null, se mostrará la línea "última edición..." pero siempre se mostrará las etiquetas de cierre.

Saludos.
Hola skaparate,

Primero de todo, muchas gracias de nuevo por tu respuesta

He probado a mostrar el contenido de la variable $edicion como has dicho, y me sale esto: Edición: Resource id #14
En el siguiente comentario, pone: Edición: Resource id #15, y así, va sumando números

Recuerdo que me dijiste que es porque la consulta da un valor no especificado o algo así, no me acuerdo muy bien jeje

Cómo lo soluciono? Gracias!
Ok, intenta con lo siguiente:

$idcomentario = $qry[idcomentario];
$edicion = mysql_query("SELECT edicion FROM `basededatos`.`comentarios` WHERE idcomentario=$idcomentario");
echo "<p>Edición: $edicion[edicion]</p>";
if( $edicion['edicion'] !== NULL ) {
 echo " | <small><b>Última edición: <u>$dia2/$mes2/$ano2</u> a las <u>$qry[horaedicion]</u></b></small>";
}
// Lo siguiente siempre se ejecutará:
echo "</div><!-- .comment-meta .commentmetadata --> 
        </div> 
 
        <!--div class='reply'>
                    </div--><!-- .reply --> 
    </div><!-- #comment-##  --> 
 
    </li>";
}

Siempre que muestres el contenido de una variable y salga Resource XXXXXX, quiere decir que esa variable tiene que ser utilizada como un mapa (un array bidimensional en donde los índices serán nombres en lugar de números junto a sus respectivos valores):

$edicion = {
  'edicion' => 'NULL'
};

Así se vería un mapa (dependiendo de cómo se haya construido).

Saluuuudos.
Hola de nuevo,

Gracias por la explicación jeje

Pero poniendo ese código me sale el echo de Edición, me pone:
Edición:
en todos los comentarios, y no pone nada más.
En el mensaje que tiene una última edición tampoco pone el | Última edición bla bla bla

Saludos
Ok, entonces cambia la línea donde muestras el contenido de $edición por: echo $edicion['edicion'] . '<-- edicion'; o intenta print_r($edicion);.
De la primera manera, sale lo siguiente:
<-- edicion

De la segunda manera, con el print:
Resource id #14
Ya, ahora sí tiene que funcionar:

$idcomentario = $qry[idcomentario];
$edicion = mysql_query("SELECT edicion FROM `basededatos`.`comentarios` WHERE idcomentario=$idcomentario");
echo "<p>Edición: $edicion[edicion]</p>";

if( is_null( $edicion['edicion'] ) ) { // Esto es lo que hay que cambiar XD.
 echo " | <small><b>Última edición: <u>$dia2/$mes2/$ano2</u> a las <u>$qry[horaedicion]</u></b></small>";
}
// Lo siguiente siempre se ejecutará:
echo "</div><!-- .comment-meta .commentmetadata --> 
        </div> 
 
        <!--div class='reply'>
                    </div--><!-- .reply --> 
    </div><!-- #comment-##  --> 
 
    </li>";
}
Gracias por tu respuesta de nuevo... pero sigue sin funcionar xD

Sale esto en todos los comentarios que tuvieron alguna edición:
Edición: Resource id #13(En el sig comentario 14, luego 15, etc...)

| Última edición: 01/10/2011 a las 12:34:26
La fecha cambia dependiendo de cuando fue editado igual que la hora, y si no fue editado... pasa lo mismo que al principio del problema: | Última edición: // a las
Prueba:
$idcomentario = $qry[idcomentario];
$edicion = mysql_query("SELECT edicion FROM `basededatos`.`comentarios` WHERE idcomentario=$idcomentario");
echo "<p>Edición: $edicion</p>";

if( is_null( $edicion['edicion'] ) ) { // Esto es lo que hay que cambiar XD.
 echo " | <small><b>Última edición: <u>$dia2/$mes2/$ano2</u> a las <u>$qry[horaedicion]</u></b></small>";
}
// Lo siguiente siempre se ejecutará:
echo "</div><!-- .comment-meta .commentmetadata --> 
        </div> 
 
        <!--div class='reply'>
                    </div--><!-- .reply --> 
    </div><!-- #comment-##  --> 
 
    </li>";
} 
Sólo cambiaste el echo "<p>Edición: $edicion</p>";

Ya lo había probado, pero entonces sólo dice: Edición:Resource id #13 jejeje
Voy a intentar ha hacer el código desde cero. Dime que hay guardado en edicion en la base de datos.
Para probar, tengo dos comentarios.

En uno tengo en los dos campos (edicion y horaedicion) el valor por defecto: NULL
En el otro, tengo:

edicion --> 2011-1-10
horaedicion --> 12:34:26

Los dos campos y sus tipos están en el primer post
if ($edicion==NULL) {
echo "</div><!-- .comment-meta .commentmetadata --> </div> <!--div class='reply'> </div--><!-- .reply -->  </div><!-- #comment-##  --> </li>";
}
else {
echo "<small><b>Última edición: <u>$dia2/$mes2/$ano2</u> a las <u>$qry[horaedicion]</u></b></small></div><!-- .comment-meta .commentmetadata --> </div> <!--div class='reply'></div--><!-- .reply --> </div><!-- #comment-##  --> </li>";
}
Adapta eso ;) Es igual, pero con pequeñas modificacioners.
Según mi lógica, lo que publiqué anteriormente debería haber funcionado XD. Yo lo probé en mi pc y me funciona, o sea, lo siguiente funciona:

<?php
  $con = mysql_connect( 'localhost', 'usuario', 'pass' );
  $id = 1;
  $result = mysql_fetch_array( mysql_query( 'SELECT clinica.fecha FROM tests.clinica where id = ' . $id ), MYSQL_ASSOC );
  echo "<p>Resultados</p>";
  print_r( $result );
  echo "<p>";
  if( is_null( $result['fecha'] ) )
    echo "result -> fecha es null";
  else
    echo "result -> fecha no es null";
	echo "</p>";
	
  mysql_free_result( $result );
  mysql_close( $con );
?>

Al parecer, la única diferencia es que aquí escribí $result = mysql_fetch_array( mysql_query( 'SELECT clinica.fecha FROM tests.clinica where id = ' . $id ), MYSQL_ASSOC );. Intenta agregando mysql_fetch_array();.
Hola de nuevo!

He probado poniendo el mysql_fetch_array y...

En el echo de $edición sale esto: Edición: Array
Y en el comentario que tiene una edición, no sale nada, en los que tiene edición... sale el | Última edición: // a las
No entendí esta parte: "tiene una edición, no sale nada, en los que tiene edición... sale el | Última edición: // a las". ¿Sale "| Última edición: // a las" en todos los comentarios? Si escribes echo $edicion['edicion'] debería aparecer "" (vacío) si es que es null, de lo contrario debería aparecer la última edición. La otra forma es escribir print_r( $edicion ); pero extrayendo todos los datos de la tabla (SELECT * FROM tabla).
A ver, intenta con esto (no es igual al anterior, tiene 1 cambio XD):

$idcomentario = $qry[idcomentario];
$edicion = mysql_query("SELECT edicion FROM `basededatos`.`comentarios` WHERE idcomentario=$idcomentario");

if( !is_null( $edicion['edicion'] ) ) { // Esto es lo que hay que cambiar XD.
 echo " | <small><b>Última edición: <u>$dia2/$mes2/$ano2</u> a las <u>$qry[horaedicion]</u></b></small>";
}
// Lo siguiente siempre se ejecutará:
echo "</div><!-- .comment-meta .commentmetadata --> 
        </div> 
 
        <!--div class='reply'>
                    </div--><!-- .reply --> 
    </div><!-- #comment-##  --> 
 
    </li>";
}
Añadí al código: echo "Edición $edicion";

Y sale esto: Edición: Resource id #14
Hmm, pero lo que modifiqué anteriormente es esta línea:

antigua -> if( is_null( $edicion['edicion'] ) ) {...
nueva -> if( !is_null( $edicion['edicion'] ) ) {...

Esto tampoco funcionó?
No, al poner ese código no me sale nada en ningún en comentario (Con nada me refiero a que no sale lo que salía antes de Última edición: // a las) El problema es que en los comentarios que sí tienen alguna edición son como el resto, tampoco sale cuando fueron editados jeje
Intenta con esto:

$idcomentario = $qry[idcomentario];
$edicion = mysql_query("SELECT edicion FROM `basededatos`.`comentarios` WHERE idcomentario=$idcomentario");

if( !is_empty( $edicion['edicion'] ) ) { // <-- Nuevamente esta línea, pues pregunta si NO esta vacio $edicion['edicion']
 echo " | <small><b>Última edición: <u>$dia2/$mes2/$ano2</u> a las <u>$qry[horaedicion]</u></b></small>";
}
// Lo siguiente siempre se ejecutará:
echo "</div><!-- .comment-meta .commentmetadata --> 
        </div> 
 
        <!--div class='reply'>
                    </div--><!-- .reply --> 
    </div><!-- #comment-##  --> 
 
    </li>";

Por otro lado, lo siguiente debería mostrar "Esta vacio" si $edicion['edicion'] esta vacio y "No esta vacio" de lo contrario:

$idcomentario = $qry[idcomentario];
$edicion = mysql_query("SELECT edicion FROM `basededatos`.`comentarios` WHERE idcomentario=$idcomentario");

if( !is_null( $edicion['edicion'] ) ) { // Esto es lo que hay que cambiar XD.
 echo "<p>No esta vacio</p>";
} else {
  echo "<p>Esta vacio</p>";
}