problema con inserimento nuovo record

  • Creatore Discussione Creatore Discussione skate84
  • Data di inizio Data di inizio

skate84

Utente Attivo
16 Mag 2009
83
0
0
Ciaoooo,

ho questo problema...quando compilo una form, non mi inserisce i dati nel db... dovrebbe uscirmi un messaggio con scritto che il formulario è stato compilato correttamente...oppure che è impossibile inserire il record. Ma nulla di questo accade.

ecco i 2 file:

PHP:
<?php
			
$mese =  array('01'=>"Gennaio", '02'=>"Febbraio", '03'=>"Marzo", '04'=>"Aprile", '05'=>"Maggio", '06'=>"Giugno", '07'=>"Luglio", '08'=>"Agosto", '09'=>"Settembre", '10'=>"Ottobre", '11'=>"Novembre", '12'=>"Dicembre");
$date = new DateTime();	
$annoCorrente = $date->format('Y');
		?>
		
		<h2>Nuovo Appuntamento</h2>
		<br/>
		<table>
		<form method="post" action="?id=26">
		<tr><td> Oggetto </td>
			<td><input type="text" name="oggetto" size="40"></td>
		</tr>

		<tr><td> Data </td>
			<td>
				<select name="giorno">
					<option value="0">...</option>
					<?php
						for ($i=1;$i<32;$i++){
							$num = sprintf("%02d", $i);
							echo "<option value=\"$num\">$num</option>\n";	
						}
					?>
				</select>
	
				<select name="mese">
					<option value="0">...</option>
					<?php
					
						foreach ($mese as $k => $v){
							echo "<option value=\"".$k."\">".$v."</option>";
						}
					?>
				</select>
				
				<select name="anno">
					<option value="0">...</option>
					<?php
					
						for ($i=0;$i<=100;$i++){
							echo "<option value=\"".$annoCorrente."\">".$annoCorrente."</option>";
							$annoCorrente -= 1;	
						}
					?>
				</select>
			</td>
		</tr>
		
		<tr><td> Lingua </td>
			<td>	
				<?php
			  		$sel = "SELECT id_lingua, lingua FROM lingue";
			  		$res = mysql_query($sel) or die("Errore nella select");
			  		while($arr = mysql_fetch_array($res)) {
			     		echo $arr[1]."<input type='radio' name='linguaappuntamenti' value='".$arr[0]."'>";
			  		}
			  	?>

			</td>
		</tr>
		
		<tr><td> Testo </td>
			<td>
				<name="testo">
				<?php
					$oFCKeditor = new FCKeditor('testo') ;
					$oFCKeditor->BasePath = 'fckeditor/' ;
					$oFCKeditor->Value = $testo;
					$oFCKeditor->Width  = "580px";
                    $oFCKeditor->Height = "350px";
					$oFCKeditor->Create() ;
				?>
			</td>
		</tr>
						
		
		<tr><td></td>
			<td><input type="submit" name="submit" value="Registra"></td>
		</tr>
		</form>
		</table>
	</body>
</html>

PHP:
<?php
	
		$data_registrazione = date("Y-m-d H:i:s");
		$giorno = $_POST['giorno'];
		$mese = $_POST['mese'];
		$anno = $_POST['anno'];
		$data = $anno . '-' . $mese . '-' . $giorno . ' 00:00:00';
	
	//pulitura dei campi da stringhe pericolose
		$oggetto = trim(stripslashes($_POST['oggetto']));

		$linguaappuntamenti = $_POST['id_lingua'];
		$testo = trim(stripslashes($_POST['testo']));
		//$sValue = stripslashes( $_POST['testo'] );
		
		$oggetto = mysql_real_escape_string($oggetto);
		$testo = mysql_real_escape_string($testo);
		//$sValue = mysql_real_escape_string($testo);
		
		$oggetto = htmlentities($oggetto);
		$testo = htmlentities($testo);
		//$sValue = htmlentities($testo);
	
	//inserisco i dati completati nel formulario all'interno della banca dati
			$sql = "insert into appuntamenti" . "(oggetto, data, id_lingua, testo, data_registrazione)" .
			"VALUES('" . $_REQUEST['oggetto'] . "', '" . $data . "', '" . $_REQUEST['id_lingua'] . "', '" . $_REQUEST['testo'] . "', '" . $data_registrazione . "')";
			
					
		if(!mysql_query($sql, $db))
			{
			print("Attenzione, impossibile inserire il record");
			}
		else
			{
			print("Hai completato il formulario senza problemi. I tuoi dati sono stati registrati.");
			}
		mysql_close($db);
		
		
	?>

Chi mi sa aiutare???
 
Ciao.
La segnalazione degli errori è attiva o disattivata?
non succede nulla di tutto quello, quindi cosa succede?
la variabile $db che si riferisce alla connessione è correttamente inizializzata?
 
ciao
può essere una stupidaggine, ma ammesso che la connessione sia giusta, prova a scrivere

PHP:
$sql = "INSERT INTO appuntamenti" . " (oggetto, data, id_lingua, testo, data_registrazione)" .
            " VALUES('" . $_REQUEST['oggetto'] . "', '" . $data . "', '" . $_REQUEST['id_lingua'] . "', '" . $_REQUEST['testo'] . "', '" . $data_registrazione . "')";

non tanto il maiscolo ma uno spazia tra appuntamenti e (oggetto.... e tra ...registrazione) e VALUES

eventualmente subito di seguito inserisci

var_dump($sql); //var_dump questa sconosciuta
così verifichi che la querry venga scritta correttamente

p.s.
perchè nella query fai "." quando potresti scriverla


PHP:
$sql = "INSERT INTO appuntamenti (oggetto, data, id_lingua, testo, data_registrazione) VALUES ('$_REQUEST['oggetto']', '$data', '$_REQUEST['id_lingua']', '$_REQUEST['testo']','$data_registrazione')";
 
scusa mi sono accorto di una cosa che volevo domandarti

perchè giustamente fai il "trattamento" a $oggetto e $testo poi inserisci nel db i valori "non trattati"?
 
p.s.
perchè nella query fai "." quando potresti scriverla

Lo so, la rendo più complicata eheh ma lo ripreso da un libro...

Cmq per la cronaca sono un P..LA :D sbagliavo a richiamare la pagina dall' index.php. Non è risolto il problema ma almeno riesco a vedere l'errore...praticamente non mi passa il valore della lingua.

Qualcuno mi sa dire il motivo? sbaglio qualcosa nel codice?
 
Ultima modifica:
RISOLTOOOOOOO :)
PHP:
.........
$linguaappuntamenti = $_POST['linguaappuntamenti'];
......

PHP:
$sql = "insert into appuntamenti" . " (oggetto, data, id_lingua, testo, data_registrazione)" .
			" VALUES('" . $_REQUEST['oggetto'] . "', '" . $data . "', '" . $_REQUEST['linguaappuntamenti'] . "', '" . $_REQUEST['testo'] . "', '" . $data_registrazione . "')";

Sbaglio nelle cose più semplici :)
 
due cosine che magari potrebbero tornarti utili.

Se è attiva una sola connessione non c'è bisogno di passare il valore di connessione a mysql_query(), quindi a te basterebbe:
PHP:
mysql_query($sql)
Stesso discorso per mysql_close()

Per non incappare più in un errore come quello che ti è capitato ricordati che c'è mysql_error():
PHP:
mysql_query($sql) or die(mysql_error());
che ti stampa immediatamente l'errore in query
 

Discussioni simili