- Home
- Categorie
- Coding e Sistemistica
- Coding
- Aiuto..non capisco dov'è l'errore...
- 
							
							
							
							
							
Aiuto..non capisco dov'è l'errore...Ciao, chiedo a voi, alti phpari  ... riguardo al mio problema. ... riguardo al mio problema.Il problema è che non riesco a capire dove sia l'errore in questo mio script che non fà altro che prendere dei dati da un form e aggiornali in un db mysql... 
 è da un giorno che gli sto dietro..Aiutatemi!!Il codice è il seguente.. [php]<?php 
 include('db_conf.php');$username = $_POST['username']; 
 $d1 = $_POST['d1'];
 $d2 = $_POST['d2'];
 $d3 = $_POST['d3'];
 $nome = $_POST['nome'];
 $sesso = $_POST['sesso'];
 $città = $_POST['città'];
 $file = $_FILES['avatar1']['name'];
 $sito = $_POST['sito'];
 $occupazione = $_POST['occupazione'];$db = mysql_connect($dbhost, $dbuser, $dbpassword); 
 mysql_select_db($dbname, $db);$id1 = $_POST['id_ut']; 
 if ($_POST['username'] == '')
 {
 header("location: index.php?pag=profilo&up=1");
 }
 if ($_POST['nome'] == '')
 {
 header("location: index.php?pag=profilo&up=2");
 }
 if ($_POST['email'] == '')
 {
 header("location: index.php?pag=profilo&up=3");
 }if ($_POST['old_pass'] != '' && $_POST['new_pass'] != '') 
 {
 $sql1 = mysql_query("SELECT * FROM utenti WHERE id = '.$id1.'");
 $pass_recup = mysql_fetch_array($sql1);
 $pass1 = $sql1[password];
 $lol1 = $_POST['old_pass'];
 $lol = md5($lol1);
 if ($lol == $pass1)
 {
 $new_pass1 = $_POST['new_pass'];
 $new_pass11 = md5($new_pass1);
 $update_pass = mysql_query("UPDATE utenti SET password = '$new_pass11' WHERE id = '.$id1.'");
 if (!$update_pass)
 header('location: index.php?pag=profilo&up=sopra1');
 else
 header('location: index.php?pag=profilo&up=sotto1');
 }
 }else{
 $dimensione_massima=102400; //dimensione massima consentita per file in byte -> 1024 byte = 1 Kb
 $dimensione_massima_Kb=$dimensione_massima/1024;
 $cartella_upload="avatar/"; //cartella in cui eseguire l'upload (controllare permessi scrittura)
 // percorso cartella relativo $cartella_upload="../public/";
 $filtrare=1; //filtrare x estensioni ammesse? 1=si 0=no
 $array_estensioni_ammesse=array('.jpg','.jpeg','.gif','.png','.bmp'); //estensioni ammesseif(!isset($_FILES['avatar1']) || $_FILES['avatar1']==0){ 
 echo "Nessun file selezionato per l'upload";
 }elseif($_FILES['avatar1']>$dimensione_massima){
 echo "Il file selezionato per l'upload supera dimensione massima di $dimensione_massima_Kb Kb";
 }else{
 $nome_file=$_FILES['avatar1']['name'];
 $errore="";
 if($filtrare==1){
 $estensione = strtolower(substr($nome_file, strrpos($nome_file, "."), strlen($nome_file)-strrpos($nome_file, ".")));
 if(!in_array($estensione,$array_estensioni_ammesse)){
 $errore.="Upload file non ammesso. Estensioni ammesse: ".implode(", ",$array_estensioni_ammesse)."<br/>";
 }
 }
 if(!file_exists($cartella_upload)){
 $errore.="La cartella di destinazione non esiste</br>";
 }if($errore==""){ if(move_uploaded_file($_FILES['avatar1']['tmp_name'], $cartella_upload.$_FILES['avatar1']['name'])){ chmod($cartella_upload.$_FILES['avatar1']['name'],0777); //permessi per poterci sovrascrivere/scaricare echo "Operazione eseguita con successo. Upload riuscito."; }else{ echo "Impossibile effettuare l'upload del file"; } }else{ echo $errore; }} 
 $query_up = mysql_query("UPDATE utenti SET username = '$username', nome = '$nome', città = '$città', sito = '$sito', occupazione = '$occupazione', sesso = '$sesso', d1 = '$d1', d2 = '$d2', d3 = '$d3' WHERE id = .$id1. ");
 if (!$query_up)
 header('location: index.php?pag=profilo&up=4');
 else
 header('location: index.php?pag=profilo&up=66');
 }
 ?>[/php]Spero possiate trovare l'inghippo perchè io non lo trovo....EDIT: Mi sono dimenticato di descrivere l'errore. In poche parole lo script mi da errore quando tenta di aggiornare il db, perchè mi rimanda alla pagina profilo&up=4 Simone 
 
- 
							
							
							
							
							
Ciao, 
 per fare un pò di sano debug e vedere che errore genera la queri, sostituisci a:
 [php]
 header('location: index.php?pag=profilo&up=4');
 [/php]
 il codice:
 [php]
 {
 echo mysql_error();
 exit();
 }
 [/php]Ad una veloce occhiata ciò che mi lascia perplesso è il nome "città" scritto con l'accento (solitamente si preferisce evitare l'uso di caratteri accentati per i nomi di variabili e campi delle tabelle). 
 E' poi sicuramente errata la condizione WHERE id=.$id.
 con il punto ripetuto prima e dopo la variabili. Forse volevi scrivere
 [php]
 ".... WHERE id=".$id." ";
 [/php]Non ho controllato il resto del codice. Alessandro 
 
- 
							
							
							
							
							
La variabile id è stata scritta in tutti i modi, anche come hai scritto tu ma niente.. Proverò ad inserire quella funzione che mi hai descritto... Grazie 
 
- 
							
							
							
							
							
L'errore che mi dà è questo: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'username = 'SimyXT', nome = 'Simone', residenza = 'Fossacesia',Non capisco perchè..tutti i campi sono apposto P.S: L'errore di prima era dovuto ad un nome della tabella sbagliato..xDD EDIT: Ho risolto anche questo, mancava una virgola...cacchio mi sto stufando con questi errorini banali.. 
 
- 
							
							
							
							
							
Ho un'altro problemino... 
 Vorrei incrementare una variabile ogni volta che un file viene scaricato (è un contatore di download)
 Prendo il nome del file e della categoria dalle query string.
 Se il file esiste apre il db, prendo il valore (intero) di una colonna e la metto in una variabile così:[PHP]$down = $fetch[down];[/PHP] Poi la incremento così: [PHP]$down = $down + 1;[/PHP] e la aggiorna con UPDATE.. Il problema è che quando vado a scaricare il file la prima volta mi incrementa la variabile (che prima era NULL). Quando vado a scaricarlo più volte il valore rimane sempre ad uno.. Perchè?? Simone 
 
- 
							
							
							
							
							
Ciao, 
 questa riga di codice, scritta così, è errata:
 [php]
 $down = $fetch[down];
 [/php]
 mancano gli apici:
 [php]
 $down = $fetch['down'];
 [/php]Alessandro 
 
- 
							
							
							
							
							
L'errore non è quello..apparte che io gli apici per utilizzare le tabelle nel mysql_fetch_array non le ho mai usate, continua ancora a non incrementare la variabile... 
 
- 
							
							
							
							
							
Ciao, 
 puoi postare il resto del codice?
 
- 
							
							
							
							
							
Ciao, ecco il codice... [PHP]<?php 
 include('db_conf.php');
 session_start();
 if ($_SESSION['username'] == '')
 {
 header('location: index.php?pag=downloads&logged=no');
 }else{$file=$_GET['file']; 
 $cat = $_GET['cat'];
 $percorso="download/";
 $percorso_file=$percorso.$file;
 $dimensione_file=filesize($percorso_file);$db = mysql_connect($dbhost, $dbuser, $dbpassword); 
 mysql_select_db($dbname, $db);$sel_down = "SELECT * FROM $cat WHERE file = $file"; 
 $sukalo = mysql_query($sel_down);
 $id_autore = mysql_fetch_array($sukalo);
 $down1 = $id_autore['down'];
 $down1 = $down1 + 1;
 $up_down = mysql_query("UPDATE $cat SET down = '$down1' WHERE file = '$file'");
 if(!$up_down)
 {
 header('location: index.php?pag=view_downloads');
 }else{
 header("Content-Type: application; name=".$file);
 header("Content-Transfer-Encoding: binary");
 header("Content-Length: ".$dimensione_file);
 header("Content-Disposition: inline; filename=".$file);
 header("Expires: 0");
 header("Cache-Control: no-cache, must-revalidate");
 header("Cache-Control: private");
 header("Pragma: public");
 readfile($percorso_file);
 }
 }
 ?>[/PHP]
 
- 
							
							
							
							
							
Mancano gli apici nella select: 
 [php]
 $sel_down = "SELECT * FROM $cat WHERE file = '$file' ";
 [/php]Poi... visto che i dati recuperati da quella query li usi solo per aggiornare il contatore, potresti evitarla del tutto aggiornando direttamente con la query di update: 
 [php]
 $up_down = mysql_query("UPDATE $cat SET down = down+1 WHERE file = '$file' ");
 [/php]Alessandro 
 
- 
							
							
							
							
							
Si ora funziona...gli apici non centrano perchè ho provato a scriverli in tutti i modi ma nulla. Grazie per avermi dato la dritta dell'update.. Simone