problema array

Bruce5000

Utente Attivo
14 Ott 2007
106
0
0
Salve, ho un problema con questo script:
PHP:
$sql = mysql_query("SELECT * FROM spam_aristotele") or die (mysql_error());

while($row = mysql_fetch_array($sql)){

$p1 = explode(' ', $row['keyword']);
 
 var_dump($p1);
}
Con var_dump($p1) mi stampa più array in cui in ognuno c'è una sola parola estratta dal database,
invece vorrei che mi stampasse un unico array con tutte le parole estratte dal database.
Potete aiutarmi? Grazie.
 
Ok grazie così funziona ma ho un altro problema;
devo confrontare due array (quello in cui ci sono le parole estratte
dal database cioè $p1 e $array_textarea in cui ci sono le parole che un utente
inserisce in un campo textarea e $parolechiave è la variabile via POST che le contiene).
Ma la funzione in_array non va; se trova anche una sola parola uguale
deve stampare "spam" invece non stampa nulla.
Puoi dirmi dov'è che sbaglio? Grazie.
PHP:
$sql = mysql_query("SELECT * FROM spam_aristotele") or die (mysql_error());

$array_textarea = explode(' ', $parolechiave);
$p1 = array();	

while($row = mysql_fetch_array($sql)){
	
	$p1[] = $row['keyword'];
	
}
	
 var_dump($array_textarea);

 var_dump($p1);

  if(in_array($array_textarea, $p1))
   {
       echo "spam";
   }
 
ciao
prova questo scriptnino

PHP:
<?php
$cercare=array('pinco','pallo','borgo');
$dove=array('pinco','borgo', 'italia');
$non_ammesse= array();
$trovato=0;
foreach($cercare as $valore){
	if(in_array($valore, $dove)){
		$trovato++;
		$non_ammesse[]=$valore;
	}
}
if($trovato>0){
	echo "trovato $trovato parole<br>";
	foreach($non_ammesse as $cosa){
		echo "$cosa <br>";
	}
}else{
	echo "non trovato";
}
?>

credo, se non ho capito male quel c...o di inglese, che in_array quello che devo trovare deve essere una stringa non un array
 
La funzione in_array cerca la corrispondenza di una stringa tra gli elementi di un array, non va bene per fare il confronto di due array. E poi quello che devi fare tu non è il confronto ma una ricerca incrociata :hammer:
 
Finalmente sono riuscito a far funzionare lo script.
Ho fatto così:
PHP:
$sql = mysql_query("SELECT * FROM spam_aristotele") or die (mysql_error());


	$array_textarea = explode(' ', $parolechiave);
	$p1 = array();	

	while($row = mysql_fetch_array($sql))
	{
	
		$p1[] = $row['keyword']."";
	
	}
   
   if(array_intersect($array_textarea, $p1))
	{
		echo "Non si accettano siti spam.<br><br>\n";	
	}
 
ciao
è casesensitive
se la soluzione trovata da bruce array_intersect (ottima) è casesensitive anche quella credo che sarebbe opportuno trasformare entrambi gli array o tutto in minoscolo o tutto in maiuscolo

es.

$p1[] = strtolower($row['keyword'])."";

$array_textarea = strtolower(explode(' ', $parolechiave));// verificare se va bene
 
Grazie per il suggerimento di convertire in minuscolo gli array.
L'array $p1 va bene, per l'array $array_textarea è così:
PHP:
$array_textarea = explode(' ', strtolower($parolechiave));
Altrimenti non funzionava.
 

Discussioni simili