Controllo FORM e invio dati al DB

  • Creatore Discussione Creatore Discussione Kirsolo
  • Data di inizio Data di inizio
ciao
posta il dump della tabella

tutto giusto

Notice: Undefined variable: salva_file in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\formTxT.php on line 138

Notice: Undefined variable: salva_file in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\formTxT.php on line 138

Notice: Undefined variable: salva_file in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\formTxT.php on line 138

Notice: Undefined variable: salva_file in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\formTxT.php on line 138
string(386) "INSERT INTO immobile(nickname, denominazione, indirizzo, localita, descrizione, estensioneTerreno, estensioneSupAbit, tipo, status, referente, nCamere, nBagni, prezzo, speseCondominiali, giardino, immagine,img2,img3,img4, data, ins_mail, boxauto) VALUES('gino','bifamiliare','','','bello spazioso','0','0','ciao','vendita','','0','0','500','0','','',',','','10101999','k@k.it','')"
Notice: Undefined variable: messaggio in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\formTxT.php on line 140

Notice: Undefined variable: mess_err in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\formTxT.php on line 140
i tuoi dati sono stati inseriti

questo quello che mi compare, (non preoccuparti dei Values '' o '0' , li ho messi apposta per provare )

riga 138 -> è quella con VALUES ('$nome' ...ecc..
riga 140 -> è quella con $err=$mess_err.$messaggio......
 
ciao
se non sbaglio hai fatto sparire il conteggio $cnt e l'inizializzazione dell'array $salva_file=array("","","","")
Ho messo come dici tu:confused: ...boh mi sembra strano
cè sia
PHP:
// percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
		$dir = "../images_immobili";
		$salva_file=array("","","","");
che

PHP:
if (!move_uploaded_file($v, "$dir/$nomefile")) {
								$mess_err .= "<br/>Impossibile spostare il file $k";
								} else {
									$mess_err.= "<br/>Immagine $k caricata con successo<br />"; 
									$cnt=0;
									$salva_file[$cnt]="images_immobili/$nomefile";//$cnt va da 0 al numero di immagini caricate -1 
									}
 
ciao
come ti sembra strano?
se porti fuori dal foreach di caricamento immagine (come giusto) l'istruzioni di insert, in qualche modo devi portarti dietro il nome dei file (se caricati) quindi:
l'istruzione
$salva_file=array("","","","");
crea un array fatto così
$salva_file[0] =>""
$salva_file[1] =>""
$salva_file[2] =>""
$salva_file[3] =>""
cioè con valori vuoti, ma che esistono
poi uso il contatore che avevi messo per valorizzarli col nome del/dei file/s se ci sono
ipotizziamo che l'utente inserisca due foto tu ottieni
$salva_file[0] =>"images_immobili/pinco.jpg"
$salva_file[1] =>"images_immobili/pallo.jpg"
$salva_file[2] =>""
$salva_file[3] =>""
quando vai a fare l'insert
.....VALUES('..','.....','$salva_file[0]','$salva_file[1],'$salva_file[2],'$salva_file[3]','...')";
non corri il rischio che per l'indice 3 e 4 ti dia "undefinited index (o variable) ... on line...
tutto questo perchè l'utente puo caricare "nessuna immagine" o sino ad un max di 4.
l'unica cosa che devi verificare è che in tabella i campi relativi sia settati a NULL no a NOT NULL
 
ciao
come ti sembra strano?
se porti fuori dal foreach di caricamento immagine (come giusto) l'istruzioni di insert, in qualche modo devi portarti dietro il nome dei file (se caricati) quindi:
l'istruzione
$salva_file=array("","","","");
crea un array fatto così
$salva_file[0] =>""
$salva_file[1] =>""
$salva_file[2] =>""
$salva_file[3] =>""
cioè con valori vuoti, ma che esistono
poi uso il contatore che avevi messo per valorizzarli col nome del/dei file/s se ci sono
ipotizziamo che l'utente inserisca due foto tu ottieni
$salva_file[0] =>"images_immobili/pinco.jpg"
$salva_file[1] =>"images_immobili/pallo.jpg"
$salva_file[2] =>""
$salva_file[3] =>""
quando vai a fare l'insert
.....VALUES('..','.....','$salva_file[0]','$salva_file[1],'$salva_file[2],'$salva_file[3]','...')";
non corri il rischio che per l'indice 3 e 4 ti dia "undefinited index (o variable) ... on line...
tutto questo perchè l'utente puo caricare "nessuna immagine" o sino ad un max di 4.
l'unica cosa che devi verificare è che in tabella i campi relativi sia settati a NULL no a NOT NULL

ci ho capito poco :(
io sono a questo punto:
PHP:
if(isset($_POST['submit'])){ 
    $err="";//metti a vuoto una stringa 
// ......Qui vanno i vari if else relativi al controllo del testo...
  if($err==""){
  //......Qui ci va il controllo relativi all'immagine( che non ho ben capito per i contatori)
 }
// connex al db
// sql e INSERT TO
} // chiusa graffa dell ISSET

o sbaglio? riusciresti a scrivermi meglio il caricamento img con i contatori e gli array che dici tu?
graziee
 
ciao
scusa ho guardato un po' meglio: stai facendo un po' di caos senza contare che stai mescolando mysqli a oggetti con mysql procedurale. o uno o l'altro
 
ciao
scusa ho guardato un po' meglio: stai facendo un po' di caos senza contare che stai mescolando mysqli a oggetti con mysql procedurale. o uno o l'altro

helppp mee :dipser:
penso che alla fine il problema sia il caricamento img, perchè i controlli testo son abb facili
 
Mi son fermato ancora qui, non mi carica nel database le informazioni.
Non riesco a far conciliare il tutto:
PHP:
if(isset($_POST['submit'])){ 
  // ..........controllli di testo
	if($err==""){ 
		//*********************C A R I C A M E N T O    I M M A G I N I ****************************
		// limite peso in byte 
		$peso_file = 1024 * 1024;
		// inizializziamo il messaggio
		$messaggio = "Carica una o piu immagini, fino ad un massimo di 4 consentite:";
		// estensioni ammesse
		$estensioni = array("jpg", "png", "bmp", "gif");
		// percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
		$dir = "../images_immobili";
		$salva_file=array("","","","");//creo l'array per i nomi dei file in modo che sia sempre di 4 posti anche se vengono inserite meno di 4 immagini 
		
		// azzeriamo il messaggio
			$mess_err = "";
		// recuperiamo e uniamo le informazionei sulle immagini
			$infoimages = array_combine($_FILES["image"]['name'], $_FILES["image"]['tmp_name']);
		// cicliamo le immagini
				foreach ($infoimages as $k => $v) {
				// nome del file
				$nomefile = strtolower($k);
				// controlliamo il peso immagine
					if (filesize($v) < $peso_file) {
					// recuperiamo l'estensione
					$estensionefile = pathinfo($nomefile, PATHINFO_EXTENSION);
					// controlliamo il tipo immagine
						if (in_array(strtolower($estensionefile), $estensioni)) {
						// controllo caricamento
							if (is_uploaded_file($v)) {
							// spostiamo il file nella cartella immagini
								if (!move_uploaded_file($v, "$dir/$nomefile")) {
								$mess_err .= "<br/>Impossibile spostare il file $k";
								} else {
									$mess_err.= "<br/>Immagine $k caricata con successo<br />"; 
									$cnt=0;
									$salva_file[$cnt]="images_immobili/$nomefile";//$cnt va da 0 al numero di immagini caricate -1 
									}
							} else {
								$mess_err .= "<br/>Errore nell'upload del file $k.";
								}
						} else {
							$mess_err .= "<br/>Tipo immagine non consentito : $k";
							}
					} else {
						$mess_err .= "<br/>Immagine $k non caricata : limite peso superato";
						}
				} 
		
	} 
	   echo "tutto giusto<br>"; 
        //..... fai quello che devi fare con i dati e metti l'avviso su $err 
        $err="i tuoi dati sono stati inseriti<br />";
	
		$sql = new mysqli("localhost", "root", "", "myDB");	
		$query="INSERT INTO immobile(.., ..,.....,immagine,img2,img3,img4,....,...) 
	VALUES('$nome','$denominazione','','','$descrizione','.........,'$salva_file[0]','$salva_file[1],'$salva_file[2],'$salva_file[3]','...','..','')";
				var_dump($query);//e qui verifichi che venga scritta come dovrebbe
				$err=$mess_err.$messaggio."i tuoi dati sono stati inseriti<br />";
			 
		//mostri il messaggio 
		echo $err; 
    //e torni al form pulito dopo 303 secondi (content ='303;...) 
    echo "<meta http-equiv='Refresh' content='303; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
}

qualcuno può darmi una mano?
 
ciao
dove si incastra?
comunque non vedo l'istruzione per salvare i dati
PHP:
<?php
//....
				$query="INSERT INTO immobile(.., ..,.....,immagine,img2,img3,img4,....,...) VALUES('$nome','$denominazione','','','$descrizione','.........,'$salva_file[0]','$salva_file[1],'$salva_file[2],'$salva_file[3]','...','..','')";
                var_dump($query);//e qui verifichi che venga scritta come dovrebbe
                mysql_query($query) or die)mysql_error()); // cioè questa ******
				$err=$mess_err.$messaggio."i tuoi dati sono stati inseriti<br />";
             
        //mostri il messaggio 
        echo $err; 
//...
?>
 
ciao
dove si incastra?
comunque non vedo l'istruzione per salvare i dati
PHP:
<?php
//....
				$query="INSERT INTO immobile(.., ..,.....,immagine,img2,img3,img4,....,...) VALUES('$nome','$denominazione','','','$descrizione','.........,'$salva_file[0]','$salva_file[1],'$salva_file[2],'$salva_file[3]','...','..','')";
                var_dump($query);//e qui verifichi che venga scritta come dovrebbe
                mysql_query($query) or die)mysql_error()); // cioè questa ******
				$err=$mess_err.$messaggio."i tuoi dati sono stati inseriti<br />";
             
        //mostri il messaggio 
        echo $err; 
//...
?>

la var_dump mi da la query esatta, però non li vedo nel db.
In che senso salvare i dati?
 
ciao
questa
$query="INSERT INTO immobile(....ecc...
è solo una stringa (che serve per preparare l'istruzione di inserimento) e il var_dump te la presenta in modo da vedere se è scritta bene o no, però da sola non fa niente di niente.
se vuoi salvare i dati nella tabella (sempre che la $query sia scritta giusta) devi dare l'apposita istruzione
mysql_query($query);
se non dai l'istruzione mai e poi mai php si sogna di salvare i dati
 
ciao
questa
$query="INSERT INTO immobile(....ecc...
è solo una stringa (che serve per preparare l'istruzione di inserimento) e il var_dump te la presenta in modo da vedere se è scritta bene o no, però da sola non fa niente di niente.
se vuoi salvare i dati nella tabella (sempre che la $query sia scritta giusta) devi dare l'apposita istruzione
mysql_query($query);
se non dai l'istruzione mai e poi mai php si sogna di salvare i dati

l'ho inserita mysql_query($query); subito dopo l'istruzione var_dumb, però nonostante questa non carica nel database.
La query è giusta, se vuoi provare tu, ti invio la tabella db, se non ce l'hai ancora dallo scorso thread.
 
ciao
ho messo una parentesi errata
mysql_query($query) or die)mysql_error()); // cioè questa ******
correggi in
mysql_query($query) or die(mysql_error()); // cioè questa ******
 
ciao
ho messo una parentesi errata
mysql_query($query) or die)mysql_error()); // cioè questa ******
correggi in
mysql_query($query) or die(mysql_error()); // cioè questa ******

PHP:
$sql = new mysqli("localhost", "root", "", "my_luca");	
		$query="INSERT INTO immobile(nickname, denominazione, indirizzo, localita, descrizione, estensioneTerreno, estensioneSupAbit, tipo, status, referente, nCamere, nBagni, prezzo, speseCondominiali, giardino, immagine,img2,img3,img4, data, ins_mail, boxauto) 
				VALUES('$nome','$denominazione','','','$descrizione','0','0','ciao','$stato','','0','0','$prezzo','0','','$salva_file[0]','$salva_file[1],'$salva_file[2],'$salva_file[3]','$data','$email','')";
				var_dump($query);//e qui verifichi che venga scritta come dovrebbe
				mysql_query($query) or die(mysql_error());	
				$err=$mess_err.$messaggio."i tuoi dati sono stati inseriti<br />";

risultato:
tutto giusto
string(428) "INSERT INTO immobile(nickname, denominazione, indirizzo, localita, descrizione, estensioneTerreno, estensioneSupAbit, tipo, status, referente, nCamere, nBagni, prezzo, speseCondominiali, giardino, immagine,img2,img3,img4, data, ins_mail, boxauto) VALUES('llllllllllll','llllllllll','','','llllllllllll','0','0','ciao','vendita','','0','0','999','0','','images_immobili/lucatropinaimmgol.jpg',',','','10102010','m@m.it','')" No database selected

?.? (i valori immessi son delle prove)
 
ciao
riposta il codice con cui ti connetti
PHP:
if(isset($_POST['submit'])){  
  // ..........controllli di testo 
    if($err==""){  
        //*********************C A R I C A M E N T O    I M M A G I N I **************************** 
        // limite peso in byte  
        $peso_file = 1024 * 1024; 
        // inizializziamo il messaggio 
        $messaggio = "Carica una o piu immagini, fino ad un massimo di 4 consentite:"; 
        // estensioni ammesse 
        $estensioni = array("jpg", "png", "bmp", "gif"); 
        // percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto 
        $dir = "../images_immobili"; 
        $salva_file=array("","","","");//creo l'array per i nomi dei file in modo che sia sempre di 4 posti anche se vengono inserite meno di 4 immagini  
         
        // azzeriamo il messaggio 
            $mess_err = ""; 
        // recuperiamo e uniamo le informazionei sulle immagini 
            $infoimages = array_combine($_FILES["image"]['name'], $_FILES["image"]['tmp_name']); 
        // cicliamo le immagini 
                foreach ($infoimages as $k => $v) { 
                // nome del file 
                $nomefile = strtolower($k); 
                // controlliamo il peso immagine 
                    if (filesize($v) < $peso_file) { 
                    // recuperiamo l'estensione 
                    $estensionefile = pathinfo($nomefile, PATHINFO_EXTENSION); 
                    // controlliamo il tipo immagine 
                        if (in_array(strtolower($estensionefile), $estensioni)) { 
                        // controllo caricamento 
                            if (is_uploaded_file($v)) { 
                            // spostiamo il file nella cartella immagini 
                                if (!move_uploaded_file($v, "$dir/$nomefile")) { 
                                $mess_err .= "<br/>Impossibile spostare il file $k"; 
                                } else { 
                                    $mess_err.= "<br/>Immagine $k caricata con successo<br />";  
                                    $cnt=0; 
                                    $salva_file[$cnt]="images_immobili/$nomefile";//$cnt va da 0 al numero di immagini caricate -1  
                                    } 
                            } else { 
                                $mess_err .= "<br/>Errore nell'upload del file $k."; 
                                } 
                        } else { 
                            $mess_err .= "<br/>Tipo immagine non consentito : $k"; 
                            } 
                    } else { 
                        $mess_err .= "<br/>Immagine $k non caricata : limite peso superato"; 
                        } 
                }  
         
    }  
       echo "tutto giusto<br>";  
        //..... fai quello che devi fare con i dati e metti l'avviso su $err  
        $err="i tuoi dati sono stati inseriti<br />"; 
     
        $sql = new mysqli("localhost", "root", "", "my_luca");     
        $query="NSERT INTO immobile(nickname, denominazione, indirizzo, localita, descrizione, estensioneTerreno, estensioneSupAbit, tipo, status, referente, nCamere, nBagni, prezzo, speseCondominiali, giardino, immagine,img2,img3,img4, data, ins_mail, boxauto) 
				VALUES('$nome','$denominazione','','','$descrizione','0','0','ciao','$stato','','0','0','$prezzo','0','','$salva_file[0]','$salva_file[1],'$salva_file[2],'$salva_file[3]','$data','$email','')";
                var_dump($query);//e qui verifichi che venga scritta come dovrebbe 
                mysql_query($query) or die(mysql_error());
                $err=$mess_err.$messaggio."i tuoi dati sono stati inseriti<br />"; 
              
        //mostri il messaggio  
        echo $err;  
    //e torni al form pulito dopo 303 secondi (content ='303;...)  
    echo "<meta http-equiv='Refresh' content='303; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";  
}
 

Discussioni simili