Visualizzazione risultati 1 fino 6 di 6

Discussione: Modificare un campo del db togliendo gli spazi, per poi inserirlo nell'url

  1. #1
    Guest

    Predefinito Modificare un campo del db togliendo gli spazi, per poi inserirlo nell'url

    Ciao a tutti.
    Ho una tabella nel database con i campi "titolo" e "testo".

    Estraggo dal database il contentuto del campo "titolo" e lo inserisco nell'url, in modo da avere:

    nomesito.it/page.php?titolo=Il titolo della pagina

    Il codice usato è questo:
    Codice PHP:
    if (!isset ($_GET['titolo'])) { $_GET['titolo'] = -1; }
    $url = mysql_escape_string ($_GET['titolo']);
    [...]
    Codice PHP:
    $sql = $data->query("SELECT * FROM table WHERE titolo = '$url'");
    [...]

    Ora volevo trasformare l'url in => nomesito.it/page.php?titolo=il-titolo-della-pagina

    Così ho creato una funzione "slug()" (che a parte funziona) che trasforma gli spazi in un trattino ed il testo in minuscolo.
    Ed ho modificato così lo script:
    Codice PHP:
    $var = $_GET['titolo'];
    $url_titolo = slug($var);
    if (!isset (
    $_GET['titolo'])) { $_GET['titolo'] = -1; }
    $url = mysql_escape_string ($url_titolo);
    [...]
    Codice PHP:
    $sql = $data->query("SELECT * FROM table WHERE url = '$url'");
    Le URL funzionano:
    nomesito.it/page.php?titolo=il-titolo-della-pagina
    nomesito.it/page.php?titolo=il-titolo-di-quello-che-voglio

    Solo che quando vado a stampare il contenuto del campo "testo", in tutte le pagine ottengo sempre lo stesso "testo" (ad esempio dell'ID=1).

    Che sbaglio? O comunque ci sono alternative?

  2. #2
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    mettendo i trattini al titolo e utilizzando la funzione mysql_escape_string() che oltretutto è deprecata, cosa ottieni ?

    prova ad usare la funzione mysql_real_escape_string()

    poi dovresti controllare prima $_GET['titolo'] con isset e non dopo $var = $_GET['titolo'];

    Codice PHP:
    $var = (-1);
    if (isset(
    $_GET['titolo']) AND !empty($_GET['titolo'])) $var = $_GET['titolo'];

    $url_titolo = slug($var);
    $url = mysql_real_escape_string ($url_titolo);
    Ultima modifica di EuroSalute : 22-05-2011 alle ore 19.44.12 Motivo: info...
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  3. #3
    Guest

    Predefinito

    Ottengo la stessa cosa.

    In pratica la tabella del database è questa:


    Se vado su nomesito.it/page.php?url=titolo-a (Titolo A)
    il testo stampato è: "Il testo AAAAAAAAAA"

    Se vado su nomesito.it/page.php?url=titolo-b (Titolo B)
    il testo stampato è sempre "Il testo AAAAAAAAAA", mentre dovrebbe essere "Il testo BBBBBBBBBB".

    EDIT
    Ho visto adesso il tuo edit.
    poi dovresti controllare prima $_GET['titolo'] con isset e non dopo $var = $_GET['titolo'];

    Codice PHP:
    $var = (-1);
    if (isset(
    $_GET['titolo']) AND !empty($_GET['titolo'])) $var = $_GET['titolo'];

    $url_titolo = slug($var);
    $url = mysql_real_escape_string ($url_titolo);
    E qui come lo imposto il WHERE:
    Codice PHP:
    $sql = $data->query("SELECT * FROM table WHERE titolo = '$url'");
    Ultima modifica di musicanapoli : 22-05-2011 alle ore 19.58.29

  4. #4
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    prova prima a verificare cosa contiene $url, poi prova ad eseguire la query where id='1' , poi un'altra query con l'id=2 ....

    oppure posta anche il codice che usi per stampare il testo where titolo='$url'

    ma cosa usi come variabile nel query string titolo o url:

    nomesito.it/page.php?titolo=il-titolo-della-pagina
    Se vado su nomesito.it/page.php?url=titolo-a (Titolo A)
    Ultima modifica di EuroSalute : 22-05-2011 alle ore 20.08.49 Motivo: info...
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  5. #5
    Guest

    Predefinito

    Questo è il codice:
    Codice PHP:
    include('function.php');

    $var = (-1);
    if (isset(
    $_GET['titolo']) AND !empty($_GET['titolo'])) $var = $_GET['titolo'];
    $url_titolo = slug($var);
    $url = mysql_real_escape_string ($url_titolo);

    $data = new MysqlClass();
    $data->connetti();
    $sql = $data->query("SELECT * FROM table WHERE titolo = '$url'");

    [...]

    echo
    $testo;
    In pratica ho questo tipo di URL => nomesito.it/page.php?titolo=Titolo A
    e lo voglio trasformare in => nomesito.it/page.php?titolo=titolo-a

    Non so se il WHERE è scritto giusto...
    ma cosa usi come variabile nel query string titolo o url:
    nomesito.it/page.php?titolo=il-titolo-della-pagina
    nomesito.it/page.php?url=titolo-a (Titolo A)
    In pratica all'inizio avevo il campo "url" con il titolo già trasformato, quindi mi bastava fare WHERE url = '$url' e $_GET['url'] , ora invece ho voluto togliere il campo url dal database e vorrei direttamente trasformare il campo titolo in quello senza spazi.
    Ultima modifica di musicanapoli : 22-05-2011 alle ore 20.23.57

  6. #6
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    per es. se nella tabella il valore del campo titolo=Titolo A , e se cerchi titolo=titolo-a --> non sono uguali


    prova con where id=1 e stampi i rispettivi valori di titolo e testo



    oppure selezioni tutti i campi dalla tabella e stampi i rispettivi valori di tutti i campi id,titolo e testo

    il nome che hai dato alla tabella quale è? table?

    ----------------------------------------------------------
    Ultima modifica di EuroSalute : 22-05-2011 alle ore 20.50.05 Motivo: info...
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •