selezione con checkbox php mysql

marco4004

Nuovo Utente
19 Gen 2010
1
0
0
Salve a tutti avrei il seguente problema

ho un database con dei nomi di libri + la loro recensione

devo realizzare una form con dei checkbox che hanno accanto i titoli dei libri e una query in php che mi permetta di visualizzare, solo le recensioni dei libri che sono stati selezionati nella checkbox.

Qualche suggerimento?
 
Non è complicato, acquisisci i nomi dei libri tramite le checkbox selezionate e crei una query che ottenga le descrizioni ottenute dalla selezione dei nomi dei libri messi in or.
in pratica...

select descrizione from tabellalibri where nome='x' or 'y' or...

Spero di esserti stato utile
Ciao, Ciro
 
Hai almeno le conoscenze necessarie per strutturare il database?
 
mi serve solo un esempio del codice php, e del form

mi serve solo un esempio del codice php, e del form

grazie
 
lotus ha scritto:
Non è complicato, acquisisci i nomi dei libri tramite le checkbox selezionate e crei una query che ottenga le descrizioni ottenute dalla selezione dei nomi dei libri messi in or.
in pratica...

select descrizione from tabellalibri where nome='x' or 'y' or...

Spero di esserti stato utile
Ciao, Ciro

io i nomi dei libri (non sono libri, ma è per intenderci)(sono i numeri corrispondenti al campo ID dei record) selezionati nella checkbox li ho acquisiti tramite il ciclo foreach :

$scheda = $_POST['scheda'];
foreach ($scheda as $key => $value) {
echo "Hai selezionato la checkbox: $key con valore: $value<br />";

adesso come faccio la query per far stampare solo i record spuntati

select descrizione from tabellalibri where ID=$key ???

non va
 
file: index.php:

----------------------------------
$query = "SELECT * FROM fasi_lavorative ORDER BY id";

// gli integro un form:
echo "<form id=\"fasi\" name=\"fasi\" method=\"post\"
action=\"sviluppo_schede.php\">";

echo "<table border =\"1\" cellspacing=\"0\" >";

// eseguo il ciclo della query
while($row = mysql_fetch_array($result)) {

extract ($row);


echo "<tr><td>";

// integro la colonna con le checkbox

echo "<input type=\"checkbox\" name=\"scheda[$id]\" id=\"$id\"> </td>";

// stampo le colonne che prelevo dal db:

echo " <td>$fasi_id</td>";
echo " <td>$fasi_codice</td>";
echo " <td>$fasi_titolo</td></tr>";

}

echo "</table>";

echo "<input type=\"submit\"value=\"sviluppa le schede\"></form>";

------------------------------------------


Fin qui tutto bene, la query funziona e mi appare la pagina che faccio vedere qui sotto:
immagine1.gif



adesso vorrei che dal database la query andrebbe a stampare solo le schede che vengono spuntate dall'utente.

Faccio presente che la colonna dei checkbox non fa parte del db, mentre le altre colonne si, quindi non c'è correlazione.

quindi io provato in questo modo:

pagina sviluppo_schede.php

-------------------------------------------------
// elenco le checkbox spuntate tramite un foreach

$scheda = $_POST['scheda'];

foreach ($scheda as $key => $value) {

echo " $key <br>";
}

// e funziona, mi elenca il nome delle checkbox spunate


/* in pratica il foreach mi stampa tutti gli ID che vorrei far estrarre dalla query e li inserisce nell'array $key.
adesso, considerato che il nome delle checkbox equivale al valore del capo ID del db, provo a fare la query:*/


$query = "SELECT * FROM fasi_lavorative WHERE id = $key ";

// ma cosi non va, perchè mi estrae solo l'ultimo valore dell'array $key

// come faccio??, in pratica dovrebbe essere

$query = "SELECT * FROM fasi_lavorative WHERE id = $key[20] OR $key[21] ecc ";

// in Italiano stretto io vorrei chiedere alla query,: stampami dalla tabella X i capi Y dove i campi ID equivalgono a quelli contenuti nell'array $key


// spero di essermi spiegato bene.

In ogni caso ringrazio per la disponibilità.
 
Intanto modifica questa riga:
PHP:
echo "<input type=\"checkbox\" name=\"scheda[$id]\" id=\"$id\"> </td>";
Così:
PHP:
echo "<input type=\"checkbox\" name=\"scheda[]\" id=\"$id\"> </td>";

E poi modifica questa parte:
PHP:
foreach ($scheda as $key => $value) {

echo " $key <br>";
}
Così:
PHP:
foreach ($scheda as $id) {

echo " $id <br>";
}
 
fatto la $id contiene l'elenco delle checkbox definite

cioè

PHP:
foreach ($scheda as $id) { 

echo " $id <br>"; 
}


dopo aver spuntato 5 caselle, mi stampa:

on
on
on
on
on

ora?
 
Perché hai definito il valore nel parametro id invece che in value? Modifica così:
PHP:
echo "<input type=\"checkbox\" name=\"scheda[]\" value=\"$id\"> </td>";
O, al limite, se ti serve id, lascia sia id che value. Così dovrebbe recuperare correttamente gli ID.
 
ciao
scusate se mi intrometto ma un check per trasmettere un valore non dovrebbe essere così?

echo "<input type=\"checkbox\" name=\"scheda[]\" id=\"$id\" value=\"$id\"> </td>";


non avevo visto la risposta di alex
 
Ultima modifica:
neanche io avevo visto la risposta.

Sembra proprio che ci sia riuscito ho usato un implode e ho trasformato l'array in una stringa con gli OR che poi ho inserito in una variabile e inviata alla query.

Intanto ti ringrazio moltissimo.

Ti faccio sapre domani le novità

:fonzie:
 
subito:

file index.php



PHP:
$query = "SELECT * FROM nome_tabella ORDER BY fasi_id";



echo "<form id=\"\" name=\"fasi\" method=\"post\" action=\"sviluppo_schede.php\">";
echo "<table border =\"1\" cellspacing=\"0\" >";

while($row = mysql_fetch_array($result)) { 
	
	extract ($row);


echo "<tr><td>
      <input type=\"checkbox\" name=\"scheda[]\" value=\"$fasi_id\" ></td>";

echo " <td>$id</td>";
echo " <td>$fasi_codice</td>";
echo " <td>$fasi_titolo</td></tr>";

} 


echo "</table>";

file sviluppo_schede.php

PHP:
$scheda = $_POST['scheda']; 


// il foreaach penso non sia indispensabile

foreach ($scheda as $id) { 
 

}


$string = implode(" OR id = ", $scheda);

echo "<br><br>";


$query = "SELECT * FROM nome_tabella WHERE fasi_id = $string";


echo "<table border =\"1\" cellspacing=\"0\" >";

while($row = mysql_fetch_array($result)) { 
	
	extract ($row);

echo " <tr><td>$id</td>";
echo " <td>$fasi_codice</td>";
echo " <td>$fasi_titolo</td></tr>";

}
tutti qui

e , almeno fino ad adesso funziona, ora provo a lavorarci su

IN OGNI CASO, ACCETTO SUGGERIMENTI PER OTTIMIZZARLO.
 
Ultima modifica:

Discussioni simili