- Home
- Categorie
- Coding e Sistemistica
- Coding
- Chi mi aiuta con il PHP?\
- 
							
							
							
							
							Ho sistemato! XD Falso allarme! XD 
 
- 
							
							
							
							
							Hai dimenticato di inserire il tipo int(11) 
 
- 
							
							
							
							
							Si, piccolo errore...  
 
- 
							
							
							
							
							Ok allora se il nome è Matricola, cosi dovrebbe andare: 
 [php]
 <?php
 session_start();
 $conn = mysql_connect("localhost","root","") or die('Connessione mancata con il root. Errore: ' . mysql_error());
 $select = mysql_select_db("sabicom",$conn) or die("Errore nella connessione con il database. Errore: " . mysql_error());
 ?>
 <html lang="en">
 <head>
 <title>Cancellazione strumenti</title>
 </head>
 <body>
 <marquee width="100%" direction="left" scrollamount="8"><img src="img/logo.jpg" /></marquee>
 <?php
 if(isset($_POST['utiliz']))
 $utiliz = trim($_POST['utiliz']);
 else
 die('Input mancante');if(isset($_POST['strum'])) 
 $strum = trim($_POST['strum']);
 else
 die('Input mancante');$sql = "SELECT * FROM strumenti WHERE Utilizzatore = '".mysql_real_escape_string($utiliz)."' AND Strumento = '".mysql_real_escape_string($strum)."'"; 
 $result = mysql_query($sql, $conn);
 if(!$result)
 {
 die('Errore durante il trasferimento dei dati');
 }
 $num=mysql_numrows($result);
 mysql_close();
 ?>
 <form method="post" action="confirm-cancel.php">
 <table border="1" align="center" bordercolor="lightblue">
 <tr>
 <td align="center">Fornitore</td>
 <td align="center">Assistenza</td>
 <td align="center">Utilizzatore</td>
 <td align="center">Strumento</td>
 <td align="center">Marca</td>
 <td align="center">Modello</td>
 <td align="center">Descrizione</td>
 <td align="center">Venduto / Dismesso</td>
 <td align="center">Data di acquisizione</td>
 </tr>
 <?php
 $i=0;
 while ($i < $num) {
 $Matricola = mysql_result($result,$i,"Matricola");
 $fornitore=mysql_result($result,$i,"Fornitore");
 $assistenza=mysql_result($result,$i,"Assistenza");
 $utilizzatore=mysql_result($result,$i,"Utilizzator e");
 $strumento=mysql_result($result,$i,"Strumento");
 $marca=mysql_result($result,$i,"Marca");
 $modello=mysql_result($result,$i,"Modello");
 $descrizione=mysql_result($result,$i,"Descrizione" );
 $vend_dism=mysql_result($result,$i,"Venduto_Dismes so");
 $data_acquis=mysql_result($result,$i,"Data_acquisi zione");
 ?>
 <tr>
 <td align="center"><?php echo $fornitore ?></td>
 <td align="center"><?php echo $assistenza ?></td>
 <td align="center"><?php echo $utilizzatore ?></td>
 <td align="center"><?php echo $strumento ?></td>
 <td align="center"><?php echo $marca ?></td>
 <td align="center"><?php echo $modello ?></td>
 <td align="center"><?php echo $descrizione ?></td>
 <td align="center"><?php echo $vend_dism ?></td>
 <td align="center"><?php echo $data_acquis ?></td>
 <td align="center"><input type="checkbox" name="identificatore[]" value="<?php echo $Matricola; ?>" /></td>
 </tr>
 <?php
 $i++;
 }
 ?>
 </table>
 <input type="submit" value="Elimina selezionati" />
 </form>
 <br />
 <br />
 <form method="post" action="index.html">
 <div align="right"><input type="submit" value="Vai alla pagina principale" /></div>
 </form>
 </body>
 </html>
 [/php]
 [php]
 <?php
 session_start();
 $conn = mysql_connect("localhost","root","") or die('Connessione mancata con il root. Errore: ' . mysql_error());
 $select = mysql_select_db("sabicom", $conn) or die("Errore nella connessione con il database. Errore: " . mysql_error());
 ?>
 <!DOCTYPE html>
 <head>
 <title>Conferma cancellazione</title>
 </head>
 <body>
 <marquee width="100%" direction="left" scrollamount="8"><img src="img/logo.jpg" /></marquee>
 <?php
 if(isset($_POST['identificatore']))
 $identificatore = $_POST['identificatore'];
 else
 die('Input mancante');foreach($identificatore AS $tmp) 
 if(!is_numeric($tmp))
 die('Input manomessi');if(isset($_POST['conferma'])) 
 {
 $identificatori = implode(',', $identificatore);
 mysql_query("DELETE FROM strumenti WHERE Matricola IN '".mysql_real_escape_string($identificatori)."'");
 die('Eliminato/i correttamente');
 }
 ?>
 <form method="post" action="">
 <input type="submit" name="conferma" value="Conferma eliminazione" />
 </form>
 <br />
 <br />
 <form method="post" action="index.html">
 <div align="right"><input type="submit" value="Vai alla pagina principale" /></div>
 </form>
 </body>
 </html>
 [/php]Vedi se funziona perchè l'ho scritto velocemente.
 
- 
							
							
							
							
							All'ultima pagina mi dice "Input mancante".. Da dove viene? 
 
- 
							
							
							
							
							Hai selezionato qualche checkbox? 
 
- 
							
							
							
							
							Si, è proprio questo che mi chiedo... Nonostante abbia selezionato il checkbox mi da' problemi! 
 
- 
							
							
							
							
							Chiunque possa aiutarmi lo faccia, per cortesia... E' urgentissimo! 
 
- 
							
							
							
							
							Devi avere un pò di pazienza, non possiamo risponderti in 2 ore. 
 Ho provato in locale e non ho problemi, il campo della tabella lo hai chiamato Matricola o hai cambiato nome?
 
- 
							
							
							
							
							Il campo è Matricola, ho appena controllato... 
 
- 
							
							
							
							
							Ma tu che programma usi per gestire il DB? 
 
- 
							
							
							
							
							Uso phpMyAdmin, quell'errore mi sembra impossibile da avere in quanto nel form c'è quell'input correttamente. 
 Al posto di:
 [php]
 if(isset($_POST['identificatore']))
 $identificatore = $_POST['identificatore'];
 else
 die('Input mancante');
 [/php]
 Metti:
 [php]
 var_dump($_POST);
 if(isset($_POST['identificatore']))
 $identificatore = $_POST['identificatore'];
 else
 die('Input mancante');
 [/php]
 E incollami qui cosa mostra.
 
- 
							
							
							
							
							Questo è quello che mi fa' vedere: array(1) { ["identificatore"]=> array(1) { [0]=> string(1) "2" } } 
 Cos'è?
 
- 
							
							
							
							
							Ah! Poi mi esce anche questo! array(1) { ["conferma"]=> string(21) "Conferma eliminazione" 
 
- 
							
							
							
							
							Io ora ho provato a mettere i codici in questo modo: if(isset($_POST['identificatore'])) 
 {
 $identificatore = $_POST['identificatore'];
 $identificatori = implode(',', $identificatore);
 $sql = mysql_query("DELETE FROM strumenti WHERE Matricola IN '".mysql_real_escape_string($identificatori)."'");
 if(!$sql)
 echo 'Richiesta di cancellazione respinta';
 else
 echo 'Record eliminati correttamente!';
 }
 else
 {
 echo 'Errore. Selezione dei record da eliminare non effettuata.';
 ?>
 <br />
 <br />
 <form method="post" action="cancel.html">
 <input type="submit" value="Vai alla pagina precedente" />
 </form>
 <br />
 <br />
 <form method="post" action="index.html">
 <div align="right"><input type="submit" value="Vai alla pagina principale" /></div>
 </form>
 <?php
 exit();
 }
 foreach($identificatore AS $tmp)
 if(!is_numeric($tmp))
 die('Input manomessi');E ora mi da' questo errore: Richiesta di cancellazione respinta Non è che c'è qualcosa che fa' interferenza? Io utilizzo come gestore generale di Apache, Filezilla, phpMyAdmin, Mercury e TomCat l'applicativo Xampp... Può darsi che sia quello il problema? 
 
- 
							
							
							
							
							Ho concluso il mio lavoro! Grazie mille a tutti! Non so cosa avrei fatto senza di voi!  
 
- 
							
							
							
							
							Se modifichi il codice che ti dò, e io continuo ad attenermi a quello mio è normale che poi non funzionino più le cose. 
 Quel codice tuo non può funzionare, hai cambiato l'ordine delle cose che ho scritto, non puoi cambiarli a caso.
 
- 
							
							
							
							
							Adesso mi funziona... Non so cosa dirti... Anzi, grazie 1000! 
 
- 
							
							
							
							
							Il foreach però mettilo nell'ordine corretto o sei vulnerabile a SQL INjection. 
 Figurati, per qualsiasi dubbio, domanda o chiariamento chiedi pure nel forum.