bool(false)???

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
Salve a tutti,
ho scritto questo script php:
PHP:
<?php 
if(!isset($_SESSION)){session_start();}   
if(!isset($_SESSION['utente'])){   
    header("location: login2.php?azione=login");  
    exit();    
}
require_once "connessione.php"; 
if (isset($_GET['user']) && isset($_GET['insert'])) { 
    $query2 = "INSERT INTO amici (id, username_proprietario, username_amico)   
                 VALUES ('" . $risultato7['id'] . "', '" . $risultato7['username_proprietario'] . "', '".$risultato['username_amico']."')";
    $result = mysql_query($query) or die(mysql_error()); 
    if (mysql_num_rows($result) == 0) { 
        $q = "DELETE FROM amici_temp WHERE id ='".$risultato7['id']."'"; 
        $query4 = mysql_query($q); 
        $inviautente = mysql_query($query4) or die(mysql_error()); 
        header("Refresh: 1; URL= bacheca_visualizza6.php"); 
    } 
} 
$query5 = "SELECT * FROM amici_temp   
                   WHERE username_amico = '" . $_SESSION['utente'] . "'";
$risultato7= mysql_fetch_array($result7);
$query = "SELECT * FROM amici_temp   
                   WHERE username_amico = '" . $_SESSION['utente'] . "'";
$result2 = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($result2) == 0) { 
     echo "";
} else { 
echo "<a href=\"?insert&user=" . $risultato7['id'] . "\" onclick=\"return(confirm('Sei sicuro di voler accettare la richiesta di amicizia?'))\">Accetta</a>";
} 
?>

Però, quando esegue la query
PHP:
$query5 = "SELECT * FROM amici_temp   
                   WHERE username_amico = '" . $_SESSION['utente'] . "'";
$risultato7= mysql_fetch_array($result7);

non mi estrae i dati e, se eseguo un var_dump($risultato7); mi restituisce bool(false), mi aiutereste a risolvere?
Grazie a tutti in anticipo per il vostro aiuto,
hackersatifal.
 
ciao
metti un altro var dump
PHP:
<?php
//....
$query5 = "SELECT * FROM amici_temp   
                   WHERE username_amico = '" . $_SESSION['utente'] . "'";
var_dump($query5);
$risultato7= mysql_fetch_array($result7);
//var_dump($risultato7);
//....
?>
se (ad es.)
$_SESSION['utente']

ha valore "pinco"
il var_dump dovrebbe restituirti
string(55) "SELECT * FROM amici_temp WHERE username_amico = 'pinco'"
ma (sempre es) ti restituisce
string(43) "SELECT * FROM amici_temp WHERE username_amico = ''"
è evidente che c'è un errore nella sessione e quindi la query non va a buon fine, da cui il bool (false).

edit
mi sono accorto adesso: non vedo l'istruzione
$result7=mysql_query($query5);
 
Ultima modifica:
ciao
metti un altro var dump
PHP:
<?php
//....
$query5 = "SELECT * FROM amici_temp   
                   WHERE username_amico = '" . $_SESSION['utente'] . "'";
var_dump($query5);
$risultato7= mysql_fetch_array($result7);
//var_dump($risultato7);
//....
?>
se (ad es.)
$_SESSION['utente']

ha valore "pinco"
il var_dump dovrebbe restituirti

ma (sempre es) ti restituisce

è evidente che c'è un errore nella sessione e quindi la query non va a buon fine, da cui il bool (false).

edit
mi sono accorto adesso: non vedo l'istruzione
$result7=mysql_query($query5);

Ho inserito quello che mancava, ma mi restituisce sempre un bool(false), ho eseguito il var_dump della query e mi restituisce una query di questo tipo
PHP:
"SELECT * FROM amici_temp WHERE username_amico = 'ciao'"
Come posso risolvere?
Grazie ancora per il tuo aiuto.
 
ciao
stavo guardando questa parte di script
PHP:
<?php
//....
    } 
} 
$query5 = "SELECT * FROM amici_temp   
                   WHERE username_amico = '" . $_SESSION['utente'] . "'";
$risultato7= mysql_fetch_array($result7);
$query = "SELECT * FROM amici_temp   
                   WHERE username_amico = '" . $_SESSION['utente'] . "'";
$result2 = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($result2) == 0) { 
     echo "";
} else { 
echo "<a href=\"?insert&user=" . $risultato7['id'] . "\" onclick=\"return(confirm('Sei sicuro di voler accettare la richiesta di amicizia?'))\">Accetta</a>";
} 
?>
c'è qualcosa che non mi torna
scrivi la $query5 che è uguale alla $query e il mysql_fetch_array messo un po' a casaccio
prova così (al massimo non funzia ancora)
PHP:
<?php
//....
    } 
} 
$query = "SELECT * FROM amici_temp  WHERE username_amico = '" . $_SESSION['utente'] . "'";
$result2 = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($result2) == 0) { 
     echo "";
} else {
	$riga7=mysql_fetch_array($result2);
	echo "<a href=\"?insert&user=" . $riga7['id'] . "\" onclick=\"return(confirm('Sei sicuro di voler accettare la richiesta di amicizia?'))\">Accetta</a>";
} 
?>
poi modificherei la riga
PHP:
echo "<a href=\"?insert='1'&user=" . $riga7['id'] . "\" onclick=\"return(confirm('Sei sicuro di voler accettare la richiesta di amicizia?'))\">Accetta</a>";
cioè darei un valore anche a insert perche messo così come l'hai messo assume il valore NULL e quindi l'isset potrebbe risultare false
prova (eventualmente metti i var_dump) e sappimi dire
 
Ho aggiustato il codice in questo modo e, anche se mi esegue le query, ma mi restituisce il seguente errore '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 '1' at line 1'.
Ecco come ho modificato il codice:
PHP:
<?php  
if(!isset($_SESSION)){session_start();}    
if(!isset($_SESSION['utente'])){    
    header("location: login2.php?azione=login");   
    exit();     
} 
require_once "connessione.php";
if (isset($_GET['user']) && isset($_GET['insert'])) { 
$query = "SELECT * FROM amici_temp    
                   WHERE username_amico = '" . $_SESSION['utente'] . "'"; 
$result7 = mysql_query($query);
$risultato7= mysql_fetch_array($result7);    
$query2 = "INSERT INTO amici (id, username_proprietario, username_amico)    
                 VALUES ('" . $risultato7['id'] . "', '" . $risultato7['username_proprietario'] . "', '".$risultato7['username_amico']."')"; 
    $result = mysql_query($query2) or die(mysql_error());  
    if (mysql_num_rows($result) == 0) {  
        $q = "DELETE FROM amici_temp WHERE id ='".$risultato7['id']."'"; 
        $query4 = mysql_query($q);  
        $inviautente = mysql_query($query4) or die(mysql_error());  
        header("Refresh: 1; URL= bacheca_visualizza6.php");  
    }  
}  
$query = "SELECT * FROM amici_temp    
                   WHERE username_amico = '" . $_SESSION['utente'] . "'"; 
$result7 = mysql_query($query);
$risultato7= mysql_fetch_array($result7);
$username_p = $risultato7['username_proprietario'];
$username_proprietario = ucfirst($username_p);
if (mysql_num_rows($result7) == 0) {  
     echo ""; 
} else {  
echo "$username_proprietario <a href=\"?insert&user=" . $risultato7['id'] . "\" onclick=\"return(confirm('Sei sicuro di voler accettare la richiesta di amicizia?'))\">Accetta</a>"; 
}  
?>
Grazie ancora per il tuo aiuto borgo italia. :)
 
Lo script contiene diversi errori, sia logici che sintattici. Non sono certo che la nuova versione funzioni:
PHP:
<?php
function query($sql)
{
    $query = mysql_query($sql);

    if (!$query) {
        $error = <<<EOF
<p>
    Impossibile eseguire la seguente query SQL:
    <pre>{$sql}</pre>
</p>

<p>
    Il server ha restituito il seguente errore:
    <pre>{$error}</pre>
</p>
EOF;

        exit($error);
    }

    return $query;
}

session_start();

if (!isset($_SESSION['utente'])) {
    header('Location: login2.php?azione=login');
    exit();
}

require_once 'connessione.php';

$query = query("SELECT * FROM amici_temp WHERE username_amico = '{$_SESSION['utente']}'");
$row = mysql_fetch_assoc($query);

$sql2 = "INSERT INTO amici (id, username_proprietario, username_amico) VALUES ";
$sql2 .= "('{$row['id']}', {$row['username_proprietario']}, {$row['username_amico']}");
$query2 = query($sql2);

if (mysql_num_rows($query2) == 0) {
    $query3 = query("DELETE FROM amici_temp WHERE id = '{$row['id']}'");
    
    header('Refresh: 1; URL=bacheca_visualizza6.php');
    exit();
}

$query4 = query("SELECT * FROM amici_temp WHERE username_amico = '{$_SESSION['utente']}");
$row4 = mysql_fetch_assoc($query4);

if (mysql_num_rows($row4) > 0) {
    $username = ucfirst($row4['username_proprietario']);
    
    echo $username;
    echo " <a href=\"?insert&user={$row['id']}\" onclick=\"return confirm('Sei ";
    echo "sicuro di voler accettare la richiesta di amicizia?');\">Accetta</a>";
}
?>
Dovresti seriamente leggere un buon libro su PHP e uno sulla programmazione in generale.
 
Ultima modifica:
ciao
Ho inserito un error_reporting(E_ALL);
gli errori NON vanno eventualmente nascosti, ma RISOLTI.
ho un piccolo dubbio, posta come hai fatto le tabelle (es)
id int(12) not null autoincrement primarykey
amico varchar(50) not null
ecc...
 
Ecco la tabella amici:

Campo Tipo Null Predefinito
id int(11) Sì NULL
username_amico varchar(60) Sì NULL
username_proprietario varchar(60) Sì NULL
stato varchar(2) Sì NULL
stato_amico varchar(2) Sì NULL
data_login timestamp Sì CURRENT_TIMESTAMP

Ecco la tabella amici_temp:


Campo Tipo Null Predefinito
id int(11) Sì NULL
username_proprietario varchar(60) Sì NULL
username_amico varchar(60) Sì NULL
 
Ciao Alessandro,
ho provato il codice che mi avevi postato, aggiustando qualche piccolo errore di sintassi (sicuramente errori di battitura e distrazione) e mi restituisce questo "Impossibile eseguire la seguente query SQL:

INSERT INTO amici (id, username_proprietario, username_amico) VALUES ('1', 'pinco', 'pallo')
Il server ha restituito il seguente errore:".
 
ciao
penso perchè alex non si è accorto e quindi non ha messo l'if che racchiude l'insert
PHP:
//....
if (isset($_GET['user']) && isset($_GET['insert'])) { 
  //tutta la parte dell'insert
}
//....
comunque come ti avevo detto ti consiglio di modificare la querystringa per il get user, poi secondo me devi modificare le due tabelle

tabella amici:
id int(11) NOT NULL autoincrement primarykey
username_amico varchar(60) Sì NULL
username_proprietario varchar(60) Sì NULL
stato varchar(2) Sì NULL
stato_amico varchar(2) Sì NULL
data_login timestamp Sì CURRENT_TIMESTAMP

amici_temp:
id int(11) NOT NULL autoincrement primarykey
username_proprietario varchar(60) Sì NULL
username_amico varchar(60) Sì NULL
 
ciao
penso perchè alex non si è accorto e quindi non ha messo l'if che racchiude l'insert
PHP:
//....
if (isset($_GET['user']) && isset($_GET['insert'])) { 
  //tutta la parte dell'insert
}
//....
comunque come ti avevo detto ti consiglio di modificare la querystringa per il get user, poi secondo me devi modificare le due tabelle

tabella amici:


amici_temp:

Ho provato con il codice di alessandro modificato come dici tu e non mi trova più quello che è presente nella tabella amici_temp. Ecco come ho modificato il codice:
PHP:
<?php
function query($sql)
{
    $query = mysql_query($sql);
$error = mysql_error();  


    if (!$query) {
        $error = <<<EOF
<p>
    Impossibile eseguire la seguente query SQL:
    <pre>{$sql}</pre>
</p>

<p>
    Il server ha restituito il seguente errore:
    <pre>{$error}</pre>
</p>
EOF;

        exit($error);
    }

    return $query;
}

session_start();

if (!isset($_SESSION['utente'])) {
    header('Location: login2.php?azione=login');
    exit();
}

require_once 'connessione.php';
if (isset($_GET['user']) && isset($_GET['insert'])) {  
$query = query("SELECT * FROM amici_temp WHERE username_amico = '{$_SESSION['utente']}'");
$row = mysql_fetch_assoc($query);

$sql2 = "INSERT INTO amici (id, username_proprietario, username_amico) VALUES ";
$sql2 .= "('{$row['id']}', '{$row['username_proprietario']}', '{$row['username_amico']}')";
$query2 = query($sql2);

if (mysql_num_rows($query2) == 0) {
    $query3 = query("DELETE FROM amici_temp WHERE id = '{$row['id']}'");
    
    header('Location: bacheca_visualizza6.php');
    exit();
}
}
$query4 = query("SELECT * FROM amici_temp WHERE username_amico = '{$_SESSION['utente']}'");
$row4 = mysql_fetch_assoc($query4);

if (mysql_num_rows($row4) > 0) {
    $username = ucfirst($row4['username_proprietario']);
    
    echo $username;
    echo " <a href=\"?insert&user={$row['id']}\" onclick=\"return confirm('Sei ";
    echo "sicuro di voler accettare la richiesta di amicizia?');\">Accetta</a>";
}
?>

Grazie ancora per il tuo tempo che mi stai concedendo.