2009-10-11 5 views
0

Je saisis l'information de trois rangées dans ma table, et j'en fais l'écho dans une étiquette d'ancre.comment limiter mes caractères de sélection mysql

Comment puis-je limiter la quantité de caractères sur la variable $ titre qui sont affichés dans la balise d'ancrage.

code:

$results = mysql_query("SELECT * FROM news "); 

while($row = mysql_fetch_array($results)) { 
    $id = $row['id']; 
    $title = $row['title']; 
    $date = $row['date']; 

    echo "<a href=\"" . $_SERVER['PHP_SELF']."?id=$id"."\">$title</a> | "; 
} 

$thisID = $_GET['id']; 

if(!isset($thisID)) { 
    $thisID = 7; 
} 
+3

En l'état, il est invalide de démarrer un attribut ID avec un caractère numérique. Vous devriez le faire '$ id =" link ". $ Row [" id "]' ou un tel, ou cela causera des problèmes avec certains scripts/navigateurs. – Anthony

+0

Je préfère utiliser javascript pour tronquer mes chaînes, en fonction de la largeur de l'élément parent. –

Répondre

4

Vous pouvez utiliser substr:

echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?id=$id" . "\">" . substr($title, 0, LENGTH) . "</a> | "; 

Remplacer la longueur avec la longueur en caractères à laquelle vous voulez couper le titre de $.

+0

+1 me battre. – klabranche

0

Vous pouvez remplacer la première partie de la chaîne, ou la dernière partie, mais si vous le faites, il serait préférable de fournir une indication que quelque chose a été omis, en annexant ou préfixer un ellipsis...

2

Vous pouvez utiliser LEFT dans la requête pour renvoyer l'ensemble de caractères le plus à gauche d'une colonne.

Il est dans le format de LEFT(column, max_chars)

define('MAXCHARS', '50'); 

$results = mysql_query("SELECT id, LEFT(title, ".MAXCHARS.") as truncated_title, 
          date FROM news"); 

Maintenant, quand vous allez récupérer la colonne, aliasé par truncated_title dans cet exemple, il ne contiendra au plus toutefois de nombreux caractères figurant dans votre MAXCHARS constante.

Questions connexes