forse ho capito
il tuo campo dove hai tag non si chiama tag ma metatag
quindi
dovrebbe essere cosi
Codice PHP:
$tagdefinitivi= implode("%' OR c_art_articolo.metatag LIKE '%", $tag_def);
forse ho capito
il tuo campo dove hai tag non si chiama tag ma metatag
quindi
dovrebbe essere cosi
Codice PHP:
$tagdefinitivi= implode("%' OR c_art_articolo.metatag LIKE '%", $tag_def);
Questa modifica l'avevo fatta ieri sera dopo aver scritto l'ultimo post, ma il problema era rimasto, ora provo a fare altre modifiche.
Ho trovato il problema, se l'articolo ha solo una parola tag gli articoli correlati si vedono, ma se ha più parole tag gli articoli correlati non li visualizza, quindi credo che il problema sia qui:
$tag_def = explode("@@",$metatag);
if(trim($metatag) != ""){
$tagdefinitivi= implode("%' OR c_art_articolo.metatag LIKE '%", $tag_def);
$tagdefinitivi2 = "'%".$tagdefinitivi."%'";
}
forse nel modo di scrivere nell'implode il punto non viene considerato come carattere normale ma parte integrante del codice php...tieni presente quando si fa
.funzione.?
con quel implode in pratica costruisco la select cosi
where metatag like tag1 or metatag like tag2...
altrimenti per toglierti il pensiero usa foreach
in questo modo
Codice PHP:
if(trim($tag) != ""){
foreach($tag_def as $tagdefinitivi){
$query_15= Select bla bla from bla bla WHERE c_art_articolo.metatag LIKE $tagdefinitivi";
.......
}
}
ora col foreach mi dice che il campo soin non esiste, e certo soin non'è un campo ma una tag![]()
errore Unknown column 'soin' in 'where clause'
Codice PHP:
$metatag = $row['metatag'];
// scompatto il campo metatag con implode in modo che in ogni posizione dell'array possieda un metatag dell'articolo
$tag_def = explode("@@",$metatag);
// con trim levo gli spazi ed escludo i record con il campo metatag vuoto
if(trim($metatag) != ""){
foreach($tag_def as $tagdefinitivi){
echo $metatag;
echo "
";
echo $tag_def;
echo "
";
echo $tagdefinitivi;
echo "
";
echo $tagdefinitivi2;
echo "
";
$sql_articolomarca = "SELECT c_art_articolo.*, c_art_categoria.*, c_art_sottocategoria.*
FROM c_art_articolo
INNER JOIN c_art_categoria
ON c_art_articolo.id_art_categoria = c_art_categoria.id_art_categoria
INNER JOIN c_art_sottocategoria
ON c_art_articolo.id_art_sottocategoria = c_art_sottocategoria.id_art_sottocategoria
WHERE c_art_articolo.metatag LIKE $tagdefinitivi AND c_art_articolo.id_art_articolo != $id
ORDER BY c_art_articolo.id_art_articolo DESC LIMIT 11";
$result_articolomarca = mysql_query($sql_articolomarca,$conn) or die ("errore ".mysql_error());
$row_articolomarca = mysql_num_rows($result_articolomarca);
$row2_articolomarca=mysql_fetch_array($result_articolomarca);
}
}
se all'explode gli levo @@ funziona, però mi da questo errore:
Warning: explode() [function.explode]: Empty delimiter in /web/htdocs/www.sito.it/home/live/include_elenco_articoli_correlati1.php on line 6
Warning: implode() [function.implode]: Invalid arguments passed in /web/htdocs/www.sito.it/home/live/include_elenco_articoli_correlati1.php on line 11
SHINE CARESSE l orèal l oreal paris gloss labbra gloss l’oreal gloss labbra shine caresse shine caresse make up novità soin
'%%'
nella query $tagdefinitivi deve stare tra apici
HO RISOLTOOOO![]()
ho fatto dei controlli e ora pare che funzioniiii!!!!
ho modificato il codice in questo modo
Codice PHP:
$metatag = $row['metatag'];
$tag_def = explode("@@",$metatag);
if(trim($metatag) != ""){
$campi=explode("," ,$metatag);;
while (list(, $valore) = each ($campi)) {
$sql_articolomarca = "SELECT c_art_articolo.*, c_art_categoria.*, c_art_sottocategoria.*
FROM c_art_articolo
INNER JOIN c_art_categoria
ON c_art_articolo.id_art_categoria = c_art_categoria.id_art_categoria
INNER JOIN c_art_sottocategoria
ON c_art_articolo.id_art_sottocategoria = c_art_sottocategoria.id_art_sottocategoria
WHERE c_art_articolo.id_art_articolo != $id AND metatag LIKE '%$valore%'
ORDER BY c_art_articolo.id_art_articolo DESC LIMIT 11";
$result_articolomarca = mysql_query($sql_articolomarca,$conn) or die ("errore ".mysql_error());
$row_articolomarca = mysql_num_rows($result_articolomarca);
$row2_articolomarca=mysql_fetch_array($result_articolomarca);
}
}
if ($row_articolomarca>1){