Input informazioni

Stato
Discussione chiusa ad ulteriori risposte.

Dreamall91

Utente Silver
19 Ottobre 2008
0
0
0
57
ciao a tutti ho un piccolo problemino.
Praticamente, io vorrei fare la seguente cosa con il mio sito: ho una tabella (non mi riferisco a un DB) divisa in 3 colonne, e ci sono 3 textbox con il tasto in basso INVIA.
Vorrei far si che inserendo un input nella prima textbox, nella 2° e nella 3° questo input venga inserito nella relativa colonna della tabella.
Esempio:
tabella, 3 colonne: NOME - COGNOME - CITTA'
Texbox 1: NOME
Texbox 2: COGNOME
Texbox 3: CITTA

risultato: tabella con 3 colonne con rispettivi dati aggiunti, uno sotto l'altro in righe diverse.

ora io vorrei fare questo con php e sql, so come ci si connette a un database e tutto, ma come faccio a creare un bottone che una volta cliccato prenda i dati delle 3 textbox e li inserisca nella tabella?
PS: credo ke dovrei fare si che la tabella mostrata sul sito sia in qualche modo collegata con una tabella del DB

Grazie in anticipo e scusate la non chiarezza in alcuni punti
 
Codice:
<!-- 3 campi di input + submit
ci ho messo action="" perche' il controllo e' nella stessa pagina dove si trova il submit -->
<form method="POST" action="">
<input name="nome" type="text" />
<input name="cognome" type="text" />
<input name="citta" type="text" />
<input type="submit" name="submit" value="asd" />
</form>

<?

//Dichiarazione Variabili
//ci metto le funzioni addslashes e htmlspecialchars per evitare vulnerabilita' di tipo xss e sql
$nome = addslashes(htmlspecialchars($_POST['nome']));  
$cognome = addslashes(htmlspecialchars($_POST['cognome']));
$citta = addslashes(htmlspecialchars($_POST['citta']));

//ora inserisco i 3 dati nel db
mysql_query("INSERT INTO `tabella_utenti` VALUES ('".$nome."', '".$cognome."', '".$citta."')", $connettiti);
?>

Per far si' che questo codice che ho scritto funzioni devi creare una pagina config.php o chiamala come ti pare, includerla a questa pagina con un semplice include() e metterci i dati del db

config.php
Codice:
<?

$dbhost = "localhost";
$dbuser = "Dreamall91";
$dbpasswd = "cocozza";
$dbname = "DBDreamall91";
$connettiti = mysql_connect($dbhost,$dbuser,$dbpasswd) or die("Errore di connessione al db");
mysql_select_db($dbname,$connettiti) or die("Errore nella selezione del db");

?>

Tutto chiaro? ora vado a dormire notte.
 
Credo di si, grazie mille per il tuo aiuto. Ci provo subito

Perfetto ci sono riuscito. Però, adesso ho bisogno di fare una bella cosa.

Questi valori che man mano aggiungo al db vorrei mostrarli in una tabella.
Quindi una tabella che guadagna 1 riga per ogni submit di informazioni che io faccio.

immaginepb9.jpg

Come posso fare?
PS: per far si che una sql query nn venga aggiunta al database quando non viene inserito alcun input mi basta settare i valori a NOT NULL?
 
Cioè vuoi semplicemente printare i valori aggiunti di volta in volta al db? Beh ti basta eseguire una SELECT sui campi che ti interessano e per ogni tupla letta dal db la scrivi nella tabella...
Per quanto riguarda la questione dei NOT NULL, se il database è progettato bene probabilmente avrai già il vincolo di chiave primaria della tabella non nulla.

PHP:
$res = mysql_query ("SELECT campo1,campo2,campo3 FROM tabella /* WHERE campoi NOT NULL */");

while ($row = mysql_fetch_array ($res, MYSQL_ASSOC))  {
  print "<tr><td>".$row['campo1']."</td><td>".$row['campo2']."</td><td>".$row['campo3']."</td></tr>\n";
}
 
Ci provo immediatamente ti ringrazio.

Ancora scusate per le mie scarsissime conoscenze.

while ($row = mysql_fetch_array ($res, MYSQL_ASSOC)) {
print "<tr><td>".$row['campo1']."</td> <td>".$row['campo2]."</td> <td>".$row['campo3']."</td></tr>\n";
}

Il codice funziona come vorrei, ma come faccio a far si che dopo aver inserito questi 3 input si vada a capo? Non dovrebbe essere svolta da \n questa funzione, cosicchè i prossimi input si accodino uno sotto l'altro e nn uno sotto l'altro?
Invece si accodano uno affianco l'altro

Ci sono riuscito! Però si presenta ancora una volta un problema!

Codice:
<? include ("config.php"); ?>

<br><br>
<!-- 3 campi di input + submit -->
<form method="POST" action="">
<input name="campo1" type="text" />
<input name="campo2" type="text" />
<input name="campo3" type="text" />
<input type="submit" name="submit" value="Invia!" />
</form>

<?
$res = mysql_query ("SELECT campo1,campo2,campo3 FROM tabella_utenti /* WHERE campo1,campo2,campo3 NOT NULL 

*/");

while ($row = mysql_fetch_array ($res, MYSQL_ASSOC))  {
  print "<br><tr><td>".$row['campo1']."</td> <td>".$row['campo2']."</td> <td>".$row['campo3']."</td></tr>\n";
} 

//Dichiarazione Variabili
//ci metto le funzioni addslashes e htmlspecialchars per evitare vulnerabilita' di tipo xss e sql
$campo1 = addslashes(htmlspecialchars($_POST['campo1']));  
$campo2 = addslashes(htmlspecialchars($_POST['campo2']));
$campo3 = addslashes(htmlspecialchars($_POST['campo3']));

//ora inserisco i 3 dati nel db
mysql_query("INSERT INTO `tabella_utenti` VALUES ('".$campo1."', '".$campo2."', '".$campo3."')", $connettiti);
?>

Praticamente ogni volta che faccio refresh della pagina anche se non ho scritto niente nelle textbox di input si aggiunge una query sql e si forma una nuova riga con tutti e 3 i campi vuoti!

Non so se puo servire ma tutte e 3 le colonne della tabella sono varchar(100) e NOT NULL
 
come posso fare cio?

//ora inserisco i 3 dati nel db
mysql_query("INSERT INTO `tabella_utenti` VALUES ('".$campo1."', '".$campo2."', '".$campo3."')", $connettiti);
?>

Dovrei cambiare questo pezzo x impostare condizione ma come?
 
Per verificare se un utente ha messo un valore vuoto puoi fare:
PHP:
if (trim($campo1)=='' or trim($campo2)=='' or trim($campo3)=='') {
	die('Campi obbligatori');
}
Inserisci questo codice prima della query sql :)
 
Ti ringrazio... Non è questo il problema, i lfatto è ke ogni volta ke faccio refresh è come se cliccassi il pulsante di submit!
 
No. Gurarda tu stesso

http://myschoolsite.altervista.org/tabella.php
Anche quando non ho inserito alcun input, e semplicemente mi dirigo in quella pagina, viene generata automaticamente una query sql con campi vuoti che si aggiunge nella tabella. E risultano degli spazi in eccesso.

Ecco, praticamente voglio ke la query sql si esegua SOLO quando clicco il submit non ogni volta che carico la pagina
 
hmm.. nn ho capito.. a che mi servirebbero questi parametri? potresti farmi vedere come inserirli nel codice che ho postato prima?
PS: magari mi invieresti il tuo contatto msn via pm? grazie dell'aiuto datomi finora
 
Ecco il mio contatto:
[ot]casa.roberto [at] hotmail [dot] it[/ot]

Comunque basta fare così:

PHP:
if (!$_POST) {
   // Form e tutte le azioni che devono essere eseguite PRIMA del click sul submit
} else {
   // Query sql e tutte le azioni che devono essere eseguite DOPO del click sul submit
}
 
mi da errore su linea 4 sapreste aiutarmi ancora? :
Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\prova.php on line 4

Codice:
<?
include ("config.php");
if (!$_POST) {
<form method="POST" action="">
<input name="ClasseScuola" type="text">
<input name="Prof" type="text">
<input name="Stronzata" type="text">
<input type="submit" name="submit" value="Invia!" />
</form>

$res = mysql_query ("SELECT ClasseScuola,Prof,Stronzata FROM tabella_utenti /* WHERE ClasseScuola,Prof,Stronzata NOT NULL */");

while ($row = mysql_fetch_array ($res, MYSQL_ASSOC))  {
  print "<br><tr><td>".$row['ClasseScuola']."</td> <td>".$row['Prof']."</td> <td>".$row['Stronzata']."</td></tr>\n";
} 

//Dichiarazione Variabili
//ci metto le funzioni addslashes e htmlspecialchars per evitare vulnerabilita' di tipo xss e sql
$ClasseScuola = addslashes(htmlspecialchars($_POST['ClasseScuola']));  
$Prof = addslashes(htmlspecialchars($_POST['Prof']));
$Stronzata = addslashes(htmlspecialchars($_POST['Stronzata']));

} else {
mysql_query("INSERT INTO `tabella_utenti` VALUES ('".$ClasseScuola."', '".$Prof."', '".$Stronzata."')", $connettiti);
}?>

Cosa c'e di sbagliato in <form method="POST" action=""> ? XD
 
Stai usando del codice HTML nel codice PHP. Fai in questo modo:
PHP:
<?php
include ("config.php");
if (!$_POST) {
?>
<form method="POST" action="">
<input name="ClasseScuola" type="text">
<input name="Prof" type="text">
<input name="Stronzata" type="text">
<input type="submit" name="submit" value="Invia!" />
</form>
<?php
$res = mysql_query ("SELECT ClasseScuola,Prof,Stronzata FROM tabella_utenti /* WHERE ClasseScuola,Prof,Stronzata NOT NULL */");

while ($row = mysql_fetch_array ($res, MYSQL_ASSOC))  {
  print "<br><tr><td>".$row['ClasseScuola']."</td> <td>".$row['Prof']."</td> <td>".$row['Stronzata']."</td></tr>\n";
}


} else {

//Dichiarazione Variabili
//ci metto le funzioni addslashes e htmlspecialchars per evitare vulnerabilita' di tipo xss e sql
$ClasseScuola = addslashes(htmlspecialchars($_POST['ClasseScuola']));  
$Prof = addslashes(htmlspecialchars($_POST['Prof']));
$Stronzata = addslashes(htmlspecialchars($_POST['Stronzata']));
mysql_query("INSERT INTO `tabella_utenti` VALUES ('".$ClasseScuola."', '".$Prof."', '".$Stronzata."')", $connettiti);
}?>
Saluti
 
Madò sono proprio un imbecille scusami... XDXD
E' perfetto, ti ringrazio! PS: Ti ho addato della reputazione.
Un ultima cosa va bene se dopo gli metto un redirect per refreshare la pagina e vedere la tabella? Cosi
Codice:
<?php
include ("config.php");
if (!$_POST) {
?>
<form method="POST" action="">
  <div align="right">
  <input name="ClasseScuola" type="text">
  <input name="Prof" type="text">
  <input name="Stronzata" type="text">
  <input type="submit" name="submit" value="Invia!" />
  </div>
</form>
<div align="right">
  <?php
$res = mysql_query ("SELECT ClasseScuola,Prof,Stronzata FROM tabella_utenti /* WHERE ClasseScuola,Prof,Stronzata NOT NULL */");

while ($row = mysql_fetch_array ($res, MYSQL_ASSOC))  {
  print "<br><tr><td>".$row['ClasseScuola']."</td> <td>".$row['Prof']."</td> <td>".$row['Stronzata']."</td></tr>\n";
}


} else {

//Dichiarazione Variabili
//ci metto le funzioni addslashes e htmlspecialchars per evitare vulnerabilita' di tipo xss e sql
$ClasseScuola = addslashes(htmlspecialchars($_POST['ClasseScuola']));  
$Prof = addslashes(htmlspecialchars($_POST['Prof']));
$Stronzata = addslashes(htmlspecialchars($_POST['Stronzata']));
mysql_query("INSERT INTO `tabella_utenti` VALUES ('".$ClasseScuola."', '".$Prof."', '".$Stronzata."')", $connettiti);
header("location: Uploadcazzate.php"); 
}
?>
</div>

Perchè mi da questo:
Cannot modify header information - headers already sent ...

Anzi faccio un cosa ti posto direttamente tutto:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My School | Cazzat Portal XD</title>
<link href="twoColElsLtHdr.css" rel="stylesheet" type="text/css" />
<!--[if IE]>
<style type="text/css"> 
/* inserire in questo commento condizionale le correzioni css per tutte le versioni di IE */
.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
/* la proprietà zoom proprietaria riportata sopra fornisce a IE l'elemento hasLayout necessario per evitare vari bug */
</style>
<![endif]--></head>
<? include ("config.php"); ?>
<body class="twoColElsLtHdr">

<div id="container">
  <div id="header">
    <h1><center><img src="logo.png" width="415" height="220" />
    </center></h1>
  <!-- end #header --></div>
  <div id="sidebar1">
    
    <h4 align="center">- Main Menu -</h4>
    <p align="center">Homepage</p>
    <p align="center">Cazzate<!-- end #sidebar1 -->
    </p>
  </div>
  <div id="mainContent">
    <h2>
<?
if (!$_POST) {
?>
<form method="POST" action="">
  <div align="right">
  <input name="ClasseScuola" type="text">
  <input name="Prof" type="text">
  <input name="Stronzata" type="text">
  <input type="submit" name="submit" value="Invia!" />
  </div>
</form>
<div align="right">
<?
$res = mysql_query ("SELECT ClasseScuola,Prof,Stronzata FROM tabella_utenti /* WHERE ClasseScuola,Prof,Stronzata NOT NULL */");

while ($row = mysql_fetch_array ($res, MYSQL_ASSOC))  {
  print "<br><tr><td>".$row['ClasseScuola']."</td> <td>".$row['Prof']."</td> <td>".$row['Stronzata']."</td></tr>\n";
}

} else {
//Dichiarazione Variabili
//ci metto le funzioni addslashes e htmlspecialchars per evitare vulnerabilita' di tipo xss e sql
$ClasseScuola = addslashes(htmlspecialchars($_POST['ClasseScuola']));  
$Prof = addslashes(htmlspecialchars($_POST['Prof']));
$Stronzata = addslashes(htmlspecialchars($_POST['Stronzata']));
mysql_query("INSERT INTO `tabella_utenti` VALUES ('".$ClasseScuola."', '".$Prof."', '".$Stronzata."')", $connettiti);
}
header('location: Uploadcazzate.php'); 
?>
</div>
<!-- end #mainContent --></h2>
  </div>
	<!-- Questo elemento di clearing deve seguire immediatamente il div #mainContent al fine di forzare il div #container a contenere tutti i float di livello inferiore --><br class="clearfloat" />
   <div id="footer">
    <p align="center">(C) My School 2008/2009. All Rights Reserved.</p>
    <!-- end #footer --></div>
<!-- end #container --></div>
</body>
</html>


nevermind, fixed.
 
E' ovvio che ti da cannot modify header information, perché hai inserito del codice HTML prima.
Ecco il codice corretto:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My School | Cazzat Portal XD</title>
<link href="twoColElsLtHdr.css" rel="stylesheet" type="text/css" />
<!--[if IE]>
<style type="text/css"> 
/* inserire in questo commento condizionale le correzioni css per tutte le versioni di IE */
.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
/* la proprietà zoom proprietaria riportata sopra fornisce a IE l'elemento hasLayout necessario per evitare vari bug */
</style>
<![endif]--></head>
<? include ("config.php"); ?>
<body class="twoColElsLtHdr">

<div id="container">
  <div id="header">
    <h1><center><img src="logo.png" width="415" height="220" />
    </center></h1>
  <!-- end #header --></div>
  <div id="sidebar1">
    
    <h4 align="center">- Main Menu -</h4>
    <p align="center">Homepage</p>
    <p align="center">Cazzate<!-- end #sidebar1 -->
    </p>
  </div>
  <div id="mainContent">
    <h2>
<?
if (!$_POST) {
?>
<form method="POST" action="">
  <div align="right">
  <input name="ClasseScuola" type="text">
  <input name="Prof" type="text">
  <input name="Stronzata" type="text">
  <input type="submit" name="submit" value="Invia!" />
  </div>
</form>
<div align="right">
<?
$res = mysql_query ("SELECT ClasseScuola,Prof,Stronzata FROM tabella_utenti /* WHERE ClasseScuola,Prof,Stronzata NOT NULL */");

while ($row = mysql_fetch_array ($res, MYSQL_ASSOC))  {
  print "<br><tr><td>".$row['ClasseScuola']."</td> <td>".$row['Prof']."</td> <td>".$row['Stronzata']."</td></tr>\n";
}

} else {
//Dichiarazione Variabili
//ci metto le funzioni addslashes e htmlspecialchars per evitare vulnerabilita' di tipo xss e sql
$ClasseScuola = addslashes(htmlspecialchars($_POST['ClasseScuola']));  
$Prof = addslashes(htmlspecialchars($_POST['Prof']));
$Stronzata = addslashes(htmlspecialchars($_POST['Stronzata']));
mysql_query("INSERT INTO `tabella_utenti` VALUES ('".$ClasseScuola."', '".$Prof."', '".$Stronzata."')", $connettiti);
}
print '<meta http-equiv="refresh" content="0; url=Uploadcazzate.php">';
?>
</div>
<!-- end #mainContent --></h2>
  </div>
    <!-- Questo elemento di clearing deve seguire immediatamente il div #mainContent al fine di forzare il div #container a contenere tutti i float di livello inferiore --><br class="clearfloat" />
   <div id="footer">
    <p align="center">(C) My School 2008/2009. All Rights Reserved.</p>
    <!-- end #footer --></div>
<!-- end #container --></div>
</body>
</html>
Saluti
 
Stato
Discussione chiusa ad ulteriori risposte.