Sintassi corretta php

alberigo

Nuovo Utente
24 Ago 2008
8
0
0
Ciao a tutti.
Sto per mio diletto tentando di imparare a usare php dopo diversi anni a usare asp. Ho creato una pagina (php appunto) dove, dopo le funzioni di autenticazione login e di logout (funzionanti), ho aggiunto la seguenti righe:

PHP:
<?php
    if (isset($_POST["txtId"]) && !empty($_POST["txtId"])) { 
        $conteggio = 0;
        mysql_select_db($database_db_gestionalepiu, $db_gestionalepiu);
    
        $query_verifica_accesso = "SELECT COUNT(Identificativo) FROM tblAccessi WHERE Identificativo =".$_POST['txtId'];
        $verifica_accesso = mysql_query($query_verifica_accesso);
        $row = mysql_fetch_assoc($verifica_accesso);
        $conteggio = $row['count'];
    } 
?>

Questa pagina serve per registrarsi e la mia intenzione è quella di verificare se l'utente è già esistente nel db.
L'intenzione mia è quella di ottenere la variabile $conteggio che mi indica, se maggiore di 0, che l'utente è già presente.
Tale variabile verrà poi passata a una funzione javascript (lanciata dal keyup sulla casella di testo dell'utente) che mostrerà l'alert relativo.

Ovviamente il tutto non funziona (in phpmyadmin il select count funziona) e volevo sapere se c'è un problema di sintassi nella parte di codice di cui sopra, oppure se è dovuto a un errore di "intenzione", nel senso che non si può fare. Ho visto su internet che con jQuery si può risolvere il problema, ma non lo conosco.

Grazie comunque per disponibilità e per ogni suggerimento vogliate darmi.
 
Ultima modifica di un moderatore:
Ciao, il problema riguarda la sintassi del codice SQL, dovresti dare un alias al COUNT
Codice:
SELECT COUNT(Identificativo) as conta
poi lo recuperi in php
PHP:
$conteggio = $row['conta'];
 
ciao
oppure puoi usare la funzione mysql_num_rows
PHP:
<?php
    if (isset($_POST["txtId"]) && !empty($_POST["txtId"])) { 
        $conteggio = 0;
        mysql_select_db($database_db_gestionalepiu, $db_gestionalepiu);
        $query_verifica_accesso = "SELECT * FROM tblAccessi WHERE Identificativo =".$_POST['txtId'];
        $verifica_accesso = mysql_query($query_verifica_accesso);
        $conteggio = mysql_num_rows($verifica_accesso);
    } 
?>
comunque abbandona le vecchie mysql (deprecate) e passa alle mysqli
 
Ho modificato il mio codice precedentemente postato con il seguente:

PHP:
<?php
// connessione al db
require_once('../Connections/db_gestionalepiu.php');

if(!isset_username($_GET["utente"])){
	echo $conteggio;
}
else{
	echo $conteggio;
}
	
// funzione per verificare l'esistenza dell'username

function isset_username($username){
	$username = trim($username);
		
	$query = "SELECT COUNT(*) AS num FROM tblAccessi WHERE Identificativo='" .$username. "'";
	$result = mysql_query($query) or die(mysql_error());
	$row = mysql_fetch_array($result);
	
	if($row['num']>=1){
		$conteggio = $row['num'];
		return TRUE;
	}
	else{
		$conteggio = 0;
		return FALSE;
	}
} 
?>

ma non mi riesce di visualizzare il valore della variabile $conteggio. Ripeto che il select eseguito in phpmyadmin funziona correttamente.
 
Ultima modifica di un moderatore:
ciao
per forza, fai il return TRUE o FALSE ed è quello che la funzione ritorna
attento le variabile interne alle funzioni NON sono conosciute all'esterno, salvo dargli il global però sconsigliabile
ti conviene forse dargfli come return il valore di $conteggio e poi operare di conseguenza

p.s.
per php usa l'apposito bccode
 
Scusa la mia ignoranza, ma cosa intendi con bccode? Sto imparando php per mio conto per cui qualche termine sfugge alla mia comprensione.

Tornando al mio script, ho fatto come mi hai detto tu ma non visualizza nulla.
Da quello che mi dici, credo il motivo per cui non visualizzo nulla sia più dovuto al fatto della variabili non conosciute all'esterno della funzione che l'errore nel return (infatti anche passando...

PHP:
$conteggio = $row['num'];
return $

non visualizza nulla. A meno che il tuo "...operare di conseguenza" intende qualcosa che la mia minima conoscenza di php non mi fa comprendere.
 
Ultima modifica di un moderatore:
ciao
ecco
PHP:
<?php
// connessione al db
require_once('../Connections/db_gestionalepiu.php');
if(isset_username($_GET["utente"]) !=0){
    echo isset_username($_GET["utente"]);//ridondante, è comunque 1
}
else{
    echo 0;
} 
// funzione per verificare l'esistenza dell'username
function isset_username($username){
    $username = trim($username);
    $query = "SELECT COUNT(*) AS num FROM tblAccessi WHERE Identificativo='$username'";
    $result = mysql_query($query) or die(mysql_error());
    $row = mysql_fetch_array($result);
    return $row['num'];//$row['num'] è 1 se trovato, 0 se non trovato
} 
?>
poi per bccode si intende (es) quello che stai usando
Codice:
, nella seconda riga di formattazione del post ultimo pulsante ti da [PHP]
 

Discussioni simili