Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    13

    esito connessione a database

    Salve a tutti sto provando a scrivere una procedura di verifica della connessione ad un database mysql.
    la procedura prevede un form dove inserire i dati(indirizzo db, pass, user, nome db) che manda una richiesta in ajax ad una pagina php così strutturata:
    codice:
    $ajax_request = $_REQUEST['ajax_request'];
    	if(isset($ajax_request) && $ajax_request)
    	{
    		$db_host = $_REQUEST['db_host'];
    		$db_name = $_REQUEST['db_name'];
    		$db_user = $_REQUEST['db_user'];
    		$db_pass = $_REQUEST['db_pass'];
    
    		$verify_db=verify_db($db_host, $db_name, $db_user, $db_pass);
    		
    		if ($verify_db==TRUE){
    			mysql_close();
    			$error="none";
    			$msg="Configurazione del database avvenuta con successo";
    			}
    		else {
    			switch ($db_result) {
    				case '1':
    				$error="db_err";
    				$msg="Errore, impossibile connettersi al database.
    Verificare i dati inseriti.";
    				break;
    				case '2':
    				$error="db_err";
    				$msg="Errore, impossibile selezionare il database.
    Verificare i dati inseriti.";
    				break;
    				}
    		}
    		$result = array('msg' => $msg, 'error' => $error);
    		$result_json = json_encode($result);
    		echo $result_json;
    	}
    la funzione verify_db:
    codice:
    function verify_db($db_host, $db_name, $db_user, $db_pass)
    {
    	$db_connect = mysql_connect($db_host, $db_user, $db_pass);
    	$db_select = mysql_select_db($db_name);
    	
    	if (!$db_connect) {$db_result=1; return $db_result;}
    	else {
    			if (!$db_select) {$db_result=2; return $db_result;}
    			else {return TRUE;}
    		}	
    }
    ed infine il codice della richiesta:
    codice:
    $(document).ready(function() {
    
    	$("#db_setup_button").click(function() {
    
    		var action = $("#db_setup_form").attr('action');
    		var form_data = {
    			db_host: $("#db_host").val(),
    			db_name: $("#db_name").val(),
    			db_user: $("#db_user").val(),
    			db_pass: $("#db_pass").val(),
    			ajax_request: 1
    		};
    
    		$.ajax({
    			type: "POST",
    			url: action,
    			data: form_data,
    			dataType: "json",
    			success: function(response)
    			{
    				if(response.error == 'none')
    					$("#db_setup_form").fadeToggle('fast', function() {
    						$("#esito_installazione").html("<p class='success'>"+response.msg+"</p>");
    					});
    				else 
    				{$("#esito_installazione").html("<p class='error'>"+response.msg+"</p>");}
    			}
    		});
    
    		return false;
    	});
    
    });
    il problema è che anche non inserendo alcun valore o valori errati nel form l'esito della connessione ritorna TRUE...

    qualche idea?

    grazie

  2. #2
    Codice PHP:
    ...
    if (!
    $db_connect) {$db_result=1; return $db_result;}
    ... 
    Se la connessione non va a buon fine la funzione verify_db() restituisce 1 che equivale a true!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    13
    in seguito al suggerimento ho cambiato il codice della funzione in
    codice:
    function verify_db($db_host, $db_name, $db_user, $db_pass)
    {
    	$db_connect = mysql_connect($db_host, $db_user, $db_pass);
    	$db_select = mysql_select_db($db_name);
    	
    	if (!$db_connect) {$db_result=array('result'=>FALSE, 'error'=>1); return $db_result;}
    	else {
    			if (!$db_select) {$db_result=array('result'=>FALSE, 'error'=>2); return $db_result;}
    			else {$db_result=array('result'=>TRUE, 'error'=>0); return $db_result;}
    		}	
    }
    e quello della pagina php in
    codice:
    $ajax_request = $_REQUEST['ajax_request'];
    	if(isset($ajax_request) && $ajax_request)
    	{
    		$db_host = $_REQUEST['db_host'];
    		$db_name = $_REQUEST['db_name'];
    		$db_user = $_REQUEST['db_user'];
    		$db_pass = $_REQUEST['db_pass'];
    
    		$verify_db=verify_db($db_host, $db_name, $db_user, $db_pass);
    		
    		if ($db_result['result']==TRUE){
    			mysql_close();
    			$error="none";
    			$msg="Configurazione del database avvenuta con successo";
    			}
    		else {
    			switch ($db_result['error']) {
    				case '1':
    				$error="db_err";
    				$msg="Errore, impossibile connettersi al database.
    Verificare i dati inseriti.";
    				break;
    				case '2':
    				$error="db_err";
    				$msg="Errore, impossibile selezionare il database.
    Verificare i dati inseriti.";
    				break;
    				}
    		}
    		$result = array('msg' => $msg, 'error' => $error);
    		$result_json = json_encode($result);
    		echo $result_json;
    	}
    adesso qualunque cosa si inserisca nel form dà come risposta null, come se non desse alcun valore a $msg e $error e quindi non entrasse nè nell'if nè nell'else.

  4. #4
    Codice PHP:
    ...
    if (
    $db_result['result']==TRUE){
    ... 
    Cos'è $db_result? Dove lo valorizzi?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    13
    ahhhh risolto, il $db_result mi tornava dalla funzione ma non avevo notato che chiamavo la funzione con $verify_db e non $db_result.
    Comunque il problema era che se il database dava errore(se, per esempio, non riusciva a connettersi) quest'ultimo veniva trasmesso come risposta insieme all'effettiva risposta in json.
    Lo script in ajax si aspettava solo la risposta in json e non l'errore del db quindi non lo interpretava.
    Ho messo @ davanti al tentativo di connessione al db nella funzione -@mysql_connect($host, $user, $pass)- e adesso in risposta alla richiesta in ajax dà soltanto l'array in json e non più l'errore mysql.
    grazie del supporto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.