problema inserimento record multipli col tasto f5

  • Creatore Discussione Creatore Discussione nicoct
  • Data di inizio Data di inizio

nicoct

Nuovo Utente
5 Mag 2013
16
0
0
Come da titolo ho un problema con un form che fa un insert in una tabella mysql.
il form deve registrare alcuni dati che verranno visualizzati in una tabella nella stessa pagina del form,con il layout della pagina e l'inserimento dei dati non nessun problema ma essendo l'insert e la select nella stessa pagina premendo il tasto f5 per vedere l'aggiornamento della tabella il risultato e la creazione di tanti record uguali quante le volte che aggiorno la pagina.
avevo provato con un mysql_num_rows su una query che cerca i cognomi uguali e non li inserisce ma il risultato era sempre 0 anche quando nella tabella c'è ne sono diversi,qualcuno può darmi una soluzione?
PHP:
<tr>
				<td>NOME
				</td>
				<td>COGNOME
				</td>
				<td>TELEFONO
				</td>
			</tr>
			<?php
				mysql_connect('localhost','root');
				mysql_query('use lcl');
				$query=mysql_query("select nome,cognome,contatto from partita");
				while($t=mysql_fetch_row($query)){
				echo "<tr>";
					foreach($t as $campo){
						echo "<td align='center'>" . $campo . "</td>";
					}
				echo "</tr>";
				}
			?>
			<tr>
				<td id="reg" style="background-color:#007fff;color:#fff; font-weight:bold;"align="center" colspan="3">
					REGISTRATI
				</td>
			</tr>
		</table>
		<div id="new" >
			<table align="center" >
				<form action="partita.php" method="get">
					<tr align="center">
						<td>
							inserisci il tuo nome
						</td>
						<td>
							inserisci il tuo cognome
						</td>
						<td>
							inserisci il tuo numero
						</td>
					</tr>
					<tr>
						<td>
							<input type="text" name="nome"/>
						</td>
						<td>
							<input type="text" name="cognome"/>
						</td>
						<td>
							<input type="text" name="contatto"/>
						</td>
					</tr>
					<tr>
						<td align="center" colspan="3">
							<input id="submit" type="submit" value="OK"/>
						</td>
					</tr>
				</form>
			</table>
		</div>
		<?php
			$nome=$_GET['nome'];
			$cognome=$_GET['cognome'];
			$contatto=$_GET['contatto'];
			
			/*echo $nome ." ". $cognome ." ". $contatto;*/
			mysql_connect('localhost','root');
			mysql_query('use lcl');
			mysql_query("insert into partita values('$nome','$cognome','$contatto');");
			mysql_close();
 
Ultima modifica di un moderatore:
Scusa non capisco perchè lanci un ciclo foreach.
Non so se mi sbaglio ma non ti basta il while?
e dopo fai ad esmpeio $t['id'];
 
ciao
oltre a quanto detto da salvo:
- c'è una ragione particolare per usare il method="get" al posto del più sicuro method="post"?
- perche non dai un name al pulsante di submit es. name="invia" e poi non metti, per fare l'insert, almeno if(isset($_POST['invia'])){...inserisci...} ?
-inserire i dati senza un controllo (anche se li metti solo tu) è pericoloso, basta che ti trovi un cognome del tipo D'Amore e il db ti va in palla
- vedo mysql_connect('localhost','root') che, almeno mi sembra se stai usando mysql, non è corretto
mysql_connect(host,username,password) hai cancellato la password?
- sempre se stai usando mysql non vedo la selezione del db mysql_select_db(nome db)
- ultimo, ma non meno importante, abbandona le vecchie istruzioni mysql e passa a quelle mysqli o alla classe pdo, a breve non funzioneranno più
 
intanto grazie mille per i consigli,
per quanto riguarda il ciclo foreach mi serve perchè sopra il div "new" che crea un nuovo record c'è la tabella con la select di tutti i record gia inseriti (da quello che ho capito il problema della creazione di nuovi record nell'aggiornamento della pagina sta proprio nel fatto che l'action del form sia nella pagina stessa e quindi i dati vengono riinviati tante volte quante viene premuto il tasto f5 );
per quanto riguarda il metodo credo non faccia differenza anche perchè non ci sono dati importanti comunque non dovrei avere problemi a modificarlo;
il controllo sull'insert è da fare ma al momento sono il locale quindi lo sto lasciando per ultimo;
mysql_connect(host,username,password) da quello che mi hanno spiegato se il webserver o il server online non hanno impostata la password non c'è bisogno di inserirla (sia in locale sia sui server altervista problemi non ne sto avendo);
db mysql_select_db(nome db) ---> mysql_query('use lcl');
manco ho iniziato a studiare mysql che già è stato sorpassato? bene, tanto per capire mysqli è un framework (tipo jquery per javascript) o un linguaggio a se?.
 
mysqli è simile al mysql, ma meglio di mysqli è il pdo adattabile a tutti i tipi di database.
Io ti consiglio di riscrivere lo script con il pdo è dopo farcelo rivedere cosi potremo riaiutarti.
 
ciao
comunque sia le istruzioni mysqli che le pdo sono php, il db rimane sempre mysql.
è un nuovo approccio di interrogazione.
manco ho iniziato a studiare mysql che già è stato sorpassato?
e quello è niente, pensa a chi deve riscrivere tutti gli script, tavolta innumerevoli.
a chi ha reso obsolete le istruzioni mysql devono fischiare le orecchie per tutti gli accidenti che glio ho mandato e che continuo a mandargli
 
a chi ha reso obsolete le istruzioni mysql devono fischiare le orecchie per tutti gli accidenti che gli ho mandato e che continuo a mandargli
hahaha in effetti hanno tempi di aggiornamento troppo veloci, comunque entro la settimana prossima dovrei avere l'esame di programmazione quindi prima di studiarmi mysqli e pdo e capace confonderli con mysql all'esame metto in pausa e riprendo appena finito.
ancora grazie per l'aiuto.:fonzie:
 

Discussioni simili