confronto tra array

Ciao a tutti,

ho il seguente problema: devo verficare se ogni elemento che è presente uin un array sta anche in un altro array

                print "servizi scelti: $servizi"; 

                print "lista servizi: $lista_servizi";

$servizi è un array contenente gli ID dei servizi scelti dall'utente es(4-14-13-21);

$lista_servizi contiene gli ID di tutti i servizi che sono disponibili es (4-1-6-7-8-9-22-23-..........)

$services = @mysql_query('SELECT * FROM servizio ORDER BY name ASC'); 

if (!$services) { 

exit('<p>errore.</p>'); 

} 

                     

while ($serv = mysql_fetch_array($services)) { 

                     

  $id = $serv['id']; 

  $name = htmlspecialchars($serv['name']); 

                         

                 

  echo "<td align=\"left\" valign=\"top\" width=170>"; 

                         

  echo "<input type=\"checkbox\" name=\"servizi[]\" value=\"$id\" if (in_array($servizi, $lista_servizi)) echo 'checked'>"; 

   

  echo "</td>"; 

}

Devo inserire il checked solo su quei servizi che sono stati scelti dall'utente ma non funziona!!!!!

Se verifico  l'IF

                  

if (in_array($servizi, $lista_servizi)) echo 'trovato';

mi da errore:

Warning: in_array(): Wrong datatype for second argument

perchè???

Ho fatto mille tentativi ma non riesco a trovare la soluzione al mio problema...come posso intervenire???

grazie a tutti

inviato 10 anni fa
stellina
X 0 X

L'errore è semplice: $servizi non deve essere un array ma una variabile, in_array non cerca un array dento a un array (nel caso di array monodimensionali)

http://it2.php.net/manual/en/function.in-array.php

risposto 10 anni fa
LonelyWolf
X 0 X

ciao

 :)

per esempio potresti mettere:

// con $servizi = servizi scelti dall'utente e $lista_servizi = risultato della query

foreach ($lista_servizi as $serv)

{

  $id = $serv['id'];

  $name = htmlspecialchars($serv['name']);

  echo "<td align=\"left\" valign=\"top\" width=170>";

  echo "<input type=\"checkbox\" name=\"servizi[]\" value=\"$id\" ";

        if (in_array($id, $servizi)) echo 'checked';

  echo ">";

  echo "</td>";

}

 ::)  ro

risposto 10 anni fa
ro679
X 0 X

ho risolto cosi:

$id = $serv['id'];

$name = htmlspecialchars($serv['name']);

echo "<td align=\"left\" valign=\"top\" width=170>";

echo "$name<input type=\"checkbox\" name=\"servizi[]\" value=\"$id\"  strpos($var2,$id) === false ? '' : 'checked' ";

  if (in_array($id, $ser)) echo 'checked';                  

echo ">";

echo "</td>";

visualizza corretamente il checked ma se cerco di aggiungere un cheched su un altro servizio la modifica NON viene salvata!!!

perchè???

 ???

risposto 10 anni fa
stellina
modificato 10 anni fa
X 0 X

sono riuscita a risolvere, il problema stava proprio nel form di modifica...

grazie  :bye:

risposto 10 anni fa
stellina
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda