Salve a tutti, sono nuovo del forum e spero di trovarmi bene... Mi sono iscritto per chiedervi un parere se riuscite a risolvere questo strano problema che mi si verifica solo con Internet Explorer..
In pratica è una tabella di Pulsanti, Campi di testo e Checkbox in un Form, che carica immagini su un server e dati in un DB, quando si manda il Submit..
Il problema è quando si preme il tasto Submit con IE.
Il primo click va a vuoto (Non fa nulla proprio), facendo perdere l'immagine caricata; il secondo click invece funziona, entra nel
if( $_POST['submit']=='CARICA'),
ma le immagini non ci sono più...
Con Chrome/Firefox/Safari/Opera il problema non c'è, il Submit funziona al primo click e carica tutto..
Ho provato anche a fare il submit subito dopo il caricamento delle immagini in automatico (aggiungendo l'id al form e chiamando document.getElementById("IDFORM").submit() in un metodo la cui chiamata l'avevo inserita nell'onchange dell' Input File al posto dell'onchange che è scritto qui sotto), ma nulla si blocca li...
Stesso se metto al posto di document.getElementById("IDFORM").submit() scritto prima document.getElementById("submit").click() (aggiungendo ovviamente l'id='submit' all' Input Submit del Form)..
Ora vi posto il codice:
Codice PHP:
<?php
include "../inc/func.inc.php";
include "ainc/adm.inc.php";
include "ainc/SmartImage.class.php";
// inizializzazione della sessione
session_start();
$user = new Utente();
$user->checkSession(session_id(),$_SESSION['login']);
adm_head("news - modifica",$user);
$id_girone = addslashes(filter_var($_GET['id'], FILTER_SANITIZE_STRING));
$stagione= addslashes(filter_var($_GET['y'], FILTER_SANITIZE_STRING));
if ($_POST['submit'] == "CARICA"){
echo "entro"; //verifica se entra nell'if
.
. //codice che carica le immagini e i dati
.
}
.
.
//Codice che crea la pagina
.
.
//Inizio Form
echo "<form action=\"". $_SERVER['PHP_SELF'] ."?id=" . $id_girone. "&y=" . $stagione ."\" name=\"upload_immagini\" enctype=\"multipart/form-data\" method=\"post\" \">";
?>
<table>
<thead>
<tr>
<th>Ord</th><th>Squadra</th><th>Stemma</th><th></th><th>Foto</th><th></th><th>Pubblicità</th><th></th><th>Pres</th><th>Reti</th>
</tr>
</thead>
<tbody>
<?
$imgs = array();
$imgs_sql = //importazione dati da tabella SQL
.
.
. //inizializzazione array $alma per ogni elemento tabella
.
.
//Se ci sono immagini già inserite
{
echo "<tr><td><input name=\"ord_" . $alma['nriga'] . "\" type=\"input\" align=\"center\" maxlength=\"2\" size=\"2\" onkeyup=\"if(validateNumber(event)==false){this.clear();alert('Inserisci solo cifre numeriche!');}\" value=\"" . addslashes(filter_var($alma['ordine'], FILTER_SANITIZE_STRING)) . "\" /></td>";
echo "<td><input name=\"nomes_" . $alma['nriga'] . "\" readonly=\"readonly\" type=\"text\" align=\"left\" size=\"9\" value=\"". $alma['nome'] . "\" />";
echo "<input name=\"id_" . $alma['nriga'] . "\" type=\"hidden\" value=\"mod\" /><input name=\"id_sq_" . $alma['nriga'] . "\" type=\"hidden\" value=\"" . $alma['ids'] . "\" /></td>";
echo "<td><input name=\"stem_" . $alma['nriga'] . "\" type=\"file\" style='height: 1px;width: 1px; ' onchange=\"tstem_" . $alma['nriga'] . ".value=stem_" . $alma['nriga'] . ".value.replace('C:\\\\fakepath\\\\','');\" accept=\"image/*\" />";
echo "<input id=\"tstem_" . $alma['nriga'] . "\" type=\"text\" align=\"center\" readonly=\"readonly\" size=\"8\" value=\"" . $alma['p_stemma'] . "\" /></td>";
echo "<td><input name=\"button1\" type=\"button\" value=\"Sfoglia\" onclick=\"stem_" . $alma['nriga'] . ".click();\" /></td>";
echo "<td><input name=\"foto_" . $alma['nriga'] . "\" type=\"file\" style='height: 1px;width: 1px; overflow:hidden;' onchange=\"tfoto_" . $alma['nriga'] . ".value=foto_" . $alma['nriga'] . ".value.replace('C:\\\\fakepath\\\\','');\" accept=\"image/*\" />";
echo "<input name=\"tfoto_" . $alma['nriga'] . "\" type=\"text\" align=\"center\" readonly=\"readonly\" size=\"8\" value=\"" . $alma['p_foto'] . "\" /></td>";
echo "<td><input name=\"button2\" type=\"button\" value=\"Sfoglia\" onclick=\"foto_" . $alma['nriga'] . ".click();\" /></td>";
echo "<td><input name=\"pubb_" . $alma['nriga'] . "\" type=\"file\" style='height: 1px;width: 1px; overflow:hidden;' onchange=\"tpubb_" . $alma['nriga'] . ".value=pubb_" . $alma['nriga'] . ".value.replace('C:\\\\fakepath\\\\','');\" accept=\"image/*\" />";
echo "<input name=\"tpubb_" . $alma['nriga'] . "\" type=\"text\" align=\"center\" readonly=\"readonly\" size=\"8\" value=\"" . $alma['p_pubblicita'] . "\" /><input name=\"hpubb_" . $alma['nriga'] . "\" type=\"hidden\" value=\"" . addslashes(filter_var($alma['h_pubblicita'], FILTER_SANITIZE_STRING)) . "\" /><input name=\"lpubb_" . $alma['nriga'] . "\" type=\"hidden\" value=\"" . addslashes(filter_var($alma['l_pubblicita'], FILTER_SANITIZE_STRING)) . "\" /></td>";
echo "<td><input name=\"button3\" type=\"button\" value=\"Sfoglia\" onclick=\"pubb_" . $alma['nriga'] . ".click();\" /></td>";
echo "<td><input type=\"checkbox\" name=\"pres_". $alma['nriga'] ."\" value=\"".addslashes(filter_var($alma['c_presenza'], FILTER_SANITIZE_STRING))."\"" . (addslashes(filter_var($alma['c_presenza'], FILTER_SANITIZE_STRING))==1?"checked":"") . " onclick=pres_" . $alma['nriga'] . ".value=(pres_" . $alma['nriga'] . ".value==1?0:1) /></td>";
echo "<td><input type=\"checkbox\" name=\"reti_". $alma['nriga'] ."\" value=\"".addslashes(filter_var($alma['c_reti'], FILTER_SANITIZE_STRING))."\"" . (addslashes(filter_var($alma['c_reti'], FILTER_SANITIZE_STRING))==1?"checked":"") . " onclick=reti_" . $alma['nriga'] . ".value=(reti_" . $alma['nriga'] . ".value==1?0:1) /></td></tr>";
}
else{
$sq = array();
$sq_sql = //importazione id e nome delle squadre che interessano per la tabella immagini
if(mysql_num_rows($sq_sql) > 0){
// estrazione dei record tramite ciclo
$i=0;
while($sq_obj = $data->estrai($sq_sql)){
$i = $i +1;
$nriga = str_pad((int) $i,3,"0",STR_PAD_LEFT);
echo "<tr><td><input name=\"ord_" . $nriga . "\" type=\"input\" align=\"center\" maxlength=\"2\" size=\"2\" onkeyup=\"if(validateNumber(event)==false){this.clear();alert('Inserisci solo cifre numeriche!');}\" /></td>";
echo "<td><input name=\"nomes_" . $nriga . "\" readonly=\"readonly\" type=\"text\" align=\"left\" size=\"9\" value=\"". $sq_obj->nome . "\" />";
echo "<input name=\"id_" . $nriga . "\" type=\"hidden\" value=\"new\" /><input name=\"id_sq_" . $nriga . "\" type=\"hidden\" value=\"" . $sq_obj->id . "\" /></td>";
echo "<td><input name=\"stem_" . $nriga . "\" type=\"file\" style=\"opacity:0.0; -moz-opacity: 0.0; filter: alpha(opacity=00); width:1px; height:1px;\" onchange=\"tstem_" . $nriga . ".value=stem_" . $nriga . ".value.replace('C:\\\\fakepath\\\\','');\" accept=\"image/*\" />";
echo "<input name=\"tstem_" . $nriga . "\" type=\"text\" align=\"center\" readonly=\"readonly\" size=\"8\" /></td>";
echo "<td><input name=\"button1\" type=\"button\" value=\"Sfoglia\" onclick=\"stem_" . $nriga . ".click();\" /></td>";
echo "<td><input name=\"foto_" . $nriga . "\" type=\"file\" style=\"opacity:0.0; -moz-opacity: 0.0; filter: alpha(opacity=00); width:1px; height:1px;\" onchange=\"tfoto_" . $nriga . ".value=foto_" . $nriga . ".value.replace('C:\\\\fakepath\\\\','');\" accept=\"image/*\" />";
echo "<input name=\"tfoto_" . $nriga . "\" type=\"text\" align=\"center\" readonly=\"readonly\" size=\"8\" /></td>";
echo "<td><input name=\"button2\" type=\"button\" value=\"Sfoglia\" onclick=\"foto_" . $nriga . ".click();\" /></td>";
echo "<td><input name=\"pubb_" . $nriga . "\" type=\"file\" style=\"opacity:0.0; -moz-opacity: 0.0; filter: alpha(opacity=00); width:1px; height:1px;\" onchange=\"tpubb_" . $nriga . ".value=pubb_" . $nriga . ".value.replace('C:\\\\fakepath\\\\','');\" accept=\"image/*\" />";
echo "<input name=\"tpubb_" . $nriga . "\" type=\"text\" align=\"center\" readonly=\"readonly\" size=\"8\" /><input name=\"hpubb_" . $nriga . "\" type=\"hidden\" /><input name=\"lpubb_" . $nriga . "\" type=\"hidden\" /></td>";
echo "<td><input name=\"button3\" type=\"button\" value=\"Sfoglia\" onclick=\"pubb_" . $nriga . ".click();\" /></td>";
echo "<td><input type=\"checkbox\" name=\"pres_". $nriga ."\" value=\"1\" checked onclick=pres_" . $nriga . ".value=(pres_" . $nriga . ".value==1?0:1) \></td>";
echo "<td><input type=\"checkbox\" name=\"reti_". $nriga ."\" value=\"1\" checked onclick=reti_" . $nriga . ".value=(reti_" . $nriga . ".value==1?0:1) \></td></tr>";
}
}
}
echo "</tbody></table><input name='submit' type='submit' value='CARICA' /></form>";
$data->disconnetti();
}
</body>
</html>
Questo è quello che alla fine stampa nel lato client:
codice:
// Stampa parte iniziale della pagina, prima del FORM
<form action="/admin/almanacco.php?id=7&y=2012" name="upload_immagini" enctype="multipart/form-data" method="post" >
<table>
<thead>
<tr>
<th>Ord</th><th>Squadra</th><th>Stemma</th><th></th><th>Foto</th><th></th><th>Pubblicità</th><th></th><th>Pres</th><th>Reti</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input name="ord_001" type="input" align="center" maxlength="2" size="2" onkeyup="if(validateNumber(event)==false){this.clear();alert('Inserisci solo cifre numeriche!');}" value="1" />
</td>
<td>
<input name="nomes_001" readonly="readonly" type="text" align="left" size="9" value="CHIEVO" />
<input name="id_001" type="hidden" value="mod" /><input name="id_sq_001" type="hidden" value="110" />
</td>
<td>
<input name="stem_001" type="file" style='height: 1px;width: 1px; overflow:hidden;' onchange="tstem_001.value=stem_001.value.replace('C:\\fakepath\\','');" accept="image/*" />
<input id="tstem_001" type="text" align="center" readonly="readonly" size="8" value="-" />
</td>
<td>
<input name="button1" type="button" value="Sfoglia" onclick="stem_001.click();" />
</td>
<td>
<input name="foto_001" type="file" style='height: 1px;width: 1px; overflow:hidden;' onchange="tfoto_001.value=foto_001.value.replace('C:\\fakepath\\','');" accept="image/*" />
<input name="tfoto_001" type="text" align="center" readonly="readonly" size="8" value="-" />
</td>
<td>
<input name="button2" type="button" value="Sfoglia" onclick="foto_001.click();" />
</td>
<td>
<input name="pubb_001" type="file" style='height: 1px;width: 1px; overflow:hidden;' onchange="tpubb_001.value=pubb_001.value.replace('C:\\fakepath\\','');" accept="image/*" />
<input name="tpubb_001" type="text" align="center" readonly="readonly" size="8" value="-" />
<input name="hpubb_001" type="hidden" value="0.000" />
<input name="lpubb_001" type="hidden" value="0.000" />
</td>
<td>
<input name="button3" type="button" value="Sfoglia" onclick="pubb_001.click();" />
</td>
<td>
<input type="checkbox" name="pres_001" value="1"checked onclick=pres_001.value=(pres_001.value==1?0:1) />
</td>
<td>
<input type="checkbox" name="reti_001" value="1"checked onclick=reti_001.value=(reti_001.value==1?0:1) />
</td>
</tr>
</tbody>
</table>
<input name='submit' type='submit' value='CARICA' />
</form>
logout</p>
</body>
</html>
Ho provato a farmi stampare l'array $_FILES appena prima dell' if($_POST...) ..
Come pensavo... Internet Explorer non lo fa il submit la prima volta che lo clicco, (solo nel caso io abbia caricato un' immagine)... Non stampa nulla ( Array() )... E la seconda volta che clicco il Submit mi stampa l'array $_FILES vuoto:
codice:
Array (
[stem_001] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 )
[foto_001] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 )
[pubb_001] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 )
)
Mentre con Chrome funziona, stampandomi per esempio:
codice:
Array (
[stem_001] => Array ( [name] => Chievostemma.png [type] => image/png [tmp_name] => /tmp/php6P6mta [error] => 0 [size] => 10821 )
[foto_001] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 )
[pubb_001] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 )
)