- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aiuto..non capisco dov'è l'errore...
-
Aiuto..non capisco dov'è l'errore...
Ciao, chiedo a voi, alti phpari ... 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