- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- Dubbio su rewrite
-
Dubbio su rewrite
Un ciao a tutti.
Implementando per la prima volta un rewrite, mi sono imbattuto in un problema: gli spazi, in un titolo (ad esempio), se faccio il rewrite nella pagina da %20 a - tutto ok, solo che poi richiamando la pagina col trattino non la prende.
Allora ho risolto aggiungendo un campo nel database con l'url tradotto, solo che, dato che i contenuti non li inserirò io, ma gli utenti, come posso far si che questo campo venga riempito nel modo corretto, o meglio, in automatico?
Uso:
if ($_GET['tabella']) {
$result=mysql_query("SELECT * FROM tabella WHERE campourlrewrittato='".$_GET['tabella']."'", $conn);ecc...
Vorrei, dato che sto sviluppando un cms, che il campo venga tradotto in automatico e senza ricorrere a questi mezzucci. Ho cercato in giro un sacco ma non ho trovato nulla.
-
Ho risolto da me.
$var = str_replace(" ","-",$_GET['tabella']);
$result=mysql_query("SELECT * FROM mtf_band WHERE '$var'='".$_GET['tabella']."'", $conn);Solo che:
Se inserisco pure l'id nella selezione tutto ok, quando invece voglio solo il nome, non funziona.Ora vi chiedo, e per favore, se vi è possibile, aiutatemi, come posso far si che funzioni col solo nome?
(il codice sopra è errato)
-
ciao il_rappo,
nelle tue condizioni farei così:
[php]
//... controlli per il $_GET
$nome_tabella=trim($_GET[tabella]);// array di elementi da cercare
$cerco=array(' ','{','(','°',...);
//array di elementi da sostituire
$sostituisco=array('-',...);
//esecuzione di str_replace
$var=str_replace($cerco,$sostituisco,$_GET[tabella]);poi..
cosa intendi per " Se inserisco pure l'id nella selezione tutto ok, quando invece voglio solo il nome, non funziona."
puoi spiegarti meglio?
-
@piccolosocrate said:
poi..
cosa intendi per " Se inserisco pure l'id nella selezione tutto ok, quando invece voglio solo il nome, non funziona."
puoi spiegarti meglio?Ti ringrazio, ma principalmente mi serve solo il replace di %20 to -, il resto lo faccio prima
Intendo che
sito.com/prova-testo/ non funziona
sito.com/prova-testo/1 funzionaFinora ho sempre usato questo in caso di tabelle dove richiamavo anche l'id, ora che devo farlo senza mi sono impicciato
-
Non mi piace uppare ma al momento sono abbastanza incartato...
-
La butto lì... prova a modificare:
[php] $result=mysql_query("SELECT * FROM mtf_band WHERE '$var'='".$_GET['tabella']."'", $conn);[/php]
In:
[php]echo $sql = "SELECT * FROM mtf_band WHERE '$var'='".$_GET['tabella']."'"
$result=mysql_query($sql, $conn);
echo mysql_error();[/php]
Apri la pagina con url sito.com/prova-testo/ e con url sito.com/prova-testo/1. Guarda eventuali errori, o cerca di capire come mai con una query ottieni risultati e con un'altra no.
-
@Fra_T said:
Apri la pagina con url sito.com/prova-testo/ e con url sito.com/prova-testo/1. Guarda eventuali errori, o cerca di capire come mai con una query ottieni risultati e con un'altra no.
Innanzitutto
Allora, ho fatto come hai detto e questo mi è uscito:
usando un articolo senza - (articolo):
SELECT * FROM tabella WHERE 'articolo'='articolo' solo che poi nel print da sempre "articolo" anche se per esempio apro "articolodue"
In quella col trattino:
SELECT * FROM tabella WHERE 'prova-articolo'='prova-articolo', solo che anche qui nel print mi da il primo articolo come nome.
Uff..
-
allora 1 errore sembra nelle regole di rewrite
il valore di $var da dove lo prendi?
se vuoi provare anche con un echo '<pre>'; print_r($_GET); echo '</pre>'; così vediamo con la tua regola che cosa passi alla pagina, e se quello che passi è quello che vuoi passare
-
@Fra_T said:
il valore di $var da dove lo prendi?
$var = str_replace(" ","-",$_GET['tabella']);
Qui
@Fra_T said:
se vuoi provare anche con un echo '<pre>'; print_r($_GET); echo '</pre>'; così vediamo con la tua regola che cosa passi alla pagina, e se quello che passi è quello che vuoi passare
Allora, mi esce fuori questo:
Array ( [tabella] => nome [categoria] => [nome] => )
Per l'articolo senza -, e
Array ( [tabella] => prova-articolo [categoria] => [prova-articolo] => )
-
Ok, torniamo alla query, allora
Che vuol dire WHERE 'articolo' = 'articolo'? Dovrebbe essere WHERE nome_della_colonna_del_database = 'testo_da_cercare_in nome_della_colonna_del_database'... O non ho capito?
nel tuo primo esempio, qualcosa tipo: WHERE campourlrewrittato = '$var'
-
@Fra_T said:
Ok, torniamo alla query, allora
Che vuol dire WHERE 'articolo' = 'articolo'? Dovrebbe essere WHERE nome_della_colonna_del_database = 'testo_da_cercare_in nome_della_colonna_del_database'... O non ho capito?
nel tuo primo esempio, qualcosa tipo: WHERE campourlrewrittato = '$var'
Allora, andiamo con esempi reali vaSe io ho "Vasco Rossi" nel database, questo dovrà essere trasformato in "vasco-rossi", quindi:
$var (trasforma Vasco Rossi in vasco-rossi) = '".$_GET['band']."' (che assumerà valore di vasco-rossi, cioè l'url che digito)
vasco-rossi = vasco-rossi, dove il primo è var, e il secondo è il campo della colonna del database.
Sempre più incartati
-
è, ma così non può funzionare.
vasco-rossi è il nome "sanizzato" della band Vasco Rossi.
Nel database devi prevedere un campo dove salvare i nomi "sanizzati", il campo lo chimi ad esempio nome_band_sanizzato.
La query deve essere WHERE nome_band_sanizzata = 'vasco-rossi'
Altrimenti WHERE 'vasco-rossi' = 'vasco-rossi' non trova niente... dove cerca?
-
@Fra_T said:
è, ma così non può funzionare.
vasco-rossi è il nome "sanizzato" della band Vasco Rossi.
Nel database devi prevedere un campo dove salvare i nomi "sanizzati", il campo lo chimi ad esempio nome_band_sanizzato.
La query deve essere WHERE nome_band_sanizzata = 'vasco-rossi'
Altrimenti WHERE 'vasco-rossi' = 'vasco-rossi' non trova niente... dove cerca?
Questo è il motivo di tutto questo bordello qui, l'evitare di usare un campo nel database col nome rewrittato. Perchè non sono io che inserisco i contenuti sul sito, c'è un pannello di controllo che fa tutto, e non credo che al momento dell'inserimento di un dato (vasco rossi) il php possa riuscire a prendere il titolo del form, rewrittarlo, e inviare la query tutta, col titolo giusto appena inserito e col campo rewrittato allo stesso tempo
Il fatto è che tutto questo, se nella WHERE inserisco l'id funziona
-
Ho risoltoooooooooo
Ho dovuto usare le regex di apache però almeno ora funziona come dico io
RewriteRule ([-a-zA-Z]+)/$ ?tabella=$1
nell'htaccess e:
$campo = str_replace("-"," ",$_GET['tabella']);
$result=mysql_query("SELECT * FROM tabella WHERE campo='$campo'", $conn);