- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- Dubbio su rewrite
-
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);