PDA

Ver la Versión Completa : El zero a la izquierda


[Gunman]
06-07-2006, 18:18:55
Tengo una tabla MySQL con una columna llamada `id` que alberga la identificación de cada noticia (en mi base de datos). El caso es que este `id` es de tipo INTEGER y tiene una longitud de 10 dígitos. Bueno, yo uso este código para obtener las propiedades de cada registro de dicha tabla:

<?php
include(dbconf);
$result = mysql_query("SELECT `id`, `id_user`, `title`, `date` FROM `news`");
$total_news = mysql_num_rows($result);
for($cnew = 0;$cnew < $total_news; $cnew++){
$id = mysql_result($result, $cnew, "id");
$id_user = mysql_result($result, $cnew, "id_user");
$title = mysql_result($result, $cnew, "title");
$date = mysql_result($result, $cnew, "date");
$user = mysql_result(mysql_query("SELECT `user` FROM `admin` WHERE `id` = ".$id_user), 0, "user");
echo "<tr>";
echo "<td width='50'><input type='checkbox' name='del".$id."' value='del".$id."'>".$id."</td>";
echo "<td width='181'>".$title."</td>";
echo "<td width='75'>".$user."</td>";
echo "<td width='85'>".$date."</td>";
echo "<td width='75'><input type='submit' name='ed".$id."' value='Editar'></td>";
echo "</tr>";
}
?>

Bueno, el problema - por decirlo así, como mínimo es feo a la vista - está en que en $id me aparecen todos los ceros a la izquierda de la columna `id` de cada registro y esto es molesto.
Como puedo eliminar los dichosos zeros a la izquierda? Tendré problemas con la identificación? Creo que no, al ser números 32 = 000000032. No creo que haya ningún problema, así pues, como elimines esos ceros sobrantes?

kayetano
06-07-2006, 19:09:29
Hola

No se por que te aparecen los ceros a la izquierda, a mi nunca me ha sucedido, pero te puedo dar algunos consejos:
1. Yo nunca he utilizado las comillas que pones en el nombre de todos los campos y tablas, desconozco su utilidad, yo lo haría de la siguiente forma:
$result = mysql_query("SELECT id, id_user, title, date FROM news");

2. Montas un lio enorme para hacer algo que ya lo hace PHP, con mysql_fetch_array:
<?php
include(dbconf);
$query = mysql_query("SELECT id, id_user, title, date FROM news");
while( $result = mysql_fetch_array( $query ) ) {
$user = mysql_result(mysql_query("SELECT `user` FROM `admin` WHERE `id` = ".$id_user), 0, "user");
echo "<tr>";
echo "<td width='50'><input type='checkbox' name='del".$result['id']."' value='del".$result['id']."'>".$result['id']."</td>";
echo "<td width='181'>".$result['title']."</td>";
echo "<td width='75'>".$user."</td>";
echo "<td width='85'>".$result['date']."</td>";
echo "<td width='75'><input type='submit' name='ed".$result['id']."' value='Editar'></td>";
echo "</tr>";
}
?>

3. Las dos consultas que realizas se pueden hacer en una:

SELECT n.id, n.id_user, n.title, n.date, a.user FROM news n, admin a WHERE n.id_user = a.id


4. y último, esto es mas por gusto que otra cosa y es no meter el código HTML dentro del PHP.

<?php
include(dbconf);
$query = mysql_query("SELECT n.id, n.id_user, n.title, n.date, a.user FROM news n, admin a WHERE n.id_user = a.id");
while( $result = mysql_fetch_array( $query ) ) {
?>
<tr>
<td width='50'><input type='checkbox' name='del<?=$result['id']?>' value='del<?=$result['id']?>'><?=$result['id']?></td>
<td width='181'><?=$result['title']?></td>";
<td width='75'><?=$result['user?></td>
<td width='85'><?=$result['date']?></td>
<td width='75'><input type='submit' name='ed<?=$result['id']?> value='Editar'></td>";
</tr>
<?
}
?>

[Gunman]
06-07-2006, 19:24:10
Gracias por los consejos, pero te puedo asegurar que las comillas de las consultas no producen ningún error. He probado el código en el phpMyAdmin i funcionan las comillas...

kayetano
07-07-2006, 10:04:25
Hola

Yo no digo que funcione o que no funcione, digo que ignoro su utilidad y que si eliminas las comillas también fuciona y eso que te ahorras de poner.

He realizado un ejemplo con el mismo código que tienes tú y a mi no me aparece por ningun sitio los ceros, ¿podrías poner como introduces los datos y como tienes definido ese campo en la tabla?

roman
12-07-2006, 08:56:38
Hola,

Las comillas supongo que sirven para poner nombres "raros" a los campos o tablas, como nombres con espacios o palabras reservadas. Para programas como phpMyAdmin que son genéricos, está muy bien que lo hagan pero para uno mismo es sumamente engorroso estar poniendo esas comillas innecesarias.

Otra cosa, te recomiendo revisar la ayuda de php para que veas porqué no conviene usar mysql_result().

En cuanto al "problema" original puede deberse a que el campo en cuestión tiene el atributo zerofill. O bien se lo quitas o fuerzas el tipo de datos:


$id = (int) mysql_result(...);


// Saludos