2010-01-17 12 views
34

Come posso recuperare un campo di testo da mysql db table, ma non l'intero testo, solo i pochi 40 caratteri.MySQL/SQL recupera i primi 40 caratteri di un campo di testo?

Questo può essere fatto in sql o ho bisogno di farlo utilizzando php?

in pratica quello che sto cercando di fare è mostrare i primi x caratteri e poi lasciare che l'utente faccia clic su di esso per visualizzare l'intero contenuto.

risposta

55
SELECT LEFT(field, 40) AS excerpt FROM table(s) WHERE ... 

vedere la funzione LEFT().

Come regola , non si dovrebbe mai fare in PHP ciò che MySQL può fare per voi. Pensaci in questo modo: non vuoi trasmettere nulla di più del necessario strettamente dal DB alle applicazioni richiedenti.


EDITSe avete intenzione di utilizzare tutti i dati sulla stessa pagina (vale a dire, con nessuna richiesta intermedio) il più delle volte, non c'è ragione per non a prendere il full text in una volta. (Vedere i commenti e Veger's answer.)

+0

la versione completa quando l'utente fa clic su di esso, così ora si stanno trasmettendo più informazioni: la breve stringa ** e ** la stringa completa! Rompendo così la tua regola generale ... – Veger

+0

@Veger Non necessariamente. Potresti avere ragione, ma OP menziona semplicemente un "clic" - potrebbe essere un collegamento a una pagina con il testo completo (ad esempio una notizia), nel qual caso non vuoi recuperare tutto per generare solo un lista di teaser. In altre parole: data la quantità di dettagli che non posso dare * il * modo migliore per farlo, basta fornire una regola empirica (che sono - nella loro natura - spesso, ma non sempre, a destra). – jensgram

+0

Hai ragione, dipende dalle informazioni che non vengono fornite! – Veger

1

Si potrebbe fare ciò in SQL come gli altri già mostrati.

Ma, se si anche desidera visualizzare il testo completo, se l'utente fa clic su di esso, è anche bisogno di testo completo e sembra uno spreco di lasciare che il database inviare il breve e il testo completo. Quindi puoi prendere il testo completo e scrivere del codice per mostrare il testo breve e il testo completo quando l'utente fa clic su di esso.

$result = mysql_query('SELECT text FROM table'); 
$row = mysql_fetch_row($result); 
echo '<div onclick="alert(\''.$row[0].'\');">'.substr($row[0], 0, 40).'</div>'; 

Naturalmente si potrebbe fare qualcosa di più quando si fa clic su di esso (invece di alert()). Inoltre ora puoi fare qualche controllo PHP per vedere se l'originale è più corto di 40 caratteri e gestire situazioni come questa.

+0

Esattamente! Se l'intero testo deve essere usato il più delle volte, non c'è alcun motivo * non * per recuperarlo tutto in una volta. – jensgram

+0

Probabilmente John vuole il testo breve perché l'utente vorrà solo il testo breve per la maggior parte delle righe e forse vorrà solo il testo completo per poche righe? O quello o l'utente farà clic per visualizzare una nuova pagina con altre informazioni. – Cocowalla

3

provare questo ...
selezionare Sinistra (nome del campo, 40) dal nome della tabella WHERE condizione per il primo 40 e
SELEZIONA DESTRA (nome del campo, 40) dal nome della tabella WHERE condizione per lo scorso 40

0

controllare questo pure, è necessario

mysql_query('SELECT LEFT('your text/fieldname', 40) FROM tablename'); 
Problemi correlati