+ Rispondi alla Discussione
Risultati da 1 a 14 di 14

Dubbio su rewrite

Ultimo Messaggio di Il_Rappo il:
  1. #1
    User Attivo L'avatar di Il_Rappo
    Data Registrazione
    May 2006
    Località
    Roma
    Messaggi
    1,286

    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.



  2. #2
    User Attivo L'avatar di Il_Rappo
    Data Registrazione
    May 2006
    Località
    Roma
    Messaggi
    1,286
    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)


  3. #3
    Esperto L'avatar di piccolo socrate
    Data Registrazione
    Sep 2006
    Località
    Roma, che domande!
    Messaggi
    503
    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?

  4. #4
    User Attivo L'avatar di Il_Rappo
    Data Registrazione
    May 2006
    Località
    Roma
    Messaggi
    1,286
    Citazione Originariamente Scritto da piccolosocrate
    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 funziona

    Finora ho sempre usato questo in caso di tabelle dove richiamavo anche l'id, ora che devo farlo senza mi sono impicciato


  5. #5
    User Attivo L'avatar di Il_Rappo
    Data Registrazione
    May 2006
    Località
    Roma
    Messaggi
    1,286
    Non mi piace uppare ma al momento sono abbastanza incartato...


  6. #6
    Esperto
    Data Registrazione
    Oct 2006
    Messaggi
    336
    La butto lì... prova a modificare:

    Codice PHP:
        $result=mysql_query("SELECT * FROM mtf_band WHERE '$var'='".$_GET['tabella']."'"$conn); 
    In:

    Codice PHP:
    echo $sql "SELECT * FROM mtf_band WHERE '$var'='".$_GET['tabella']."'"
    $result=mysql_query($sql$conn);
    echo 
    mysql_error(); 
    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.

  7. #7
    User Attivo L'avatar di Il_Rappo
    Data Registrazione
    May 2006
    Località
    Roma
    Messaggi
    1,286
    Citazione Originariamente Scritto da Fra_T
    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..


  8. #8
    Esperto
    Data Registrazione
    Oct 2006
    Messaggi
    336
    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

  9. #9
    User Attivo L'avatar di Il_Rappo
    Data Registrazione
    May 2006
    Località
    Roma
    Messaggi
    1,286
    Citazione Originariamente Scritto da Fra_T
    il valore di $var da dove lo prendi?
    $var = str_replace(" ","-",$_GET['tabella']);

    Qui :P


    Citazione Originariamente Scritto da Fra_T
    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:
    Codice:
    Array
    (
        [tabella] => nome
        [categoria] => 
        [nome] => 
    )
    Per l'articolo senza -, e

    Codice:
     Array
    (
        [tabella] => prova-articolo
        [categoria] => 
        [prova-articolo] => 
    )


  10. #10
    Esperto
    Data Registrazione
    Oct 2006
    Messaggi
    336
    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'

  11. #11
    User Attivo L'avatar di Il_Rappo
    Data Registrazione
    May 2006
    Località
    Roma
    Messaggi
    1,286
    Citazione Originariamente Scritto da Fra_T
    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 va

    Se 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


  12. #12
    Esperto
    Data Registrazione
    Oct 2006
    Messaggi
    336
    è, 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?

  13. #13
    User Attivo L'avatar di Il_Rappo
    Data Registrazione
    May 2006
    Località
    Roma
    Messaggi
    1,286
    Citazione Originariamente Scritto da Fra_T
    è, 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


  14. #14
    User Attivo L'avatar di Il_Rappo
    Data Registrazione
    May 2006
    Località
    Roma
    Messaggi
    1,286
    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);




+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.