• User

    Problema causato dagli spazi tra le parole con select Mysql

    Salute a tutti.
    Ho un problema e spero nel vostro aiuto per risolverlo.
    Raccolgo con select i dati relativi ad un utente registrato e voglio visulizzare un'immagine richiamandola in un percorso generato con vari dati del DB.
    Il file jpg è in una directory ed il suo nome nel db.
    Richiamo l'immagine in questo modo: [PHP]Echo "<a target='_blank' href=h..p://w.w.nomesito.eu/art/".$array['genere']."
    /".$array['username']."/files/".$info['nomefile']." >
    <img src=h..p://w.w.nomesitosito.eu/art/"
    .$array['genere']."/".$array['username']."/files/".$info['nomefile']." width=50px border=0></a> ";[/PHP]
    Tutto funziona a meraviglia se l'username è una di sola parola. Un utente si è iscritto con Nome Cognome (Elena Pinco Pallino) e l'immagine non compare.
    Se ispeziono (developer tools di chrome) l'elemento trovo:[HTML]<img src="h..p://w.w.nomesito.eu/art/Letteratura/Elena" Pinco="" Pallino="" files="" 4.jpg="" width="50px" border="0">[/HTML].
    Il percorso che compare con l'apertura <a target...> è h..p://w.w.nomesito.eu/art/Letteratura/Elena> ovvero il percorso si ferma al primo spazio dell'username.
    Il %20 messo manualmente al posto degli spazi risolve questo problema ma non è la soluzione che mi serve.
    Spero che la spiegazione sia chiara.
    Grazie a tutti


  • ModSenior

    Intendi dire che se fai una cosa del genere non va?

    [php]
    <img src=h..p://w.w.nomesitosito.eu/art/" .$array['genere']."/".str_replace(" ", "%20", $array['username'])."/files/".$info['nomefile']." width=50px border=0>
    [/php]


  • Super User

    Utilizza:
    [PHP]
    urlencode($array['username'])
    [/PHP]


  • ModSenior

    Vedi usando molto poco php ti ho dato una soluzione sbagliata. 🙂
    Molto migliore l'ultima indicata.


  • Super User

    @marcocarrieri said:

    Vedi usando molto poco php ti ho dato una soluzione sbagliata. 🙂
    Molto migliore l'ultima indicata.
    Capita, non ti dico cosa ho usato a volte al posto della comodissima str_dap :arrabbiato:


  • User

    Grazie per la risposta ayrton2001, ma con[PHP] urlencode($array['username']) [/PHP] ottengo il percorso ...nomesito.eu/art/Letteratura/Elena+pinco+pallino/files/4.jpg
    Ugualmente non carica l'immagine.
    Ciao


  • User

    marcocarrieri, grazie anche a te. Potrei risolvere modificando lo username inserendo manualmente il %20 negli spazi in mysql ma sarebbe una forzatura e poi richiamandolo nell'elenco degli iscritti risulta visibile tipo "Benvenuta Elena%20Pinco%20Pallino (idem nelle intestazioni di pagina).
    Grazie ancora


  • ModSenior

    Beh purtroppo a ognuno il suo eh eh, io usavo ASP e quindi ora al lavoro VB NET.. 🙂
    Son più da smanettone però a volte "piuttosto che niente è meglio qualcosa ah ah"....
    Chi non lo studia come me non sa dell'esistenza delle funzioni native e a volte questo magari ti fa costruire mitici bubble sort quando magari ci sono gia funzioni di ordinamento. 🙂

    Beh aiutiamo l'utente dai eh eh...


  • User

    Sono andato a rileggermi i manuali PHP relativi a urlencode, alla fine la soluzione che ho trovato è di usare [PHP]rawurlencode($array['username'])[/PHP] che mi restituisce %20.
    Ora le immagini vengono richiamate correttamente.
    A presto.


  • User Attivo

    Comunque per esperienza ti dico che sul web i files con lo spazio nel nome sono una rogna... Personalmente preferisco sempre rinominarli sostituendo i caratteri non alfanumerici con un trattino o sostituendoli con una versione alfanumerica (esempio: è -> e) oppure togliendoli, a seconda dei casi.


  • User Attivo

    @rolandopalinoi said:

    Sono andato a rileggermi i manuali PHP relativi a urlencode, alla fine la soluzione che ho trovato è di usare [php]rawurlencode($array['username'])[/php] che mi restituisce %20.
    Ora le immagini vengono richiamate correttamente.
    A presto.

    Questa è sicuramente una soluzione funzionante, ma ti consiglio di rivedere comunque il codice modificandolo in modo tale che venga generato del codice html valido.
    Ovvero delimitare tutti i valori degli attributi dei tag html con apici o virgolette. Cosa che, salvo alcune eccezioni (come virgolette e apici nei nomi) avrebbe evitato che il problema si presentasse.

    [PHP]
    Echo "<a target='_blank' href='h..p://w.w.nomesito.eu/art/".$array['genere']."
    /".$array['username']."/files/".$info['nomefile']."' >
    <img src='h..p://w.w.nomesitosito.eu/art/"
    .$array['genere']."/".rawurlencode($array['username'])."/files/".$info['nomefile']."' width='50px' border='0' /></a> "; [/PHP]