Pagina 1 din 1
Spatiu sau liniuta intre cuvinte in adresa URL?
Scris: Mie Iul 03, 2013
de alexinio3d
Siteul meu imi genereaza un link cu spatiu intre cuvinte (adica un exemplu ii acesta :
Cod: Selectaţi tot
siteul.ro/post.php?id=18&titlu=Sony a anuntat Xperia Z Ultra, “doar” 6.44 inch
Unde dupa cum se observa, este id-ul postului si titlu cum ii salvat in baza de date.
Intrebarea mea ii urmatoarea :
E bine daca las adresa URL asa, sau trebuie sa pun ceva de genu asta?
Cod: Selectaţi tot
siteul.ro/post.php?id=18&titlu=Sony-a-anuntat-Xperia-Z-Ultra,-“doar”-6.44-inch
Google imi va detecta linkul sau nu mil va detecta ?
Spatiu sau liniuta intre cuvinte in adresa URL?
Scris: Mie Iul 03, 2013
de MarPlo
Salut
Din experienta pot spune ca indicat este sa inlocuiesti spatiile dintre cuvinte din adresa URL cu liniuta, si deasemenea sa stergi alte caractere non alfa-numerice, afara de liniute (cum sunt: ghilimele, punct, virgula, etc.).
Asta se poate face usor in PHP cu preg_replace() si str_replace().
Exemplu:
Cod: Selectaţi tot
$titlu = 'Sony a anuntat Xperia Z Ultra, “doar” 6.44 inch';
$titlu = preg_replace('/[^a-z0-9 _-]+/i', '', $titlu);
$titlu = str_replace(' ', '-', $titlu);
echo $titlu; // Sony-a-anuntat-Xperia-Z-Ultra-doar-644-inch
Spatiu sau liniuta intre cuvinte in adresa URL?
Scris: Mie Iul 03, 2013
de alexinio3d
ok dar eu am o interogatie ceva gen :
Cod: Selectaţi tot
if(isset($_GET['id']) && isset($_GET['titlu']) && $_GET['id'] != "" && $_GET['titlu'] != ""){
echo post_view($_GET['id'], $_GET['titlu']);
}
Cod: Selectaţi tot
function post_view($id, $titlu){
$sql_post = "SELECT * FROM `lgsl_post` WHERE id='".$id."' AND titlu='".$titlu."'";
$mysql_post = mysql_query($sql_post) or die ('Eroare : '.mysql_error());
$raw = mysql_fetch_array($mysql_post);
$id = $raw['id'];
$titlu = $raw['titlu'];
$id_user = $raw['id_user'];
$post = $raw['post'];
$data = $raw['data_ora'];
$img = $raw['img'];
echo "<pre>";
echo "<h4><a href=\"/post.php?id=".$id."&titlu=".$titlu."\" alt=\"".$titlu."\" title=\"".$titlu."\">".$titlu."</a></h4>";
echo $post."<br /><br />";
$sql_user = "SELECT * FROM lgsl_user WHERE id = '".$id_user."'";
$mysql_user = mysql_query($sql_user) or die ('Eroare : '.mysql_error());
$user = mysql_fetch_array($mysql_user);
echo "Autor : <a href=\"/membru.php?user_id=".$user['id']."&user=".$user['nume']."\" alt=\"".$user['nume']."\" title=\"".$user['nume']."\">".$user['nume']."</a>";
echo "<span style=\"float:right\">";
// Plugin share Facebook
echo "<a class=\"fb-share\" href=\"#\" onclick=\"window.open('https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(location.href), 'facebook-share-dialog', 'width=626,height=436'); return false;\"> Share on Facebook</a> ";
// Plugin trimite Facebook
echo "<div class=\"fb-send\" data-href=\"http://www.treisute.ro\"></div> ".$data;
echo "</span>";
echo "</pre>";
echo "<center><div class=\"fb-comments\" data-href=\"http://www.treisute.ro\" data-width=\"1024px\" data-num-posts=\"100\"></div></center>";
}
unde imi verifica daca titlu si id se gasesc in baza de date si ma gandesc ca daca fac cu "-" si fara ghilimele o sami dea eroare .
ce idee imi poti da ?
Spatiu sau liniuta intre cuvinte in adresa URL?
Scris: Joi Iul 04, 2013
de MarPlo
Daca id-ul este unic (cum de regula asa trebuie), nu mai e nevoie sa verifici si dupa titlu, faci verificarea doar dupa id; fiind Unic, nu sunt 2 articole cu acelasi id.
Cod: Selectaţi tot
$sql_post = "SELECT * FROM `lgsl_post` WHERE id=$id LIMIT 1";
Re: Spatiu sau liniuta intre cuvinte in adresa URL?
Scris: Mie Sep 25, 2013
de bordanc_nicu
Am si eu o problema similara, in toate locurile unde am ID unic pentru fiecare postare, am reusit prin eliminarea caracterelor non alfanumerice din link, dar am o tabela care contine coloana autor, si doresc sa imi fie afisate doar volumele unui anumit autor.
Ce functie ar trebui sa folosesc in php, pentru a putea recunoaste autorul din baza de date dupa un string modificat cu liniute?
Spatiu sau liniuta intre cuvinte in adresa URL
Scris: Mie Sep 25, 2013
de MarPlo
Depinde cum e adaugat in baza de date. Daca in baza de date e spatiu in loc de liniuta, in PHP inlocuiesti liniuta cu spatiu, folosind str_replace() , apoi se face select cu sirul inlocuit.
Cod: Selectaţi tot
$sir2 = str_replace('-', ' ', $sir);
$sql = "SELECT * FROM `tabel` WHERE `autor` = '$sir2'";
- Ideea e ca in Select sa ai sirul asa cum e in baza de date, de obicei cu o functie inversa celei folosite la inlocuire.
Sau altfel, se face Select-ul cu "autor" care e la acel ID unic. Exemplu:
Cod: Selectaţi tot
$sql = "SELECT * FROM `tabel` WHERE `autor` = (SELECT `autor` FROM `un_tabel` WHERE `un_tabel`.`id` = $id LIMIT 1)";
- Daca situatia e altfel, da mai multe detalii.
Spatiu sau liniuta intre cuvinte in adresa URL?
Scris: Mie Sep 25, 2013
de bordanc_nicu
Fiind generat in mod dinamic, filtrarea pentru generarea link-ului o fac inlocuind orice caracter care nu este alfanumeric cu liniuta "-", astfel nu sunt inlocuite doar spatiile, ci si virgule, si liniuta de subliniere.
De exemplu, URL-ul: talkingnet.blogspot.ro/2011/10/nuance-talks-522-released-release-notes.html nu are transmis un ID unic, iar in titlul paginii apare si o virgula.
As dori eventual sa stiu daca SQL nu ar accepta vre-o functie care eventual fiind inlocuite liniutele cu spatii, sa permita o cautare dupa cuvintele rezultate din inlocuirea liniutelor.
Spatiu sau liniuta intre cuvinte in adresa URL?
Scris: Joi Sep 26, 2013
de MarPlo
Personal nu cunosc o astfel de functie.
Ca solutii, vad sa se schimbe adresa URL astfel incat sa contina id-ul. De exemplu, daca adresa URL e generata dinamic in PHP, in loc de extensia ".html" sa fie ".id", findca oricum extensia in adrese URL rescrise nu are vreo valoare speciala, decat sa iti fie de folos in script.
O alta solutie, sa faci o coloana in tabelul mysql in care sa adaugi sirul asa cum e dupa inlocuire, cum e in llink, si te folosesti de acea coloana in Select.
Re: Spatiu sau liniuta intre cuvinte in adresa URL?
Scris: Joi Sep 26, 2013
de bordanc_nicu
Da, pana la urma aleg varianta ca sa adaug inca o coloana in tabela, coloana care sa contina numele autorului modificat pentru a se potrivi cu link-ul.