problemi con inser into e riga bianca nel db

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Ho il seguente problema. Stavo facendo delle prove con mysqli e sono giunto ad inserire i dati da tastiera. Solo che quando vado ad inserirli mi da due avvisi:

1) Errore nell'inserire idati;

e subito dopo:

2) Dati inseriti correttamente.

Vado a controllare nel db di phpmyadmin riga vuota. Non capisco dove sbaglio. Spero che voi mi possiate correggere l'errore sicuramente è banale e stupido lo so già. Ma da solo non sono riuscito a trovarlo sigh sob :(


PHP:
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        
      
    <label for="nuovacitta">Nuova città: <input type="text" id="nuovacitta" name="nuovacitta" ></label>

    
<div align ="center">
    
<input type="submit" name="submit" value="Aggiungi Città" />
</div>
</form>
        <?php
 require_once("connettimysqli.php");
 if (!isset($_POST['submit'])) {  

 $sql ="INSERT INTO localita (nuovacitta) VALUES ('$nuovacitta')";
 
die ("Errore nell'isenrimento dati");
}else{
    
die ("Dati inseriti correttamente nel db.");    
}
        ?>
    </body>
</html>

Come potete vedere vorrei fare tutto in una pagina senza richiamo forse l'errore sta nel fatto che non c'è form all'inizio dell'input ???? Spero in voi grazie.
 
problemi con insert into e riga bianca nel db

Ciao borgo,

Mi rivolgo a te sperando che mi possa dare una soluzione. Allora ho eseguuito il tuo consiglio di lasciare il veccho mysql e passare al nuovo. Ho cercato sia nel forum che su internet svariati esempi li ho provati ma il risultato rimane che il db mi rimane vuoto e mi duplica le righe. ossia invece di inserire un record ne aggiunge due alla volta perchè appena lo faccio girare mi compare "Dati nseriti correttamente", poi ci metto ilnome della città e così divenatno due ma sempre con rigghe vuote. Invece io vorrei fare in modo che la scritta "Dati inseriti correttamente" compaia dopo aver prenuto il tassto "aggiungi" che viene gestito nella stessa pagina per comodità. Ti riposto la nuova versione del listato precedentemente postato prima. Questa dovrebbe avere già la funzione di mysqli.

provacitta.php:

PHP:
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        
<!--<form action="aggiungicitta.php" method="post">-->

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">  
      
    Nuova Città: <input type="text" name="nuovacitta" id="nuovacitta" />
 
<div align ="center">
    
<input type="submit" value="Aggiungi Città" />
</div>
</form>
        <?php
 if (!isset($_POST['submit'])) {  

        require_once("connettimysqli.php");

$mysqli->query ("INSERT INTO localitai (nuovacitta) VALUES ('$nuovacitta')");

   
 $con = mysqli_query($con, $query);
        if (!$res)
            echo mysqli_error($con);
        else
            echo "Nuova città inserita correttamente";
    } else {
        echo "Errore nell'inserimento dati. ";
    }
?>
    </body>
</html>

Mi potresti verificare se il codice sia il campo input e seguente è corretto oppure ci sono degli errori e magari correggermeli per favore ??? Non so più che fare :( Grazie spero in te e in voi.
 
ciao
1) non puoi mescolare la programmazzione ad oggetti con la procedurale
usando la procedurale manca
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
e la, se usi quella ad oggetti,
$con = mysqli_query($con, $query);
è sbagliata
2) usi la variabile $nuovacitta, da dove salta fuori?
probabilmente intendevi
$nuovacitta=$_POST['nuovacitta'];
3) stesso discorso per la variabile $res
4) non hai dato il name al submit quindi non trova $_POST['submit']
5) non capisco bene cosa intendi con quegli if/else, forse hai sbagliato alcune aperture e/o chiusure

ricorda che con mysqli puoi usare o il sistema ad oggetti o il procedurale (ma non mischiati), se non conosci bene la programmazione ad oggetti usa il procedurale che è molto simile alle vecchie mysql

p.s.
non so cosa tu abbia dentro il file connettimysqli.php, il vecchio tipo di connessione?
 
Ciao Borgo,

Grazie per la risposta. Allora nel file connettimysqli.php ovviamente c'è la nuova connessione con mysqli. Ti posto il codice:


connettimysqli.php

PHP:
$host     = 'nas';
$user     = 'fabio';
$password = 'xxxx';
$db     = 'MegaLaboratorio';

// Stringa di connessione al db on mysqli
$mysqli = new mysqli($host, $user, $password, $db); 

if ($mysqli->connect_error) { 
	die ('Non riesco a connettermi: ' . mysqli_connect_errno());
}else{
         
    echo'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
    
      }
  
}

Questo è quello che connette con mysqli. Ora probabile ch eho fatto un po' di confusione perchè mentre cercavo su internet degli esempi mi sarò mangiato qualche cosa. Ma il punto è un altro (tanto quando infviato purtroppo non andava). Ho fatto tutto con il vecchio sistema mysql.php per capire se riuscivo ad ottenere quello che volevo. E in parte ci sono riuscito. Questo è quello che ho combinato. in pratica, l'utente inserisce la città che dovrebbe andare a finire nel menu con la freccetta in basso (select). Però se un altro utente proviene dalla stessa città e sta già in elenco, come fare a gestire la cosa ??? Inoltre c'è il problema che prendendo la città dalla select non me lo memorizza nel db. Ti posto il tutto vedi se quando hai tempo mi puoi dare una mano a sistemare le cose.E' tutto programmazione mysql quindi vecchio stile per facilitare le cose. Grazie in anticipo.


Tabella localita:

PHP:
CREATE TABLE localita(

id 		int(10) NOT NULL AUTO_INCREMENT,
nazione 		VARCHAR( 30 ) NOT NULL ,
nuovanazione	VARCHAR( 30 ) NOT NULL ,
citta 		VARCHAR( 30 ) NOT NULL ,
nuovacitta		VARCHAR( 30 ) NOT NULL ,
provincia 		VARCHAR( 2 ) NOT NULL ,
nuovaprovincia	VARCHAR( 2 ) NOT NULL ,
PRIMARY KEY ( id ) ENGINE = MYISAM ;
)

provainsdati.php

PHP:
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

    </head>
    <body>
        
<!--<form action="aggiungicitta.php" method="post">-->
    
 <form action='<?php echo $_SERVER['REQUEST_URI'];?>' method=post> 
     
<label for="citta">Inserisci Città: <input type="text" id="citta" name="citta" > </label>

        <?php
include_once("connetti.php");
if(isset($_POST['submit'])) {
    


$citta =mysql_real_escape_string(strtolower(trim ($_POST['citta'])));
$fbnuovacitta =mysql_real_escape_string(strtolower(trim ($_POST['nuovacitta'])));
 
#$q=mysql_query("SELECT descrizione FROM tblcategoria ORDER BY descrizione");

$q=mysql_query("SELECT citta FROM localita ORDER BY citta");
$vuota=mysql_num_rows($q);

if($vuota > 0){//fa vedere la select solo se ci sono categorie e mostra solo il'input nuovacategoria, in pratica solo la prima volta
	echo "Città: <select name=\"citta\">";
		echo "<option value=\"\">-seleziona-</option>";
	while($riga=mysql_fetch_assoc($q)){
		echo "<option value=\"".$riga['citta']."\">".$riga['citta']."</option>";
	}//fine while
echo "</select> ";

//verifica inserimento nuova città
	
	if($citta=="" && $fbnuovacitta !=""){//sto cercasndo di inserire una nuova categoria
		$q_cat=mysql_query("SELECT citta FROM localita WHERE citta'$fbnuovacitta'");
		$esiste=mysql_num_rows($q_cat);
		if($esiste==0){//non esiste quindi l'aggiungo
			$q_i=mysql_query("INSERT INTO localita (citta) VALUES('$fbnuovacitta')");
			$citta=$fbnuovacitta;//questo è il valore che andro ad inesrire nella tabella tblrivista
         }else{//se esiste  vuol dire che hai messo nel campo un valore che era nella selecct del form quindi
			$citta=$fbnuovacitta;//questo è il valore che andro ad inesrire nella tabella tblrivista
		}
	}
}//fine if vuota
        $q_i=mysql_query("INSERT INTO localita(citta, nuovacitta)  VALUES('$citta','$nuovacitta')");
       echo "<h1>nuovo record inserito</h1>";//e torno al form
        } //fine if submit
?>
<div align="center">
    
	<input name='submit' type='submit' value='Salva' />
</div>
</form>
        </body>
</html>

Questo è quello attuale che sto cercando di migliorare. Grazie e buona domenica.
 

Discussioni simili