Wordpress e confronto testo commenti duplicati

dalziani

Nuovo Utente
12 Ott 2009
9
0
0
Ciao,

ho realizzato un tema accessibile per Wordpress, si chiama Santa Lucia e potete vederlo in opera (e fare il download)

all'indirizzo http://wordpress.4elementi.info.

Per uniformare al template i messaggi di errore (e sottrarli alla funzione wp_die) ho utilizzato due pagine intermedie (studiate per la verifica dei dati

inseriti dall'utente nel formulario) che segnalano errore se non vengono inseriti nome, e-mail e messaggio e se si scrive un

commento duplicato.

E qui la difficoltà: mi connetto al database e richiamo il contenuto dei campi della colonna che contengono il testo dei commenti

$query = "SELECT comment_content FROM wp_comments";
$result = mysql_query($query) or die(mysql_error());

assegno alla variabile $testo (nel contesto di un ciclo while) la ricerca dei contenuti

while($row = mysql_fetch_array($result)){
$testo = $row['comment_content'];

vado a raffrontare il testo del messaggio inserito nel formulario (che va col metodo post nella variabile $commento) con il

testo ottenuto dalla query sui campi commento del database Mysql

if ($commento==$testo)
{
print "<p>Attenzione, esiste gia'un commento con lo stesso contenuto: probabilmente non l'hai scritto tu, se vuoi ritorna

alla <a href=\"javascript:history.back()\">pagina precedente</a> e correggi il testo. Se il link di ritorno alla pagina non

funziona, premi il pulsante \"indietro di una pagina\" del tuo <span lang=\"en\">browser</span></p>";
}

Non funziona a meno che i due commenti uguali siano scritti consecutivamente: eppure se scrivo con echo il contenuto delle

variabile $testo e $commento vedo che corrisponde.

E' poco precisa la funzione di confronto if ($commento==$testo) fuori del ciclo while?

Grazie

Francesco
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
non potresti fare così
PHP:
//......
$query = "SELECT comment_content FROM wp_comments WHERE comment_content='".$commento."'";
$result = mysql_query($query) or die(mysql_error());
$esiste=mysql_num_rows($result);
if($esiste >0){//se esiste è maggiore di 0
//quello che devi fare se il commento esiste
}else{
//quello che dvi fare se il commento non esiste
}
//................
 

dalziani

Nuovo Utente
12 Ott 2009
9
0
0
Grazie e tema

Grazie per il contributo, funziona benissimo.

Il tema accessibile di Wordpress è all'opera qui

http://4elementi.info/wordpress/

e scaricabile qui

http://4elementi.info/wordpress/?page_id=47

Se le soluzioni accessibili sono interessanti (pagine di verifica/correzione dei dati inseriti Wcag 2.0 criterio 3.3.6, messaggi di errore col template del tema, layout elastico e input in em) il codice è a disposizione.

Cari saluti

Francesco
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
22
Roma
alessandro1997.netsons.org
Intanto usa il metodo che ha suggerito borgo italia, in ogni caso ti spiego anche perché funzionava solo se i due commenti erano scritti consecutivamente. Tu utilizzi un ciclo while per assegnare sempre alla stessa variabile il contenuto del commento, di conseguenza la variabile conteneva sempre il testo dell'ultimo commento inserito ;)
 

dalziani

Nuovo Utente
12 Ott 2009
9
0
0
Array

Grazie Alessandro,

e pensa che mi stavo complicando ulteriormente la giornata con gli array.

Grazie borgo italia!

Il motivo per cui usavo while è che mi sono fissato sul primo esempio che avevo considerato per il recupero dei dati da database.

Tutto bene

Francesco