Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   El zero a la izquierda (https://www.clubdelphi.com/foros/showthread.php?t=33436)

[Gunman] 06-07-2006 18:18:55

El zero a la izquierda
 
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:
Código PHP:

          <?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:
Código PHP:

$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:
Código PHP:

<?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:
Código SQL [-]
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.

Código 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:

Código PHP:

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

// Saludos


La franja horaria es GMT +2. Ahora son las 16:35:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi