Problema urgente con checkbox, array e explode

federica.or.76

Nuovo Utente
7 Gen 2011
7
0
0
CHECKBOX, ARRAY e EXPLODE
Non riesco ad estrapolare i dati che ho inserito tramite checkbox dinamici in un'unica cella del mio database.
PROBLEMA: con questo codice, mi legge solo il primo dato fino alla prima virgola che ho inserito es. 51, e mi riporta il titolo della news così per ogni array. Ma se nella cella oltre al 51, c'è anche 69, (es. 51,69,30,) non mi legge quel dato, quindi quando vado nella tipologia collegata al 69 non mi fà vedere nessun titolo anche se in realtà dovrebbe.
So che al listato manca (credo) il ciclo explode che gli fà leggere tutti i dati inseriti successivi al primo ma siccome non sono esperta di PHP, non sò come fare ne cosa cercare nel forum per risolvere il mio problema.

FILE: contenuto_news.php è il file dove richiamo le news collegate alla solita tipologia. (esempio: meteo con id tipologia 10 contiene 3 news, cronaca con idtipologia 14 contiene 5 news etc.)


<?PHP
$sql = "SELECT * FROM tbl_news_ita2 WHERE idtipologia=$idtipologia";
$tuple = @mysql_query($sql, $connessione) or die(mysql_error());
$num_tuple = mysql_num_rows($tuple);
$paginazione = 25;

if (empty($offset)) { $offset = 0;}
if (empty($limit)){ $limit = $paginazione; }
$query = @mysql_query("$sql LIMIT $offset, $limit" , $connessione);
while ($rsnews = mysql_fetch_array ($query)){?>

<?php echo ($rsnews["titolo"]); ?>
<br>
.......................................................................................
<br>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Se vuoi inserire un array in una cella MySQL ti consiglio di usare la funzione serialize quando lo inserisci e unserialize per riconvertirlo in array. Le funzioni explode e implode sono poco stabili per questo genere di operazioni, e qualcuno potrebbe facilmente effettuare un SQL injection o corrompere i dati nella tabella.
 

federica.or.76

Nuovo Utente
7 Gen 2011
7
0
0
Non ho mai usato serialize e unserialize....non so se sono buona

Ecco il codice che avevo usato per salvare i dati nel database.....

FILE: news_insert.php

PHP:
<form action="<?=$PHP_SELF?>?mod=<?=$mod?>&dir=<?=$dir?>&page=news_insert2" method="post" enctype="multipart/form-data" onsubmit="return controlla()" name="registrazione">
<table border="0" cellpadding="2" cellspacing="2" style="border-collapse: collapse" width="94%" align="center">
<tr>
<td width="100%" valign="top"><b><font face="Verdana" size="1">SCEGLI TIPOLOGIE</font></b></td>
<td width="80%"><script type="text/javascript">
function SelezTT()
{
var i = 0;
var modulo = document.registrazione.elements;
for (i=0; i<registrazione.length; i++)
{
if(registrazione[i].type == "checkbox")
{
registrazione[i].checked = !(modulo[i].checked);
}
}
}
</script>
<div style="font-family:Verdana, Geneva, sans-serif; font-size:10px;" class="third left">
<?PHP
$querytip = mysql_query("SELECT * FROM tbl_news_tipologie WHERE evadi='0'", $connessione);
while ($rstip = mysql_fetch_array ($querytip)){
?>
<?php if($rsnews["tipologia_ita"]!=0){ echo "$querytip"; } ?> 
<input type="checkbox" name="idtipologia[]" value="<?=$rstip["idtipologia"]?>">
<?=$rstip["tipologia_ita"]?><br></span><span class="testo_semplice_news"> 
</span> <?}?><br /><br />
<input type="button" value="Seleziona tutto" onclick="SelezTT()">
</div>

<?php
if ( !empty( $node->field_demo_testo[0]['view']) ) {
print "<div id='show'>". $node->field_demo_testo[0]['view'] ."</div>";
}
?>

</td>
</tr>
<tr> 
<td></td>
<td>
<input type="submit" name="submitvalues" value="Salva e prosegui" class="form" style="width:300px">
</td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>


FILE: news_insert2.php

PHP:
<?PHP
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { 

$arr = $_POST['idtipologia']; 

$tot_value = ""; 
foreach ($arr as $value) { 
$tot_value .= "$value,"; 
}


$sql = sprintf("INSERT INTO tbl_news_ita2 VALUES ('', '$tot_value', '$titolo', '$descrizione', '$testo', '', '','$immaginetesto_name', '$immagineicona_name', '$url', '', '$data', '0', '$ordine', '$novita')");
$rs_in = mysql_query ($sql, $connessione) or die(mysql_error());
$idnews=mysql_insert_id();

} 
creafilejspereditor();
?>

<script type="text/javascript">
window.location = "<?=$PHP_SELF?>?mod=<?=$mod?>&dir=<?=$dir?>&page=<?=news_elenco>&id=<?=$id?>"
</script>
 
Ultima modifica di un moderatore:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Basta che modifichi queste tre righe:
PHP:
$tot_value = "";  
foreach ($arr as $value) {  
$tot_value .= "$value,";  
}
Così:
PHP:
$tot_value = serialize($arr);
E poi quando recuperi il campo dal database lo passi alla funzione unserialize che ti restituirà nuovamente l'array.
 

federica.or.76

Nuovo Utente
7 Gen 2011
7
0
0
Ciao, scusa se non ti ho risposto e ringraziato subito, ma ho fatto delle prove.....e....

finche applico serialize e unserialize all'interno del solito file, mi restituisce i valori giusti e tutti quelli inseriti nella solita cella del db.
Es.
<? PHP
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$arr = $_POST['idtipologia'];

$tot_value = "";
foreach ($arr as $value) {
// $tot_value .= "$value,";
$tot_value .= base64_decode (serialize ($arr));
}
$sql = sprintf("INSERT INTO tbl_news_ita2 VALUES ('', '$tot_value', '$titolo', '$descrizione', '$testo', '', '','$immaginetesto_name', '$immagineicona_name', '$url', '', '$data', '0', '$ordine', '$novita')");
$rs_in = mysql_query ($sql, $connessione) or die(mysql_error());
$idnews=mysql_insert_id();
}
creafilejspereditor();
?>
<?php
unserialize( base64_decode( $_POST["$value"] ) );
foreach ($arr as $value) {
$tot_value .= "$value,";

echo "$value"."<br>";}
?>

MA QUANDO vado a impostare la mia query in un altro file, non riesco a farlo funzionare, mi da errore di foreach!

Come posso fare?

Di seguito ho inserito la query che utilizzerei se avessi un solo dato all'interno della cella idtipologia. Siccome ho più dati, la query mi deve leggere tutti i dati nelle celle e farmi vedere il titolo della news corrispondente al valore idtipologia che passo nella barra di navigazione in alto.

<?PHP
$sql = "SELECT * FROM tbl_news_ita2 WHERE idtipologia=$idtipologia";
$tuple = @mysql_query($sql, $connessione) or die(mysql_error());
$num_tuple = mysql_num_rows($tuple);
$paginazione = 25;

if (empty($offset)) { $offset = 0;}
if (empty($limit)){ $limit = $paginazione; }
$query = @mysql_query("$sql LIMIT $offset, $limit" , $connessione);
while ($rsnews = mysql_fetch_array ($query)){?>

<?php echo ($rsnews["titolo"]); ?>
<br>
.................................................. .....................................
<br>

Se potessi darmi una mano anche qui, te ne sarei grata.
Ciao
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Non devi modificare così:
PHP:
foreach ($arr as $value) { 
// $tot_value .= "$value,"; 
$tot_value .= base64_decode (serialize ($arr));
}
Ma così:
PHP:
$tot_value = serialize($arr);
Senza nessun foreach. E poi non capisco: cosa c'entra base64_decode? Toglilo...
 

federica.or.76

Nuovo Utente
7 Gen 2011
7
0
0
Non devi modificare così:
PHP:
foreach ($arr as $value) { 
// $tot_value .= "$value,"; 
$tot_value .= base64_decode (serialize ($arr));
}
Ma così:
PHP:
$tot_value = serialize($arr);
Senza nessun foreach. E poi non capisco: cosa c'entra base64_decode? Toglilo...

Ok ho fatto la sostituzione, e per richiamare i dati con query in un'altro file come faccio?


$tot_value = unserialize($arr);
(scusa, ma sono alle prime armi, e sto facendo una corsa contro il tempo, ciao)
 

federica.or.76

Nuovo Utente
7 Gen 2011
7
0
0
Ciao, eccomi di nuovo qui!

Ho impostato la mia query e questo è il risultato: http://www.lunigianasostenibile.it/public/new/menu_variabile.php

è un percorso di prova e in tutte e quattro le voci dovrebbero esserci delle news, invece mi viene letto solo il primo dato prima della "," gli altri no, quindi quando viene comparato idtipologia=$value" è come se non vedesse niente


<?PHP
$querytip2 = mysql_query("SELECT * FROM tbl_news_ita2", $connessione);
$rstip2 = mysql_fetch_array ($querytip2);
$value = $idtipologia;
$array = unserialize($value);

$sql = "SELECT * FROM tbl_news_ita2 WHERE idtipologia=$value";

$tuple = @mysql_query($sql, $connessione) or die(mysql_error());
$num_tuple = mysql_num_rows($tuple);

$paginazione = 25;

if (empty($offset)) { $offset = 0;}
if (empty($limit)){ $limit = $paginazione; }

$query = @mysql_query("$sql LIMIT $offset, $limit" , $connessione);

while ($rsnews = mysql_fetch_array ($query)){

echo "$value" ."-". $rsnews["titolo"]."<br>" . "...................................." . "<br>";

echo "<br>";
echo ".......................................................................................";

echo "<br>";?>

<? } ?>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Non capisco una cosa. In queste righe:
PHP:
$value = $idtipologia; 
$array = unserialize($value);
A parte il fatto che non capisco per quale motivo copi $idtipologia in $value... dove è definita la variabile $idtipologia?
 

federica.or.76

Nuovo Utente
7 Gen 2011
7
0
0
Non capisco una cosa. In queste righe:
PHP:
$value = $idtipologia; 
$array = unserialize($value);
A parte il fatto che non capisco per quale motivo copi $idtipologia in $value... dove è definita la variabile $idtipologia?

La variabile idtipologia, la recupero dalla barra in alto dell'indirizzo, quando clicco sulla voce del menù, mi compare es. http://www.lunigianasostenibile.it/public/new/tipologia.php?novita=17&idtipologia=58

Quando l' idtipologia è uguale a 58, mi deve andare a prendere dalla tabella tbl_news_ita 2 il titolo e farmelo vedere.

Nel mio database, tbl_news_ita 2 è composta da id, idtipologia, titolo, descrizione etc.

Dentro idtipologia, vengono salvati tramite form, dei numeri in questa maniera: 58,51,62,

Io devo fare il confronto tra il numero che compare nell'indirizzo (http://www.lunigianasostenibile.it/public/new/tipologia.php?novita=17&idtipologia=58
) e il numero che è contenuto nella cella idtipologia.

Il listato che ho fatto, mi pubblica il titolo ma solo se es. 58, è il primo numero, se invece è inserito così: 61,58, non me lo riconosce e non mi visualizza il titolo.

Questo è il mio problema :(
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Problema urgente con Python e la libreria Mechanize Programmazione 0
O Principiante: problema con funzione CURL ###URGENTE### PHP 1
S PROBLEMA database URGENTE! MySQL 0
W Problema impaginazione contenuti [era:help urgente per sito internet!!!!!] HTML e CSS 1
I Aiuto!!!problema Urgente!!! Programmazione 1
M Problema lettere accentate [era: Problema urgente ... help me please] HTML e CSS 7
A Problema urgente da risolvere prima di Natale Flash 1
P Problema acquisizione clienti Webdesign e Grafica 0
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 7
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
H problema carrello woocommerce PHP 2
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
M Problema su query JOIN in tre tabelle PHP 0
S Problema esportazione tabelle Mysql in Excel PHP 0
G Problema ------- con Query PHP 1

Discussioni simili