Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    Ricerca multipla e modifica record database

    Buongiorno a tutti,
    vi sottopongo il seguente problema: le due pagine che seguiranno ricarca.php e ricerca_exec.php contengono la prima un form in cui inserisco i dettagli della query che voglio costruire e mando in POST i valori dei text box che ho così riempito alla pagina ricerca_exec.php che di fatto esegue la query utilizzando le variabili che gli sono state passate dalla pagina precedente.
    Tuttavia qualcosa non va perchè la query mi resstiuisce sempre e solo un valore!! Cos'è che non va?

    ricerca.php

    codice:
    <?php
    	session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Inserimento scheda</title>
    <link href="loginmodule.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
    .auto-style1 {
    	text-align: center;
    }
    .auto-style2 {
    	color: #FF9900;
    	text-align: center;
    	font-size: small;
    }
    .auto-style3 {
    	border: 1px solid #000000;
    }
    .auto-style4 {
    	margin-bottom: 0px;
    }
    .auto-style5 {
    	margin-top: 0px;
    }
    .auto-style6 {
    	text-align: left;
    }
    .auto-style7 {
    	margin-left: 0px;
    }
    </style>
    </head>
    <body>
    <?php
    	if( isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0 ) {
    		echo '<ul class="err">';
    		foreach($_SESSION['ERRMSG_ARR'] as $msg) {
    			echo '[*]',$msg,''; 
    		}
    		echo '[/list]';
    		unset($_SESSION['ERRMSG_ARR']);
    	}
    if(isset($_POST['Submit']) )  
    
    {  
      $nome = $_POST['nome'];  
      $cognome = $_POST['città'];  
      $codfis = $_POST['titolo'];  
      $sesso = $_POST['sesso'];  
      $citta = $_POST['citta'];  
      $titolo = $_POST['titolo'];  
      $reato = $_POST['reato'];  
      $giustizia = $_POST['giustizia'];
    
    }  
    
    ?>
    <form id="schedainserimento" name="schedainserimento" method="post" action="ricerca_exec.php">
        <p class="auto-style1">
    	[img]minilogo.jpg[/img][img]sole.jpg[/img]</p>
    	<p class="auto-style2"></p>
    	<p class="auto-style2"></p>
    	<p class="auto-style2">Ricerca scheda utente</p>
    	<p class="auto-style2"></p>
      <table align="center" cellpadding="2" cellspacing="0" style="width: 583px; height: 369px;" class="auto-style3">
        <tr>
          <th style="width: 134px">Nome </th>
          <td class="auto-style1">
    	  <input name="nome" type="text" class="textfield" id="nome" style="width: 421px" /></td>
        </tr>
        <tr>
          <th style="width: 134px">Cognome </th>
          <td class="auto-style1">
    	 <input name="cognome" type="text" class="textfield" id="cognome" style="width: 424px" /></tr>
        <tr>
          <th style="width: 134px">Città</th>
          <td>
    	
    	<select name="citta">
    	<option value="Palermo">Siena</option>
    	<option value="Catania">Catania</option>
    	</select>
          <tr>
          <th style="width: 134px">Titolo di Studio</th>
          <td class="auto-style6">
    	 <select name="titolo" class="auto-style7">
    	<option value="Licenza elementare">Licenza elementare</option>
    	<option value="Licenza media">Licenza media</option>
    	<option value="Diploma">Diploma</option>
    	<option value="Laurea">Laurea</option>
    	<option value="Nessuno">Nessuno</option>
    	</select>
        
        </tr>
          <tr>
          <td style="width: 134px">Sesso</td>
          <td class="auto-style6">
    	 
    	 <select name="sesso"  value='sesso'>
    	<option value="Uomo">Uomo</option>
    	<option value="Donna">Donna</option>
    	</select></td>
        </tr>
        <tr>
          <td style="width: 134px">Codice Fiscale</td>
          <td class="auto-style1">
    	  <input name="codfis" type="text" class="textfield" id="codfis" style="width: 415px; height: 17px" /></td>
        </tr>
        <tr>
          <td style="width: 134px">Tipologia Reato</td>
          <td>
    	 
    	 <select name="reato">
    	<option value="Contro il patrimonio">Contro il patrimonio</option>
    	<option value="Contro la persona">Contro la persona</option>
    	<option value="Contro L. 309/90">Contro L. 309/90</option>
    	<option value="ALTRO">ALTRO</option>
    	<option value="N.S.">N.S.</option>
    	</select></td>
        </tr>
        <tr>
          <td style="width: 134px">
    	  Giustizia Adulti</td>
          <td>
    	
    	<select name="giustizia">
    	<option value="Detenuti">Detenuti</option>
    	<option value="Semiliberi">Semiliberi</option>
    	<option value="Detenuti domiciliari">Detenuti domiciliari</option>
    	<option value="Affidati in prova ai s.s.">Affidati in prova ai s.s.</option>
    	<option value="Ex detenuti">Ex detenuti</option>
    	<option value="Arresti domiciliari">Arresti domiciliari</option>
    	<option value="Misure di sicurezza">Misure di sicurezza</option>
    	<option value="Sospensione pena">Sospensione pena</option>
    	</select></td>
        </tr>
        <tr>
          <td class="auto-style1" colspan="2">
    
    
    
    
    
    
    	  <input type="submit" name="Ricerca" value="Ricerca" class="auto-style4" /></td>
        </tr>
      </table>
    </form>
    <p class="auto-style1"></p>
    <p class="auto-style1"></p>
    <p class="auto-style1"></p>
    <p class="auto-style1"> </p>
    <p class="auto-style1">
    [img]euro.gif[/img]
    [img]logo_comune_pa1.jpg[/img]</p>
    </body>
    </html>
    Questa invece è la pgina di esecuzione della ricerca.
    ricerca_exec.php

    codice:
        <p class="auto-style1">
    	[img]RISE_minilogo.jpg[/img][img]sole.jpg[/img]</p>
    	<p class="auto-style2"></p>
    	<p class="auto-style2"></p>
    	<p class="auto-style2">Risultati ricerca</p>
    
    <head>
    <style type="text/css">
    .auto-style1 {
    	text-align: center;
    }
    .auto-style2 {
    	color: #FF9900;
    	text-align: center;
    	font-size: small;
    }
    </style>
    </head>
    
    <?php
    	//Start session
    	session_start();
    	
    	//Include database connection details
    	require_once('config.php');
    	
    	//Array to store validation errors
    	$errmsg_arr = array();
    	
    	//Validation error flag
    	$errflag = false;
    	
    	//Connect to mysql server
    	$link = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
    	if(!$link) {
    		die('Failed to connect to server: ' . mysql_error());
    	}
    	
    	//Select database
    	$db = mysql_select_db(DB_DATABASE);
    	if(!$db) {
    		die("Unable to select database");
    	}
    
    //Function to sanitize values received from the form. Prevents SQL injection
    	function clean($str) {
    		$str = @trim($str);
    		if(get_magic_quotes_gpc()) {
    			$str = stripslashes($str);
    		}
    		return mysql_real_escape_string($str);
    	}
    	
    	//Sanitize the POST values
    	$nome = clean($_POST['nome']);
    	$cognome = clean($_POST['cognome']);
    	$sesso = clean($_POST['sesso']);
    	$codfis = clean($_POST['codfis']);
    	$citta = clean($_POST['citta']);
    	$titolo = clean($_POST['titolo']);
    	$reato = clean($_POST['reato']);
    	$giustizia = clean($_POST['giustizia']);
    
    if($_POST)
    {
    	$ids = isset($_POST['id']) ? $_POST['id'] : array();
    	elimina_record($ids);
    }
    elseif(isset($_GET['id']))
    {
    	elimina_record(array($_GET['id']));
    }
    else
    	mostra_lista();
    
    function mostra_lista()
    {
    	// mostro un eventuale messaggio
    	if(isset($_GET['msg']))
    	echo ''.htmlentities($_GET['msg']).'
    
    ';
    
    	// preparo la query
    	$query = "SELECT * FROM utenti WHERE nome= '".$_POST['nome']."'OR cognome= '".$_POST['cognome']."'OR citta='".$_POST['citta']."'OR titolo= //'".$_POST['titolo']."'OR sesso= '".$_POST['sesso']."'OR codfis= '".$_POST['codfis']."'OR reato= '".$_POST['reato']."'OR giustizia= '".$_POST//['giustizia']."'"; 
    
    
    	// invio la query
    	$result = mysql_query($query);
    
    	// controllo l'esito
    	if (!$result) {
    		die("Errore nella query $query: " . mysql_error());
    	}
    
    	echo '
    	<form name="form1" method="post" action="">
    	<table border="1">
    		<tr>
    			<th></th>
    			<th>Nome</th>
    			<th>Cognome</th>
    			<th>Sesso</th>
    			<th>Codice Fiscale</th>
    			<th>citta</th>
    			<th>Titolo</th>
    			<th>Reato</th>
    			<th>Giustizia</th>
    			<th>Note</th>
    			<th></th>
    		</tr>';
    
    	while ($row = mysql_fetch_assoc($result))
    	{
    		$nome = htmlentities($row['nome']);
            	$cognome = htmlentities($row['cognome']);
    		$sesso = htmlentities($row['sesso']);
    		$codfis = htmlentities($row['codfis']);
    		$citta_ = htmlentities($row['citta']);
    		$titolo = htmlentities($row['titolo']);
    		$reato = htmlentities($row['reato']);
    		$giustizia = htmlentities($row['giustizia']);
    		$note = htmlentities($row['note']);
    	$server=$_SERVER['PHP_SELF'];  
    	$rowid=$row['id'];  
    	$link="$server/?id=$rowid";  
    	$link2="update_record_schede.php?id=$rowid";
    
    	
    		echo "<tr>
    		<td><input name=\"id[]\" type=\"checkbox\" value=\"$row[id]\" /></td>
    				<td>$nome</td>
    				<td>$cognome</td>
    				<td>$sesso</td>
    				<td>$codfis</td>
    				<td>$citta</td>
    				<td>$titolo</td>
    				<td>$reato</td>
    				<td>$giustizia</td>
    				<td>$note</td>
    				<td><a href=\"$link\">elimina</a></td>
    				<td><a href=\"$link2\">modifica</a></td>
    			</tr>";
    	}
    
    	echo '</table>
    		
    
    		<input type="submit" name="Submit" value="Elimina record selezionati" />
    <input type="submit" name="Submit2" value="Modifica record selezionati" />
    		</form>';
    
    	// libero la memoria di PHP occupata dai record estratti con la SELECT
    	mysql_free_result($result);
    
    	// chiudo la connessione a MySQL
    	mysql_close();
    }
    
    function elimina_record($ids)
    {
    	// verifico che almeno un id sia stato selezionato
    	if(count($ids) < 1)
    	{
    		$messaggio = urlencode("Nessun record selezionato!");
    		header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
    		exit;
    	}
    
    	// per precauzione converto gli ID in interi
    	$ids = array_map('intval',$ids);
    
    	// creo una lista di ID per la query
    	$ids = implode(',',$ids);
    
    	// preparo la query
    	$query = "DELETE FROM utenti WHERE id IN ($ids)";
    
    	// invio la query
    	$result = mysql_query($query);
    
    	// controllo l'esito
    	if (!$result) {
    		die("Errore nella query $query: " . mysql_error());
    	}
    
    	// conto il numero di record cancellati
    	$num_record = mysql_affected_rows();
    
    	// chiudo la connessione a MySQL
    	mysql_close();
    
    	$messaggio = urlencode("Numero record cancellati: $num_record");
    	header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
    }
    ?>


    Grazie in anticipo per il vostro aiuto!!

    Tiziano

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    allora non capisco il senso del seguente codice:
    Codice PHP:
    if(isset($_POST['Submit']) )  

    {  
      
    $nome $_POST['nome'];  
      
    $cognome $_POST['città'];  
      
    $codfis $_POST['titolo'];  
      
    $sesso $_POST['sesso'];  
      
    $citta $_POST['citta'];  
      
    $titolo $_POST['titolo'];  
      
    $reato $_POST['reato'];  
      
    $giustizia $_POST['giustizia'];


    tu dici se mando in submit attribuisco le stringhe alle variabili che mando con il form. questo può succedere se il form lo mandi nella stessa pagina invece vai all'altra pagina.
    poi per rendere vero il settaggio del submit dovrebbe essere
    if(isset($_POST['Ricerca']))

  3. #3
    Fatti stampare a video la variabile $query e poi eseguila a mano tramite un client SQL e vedi quanti risultati ti restituisce.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Originariamente inviato da amphioxus
    allora non capisco il senso del seguente codice:
    Codice PHP:
    if(isset($_POST['Submit']) )  

    {  
      
    $nome $_POST['nome'];  
      
    $cognome $_POST['città'];  
      
    $codfis $_POST['titolo'];  
      
    $sesso $_POST['sesso'];  
      
    $citta $_POST['citta'];  
      
    $titolo $_POST['titolo'];  
      
    $reato $_POST['reato'];  
      
    $giustizia $_POST['giustizia'];


    tu dici se mando in submit attribuisco le stringhe alle variabili che mando con il form. questo può succedere se il form lo mandi nella stessa pagina invece vai all'altra pagina.
    poi per rendere vero il settaggio del submit dovrebbe essere
    if(isset($_POST['Ricerca']))
    Ciao Amphioxus,
    è esattamente come ho detto: attribuisco le stringhe alle variabili che mando con il form che si trova nella prima pagina e cioè ricerca.php.
    Una volta che ho definito queste variabili le passo alla pagina ricerca-exec.php; lo vedi dal codice:
    codice:
    <form id="schedainserimento" name="schedainserimento" method="post" action="ricerca_exec.php">
    E fin qui mi sembra corretto!

    Hai ragione col farmi notare che non deve essere Submit ma deve essere Ricerca...
    La query con i campi condizionali mi restituisce invariabilmente TUTTA la tabella....è come se lo script andasse a piè pari alla funzione: elimina_record ; tant'è che in cima alla tabella che mi stampa mi esce fuori un NESSUN RECORD SELEZIONATO che è il messaggio che viene fuori quando viene eseguita la funziona che ho scritto sopra e non si trova l'ID del record per cancellarlo...ma a rigor di logica lo script non dovrebbe saltare subito a quella fase ma dovrebbe essere soddisfatta l'ultima condizione del ciclo IF:
    codice:
    if($_POST)
    {
    	$ids = isset($_POST['id']) ? $_POST['id'] : array();
    	elimina_record($ids);
    }
    elseif(isset($_GET['id']))
    {
    	elimina_record(array($_GET['id']));
    }
    else
    	mostra_lista();
    E cioè la funzione mostra_lista che utilizzando le variabili passate dalla pagina precedente dovrebbe restituirmi la query con soltanto ALCUNI record!!!


    Tiziano

  5. #5
    Originariamente inviato da amphioxus
    allora non capisco il senso del seguente codice:
    Codice PHP:
    if(isset($_POST['Submit']) )  

    {  
      
    $nome $_POST['nome'];  
      
    $cognome $_POST['città'];  
      
    $codfis $_POST['titolo'];  
      
    $sesso $_POST['sesso'];  
      
    $citta $_POST['citta'];  
      
    $titolo $_POST['titolo'];  
      
    $reato $_POST['reato'];  
      
    $giustizia $_POST['giustizia'];


    tu dici se mando in submit attribuisco le stringhe alle variabili che mando con il form. questo può succedere se il form lo mandi nella stessa pagina invece vai all'altra pagina.
    poi per rendere vero il settaggio del submit dovrebbe essere
    if(isset($_POST['Ricerca']))

    Ho capito cosa intendi: questo codice non deve stare nella pagina di submit del FORM ma deve stare nella pagina di destinazione che riceve di fatto le variabili. Ho capito bene?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    se ho ben interpetrato il tuo codice mi sembra di si..
    anche perchè nella pagina di ricerca non ne fai uso quindi è sembra inutile avere delle stringhe con valori di quel genere

  7. #7
    Come giustamente dice amphioxus questo codice nella pagina ricerca.php non serve a niente:

    Codice PHP:
    if(isset($_POST['Submit']) )  

    {  
      
    $nome $_POST['nome'];  
      
    $cognome $_POST['città'];  
      
    $codfis $_POST['titolo'];  
      
    $sesso $_POST['sesso'];  
      
    $citta $_POST['citta'];  
      
    $titolo $_POST['titolo'];  
      
    $reato $_POST['reato'];  
      
    $giustizia $_POST['giustizia'];

    inoltre nella pagina ricerca_exec.php recuperi tutte le variabili alle quali applichi anche la funzione clean():

    Codice PHP:
        //Sanitize the POST values
        
    $nome clean($_POST['nome']);
        
    $cognome clean($_POST['cognome']);
        
    $sesso clean($_POST['sesso']);
        
    $codfis clean($_POST['codfis']);
        
    $citta clean($_POST['citta']);
        
    $titolo clean($_POST['titolo']);
        
    $reato clean($_POST['reato']);
        
    $giustizia clean($_POST['giustizia']); 
    e poi nella select riutilizzi l'array $_POST?!?!

    Codice PHP:
    $query "SELECT * FROM utenti WHERE nome= '".$_POST['nome']."'OR cognome= '".$_POST['cognome']."'OR citta='".$_POST['citta']."'OR titolo= //'".$_POST['titolo']."'OR sesso= '".$_POST['sesso']."'OR codfis= '".$_POST['codfis']."'OR reato= '".$_POST['reato']."'OR giustizia= '".$_POST//['giustizia']."'"; 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Ciao,
    allora utilizzo la funzione clean ma di fatto non la utilizzo ed infatti per la query uso direttamente i valori $_POST (ho commentato nel mio codice la funzione di sanizzazione delle variabili infatti).

    Dando quindi per assodato che la pagina di inserimento adesso è ok, immagino il problema stia nella pagina di esecuzione della query, la seconda.

    Tiziano

  9. #9
    Originariamente inviato da satifal
    Come giustamente dice amphioxus questo codice nella pagina ricerca.php non serve a niente:

    Codice PHP:
    if(isset($_POST['Submit']) )  

    {  
      
    $nome $_POST['nome'];  
      
    $cognome $_POST['città'];  
      
    $codfis $_POST['titolo'];  
      
    $sesso $_POST['sesso'];  
      
    $citta $_POST['citta'];  
      
    $titolo $_POST['titolo'];  
      
    $reato $_POST['reato'];  
      
    $giustizia $_POST['giustizia'];

    inoltre nella pagina ricerca_exec.php recuperi tutte le variabili alle quali applichi anche la funzione clean():

    Codice PHP:
        //Sanitize the POST values
        
    $nome clean($_POST['nome']);
        
    $cognome clean($_POST['cognome']);
        
    $sesso clean($_POST['sesso']);
        
    $codfis clean($_POST['codfis']);
        
    $citta clean($_POST['citta']);
        
    $titolo clean($_POST['titolo']);
        
    $reato clean($_POST['reato']);
        
    $giustizia clean($_POST['giustizia']); 
    e poi nella select riutilizzi l'array $_POST?!?!

    Codice PHP:
    $query "SELECT * FROM utenti WHERE nome= '".$_POST['nome']."'OR cognome= '".$_POST['cognome']."'OR citta='".$_POST['citta']."'OR titolo= //'".$_POST['titolo']."'OR sesso= '".$_POST['sesso']."'OR codfis= '".$_POST['codfis']."'OR reato= '".$_POST['reato']."'OR giustizia= '".$_POST//['giustizia']."'"; 
    Se nella query volessi sfruttare la funzione CLEAN ed utilizzare quindi direttamente i nomi delle variabili come dovrei variare la sintassi?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    se vuoi far fare prima la clean e poi la query
    devis semplicemente metter i nomi delle stringhe a cui si riferiscono le variabili

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 © 2024 vBulletin Solutions, Inc. All rights reserved.