Una query stupida mi sta facendo impazzire

Vale_Barbato

Utente Attivo
15 Set 2005
465
0
0
Ciao ragazzi, stò facendo degli esercizi con php e mysql, ho una parte di codice che mi stà veramente facendo diventare pazza...

posto il codice così spero che qualche buon anima mi aiuti :)

Form di inserimento:
<form action="raccoltadati.php?azione=inserimento" method="post">
<label for="Nome"> <input type="text" name="Nome" /><br />
<input type="hidden" name="tabella" value="impieghi" /><br />
<input type="submit" value="inserisci" /><br />
</form>

Questo invece e l'elaborazione del DB:
$azione=$_GET["azione"];
if($azione=="inserimento") {
$tabella=$_POST["tabella"];
$cn);
if($tabella=="impieghi") $query="INSERT INTO $tabella VALUES('',".$_POST["Nome"].")";
mysql_query($query) or die("Inserimento fallito");
header("Location: ../index.php");
exit;
}

Grazie in anticipo ;)
 

Vale_Barbato

Utente Attivo
15 Set 2005
465
0
0
In che senso un problema in lettura? Specifica e vedremo di risolvere anche quello ;)

Grazie Alessandro, sei veramente molto gentile...
allora:
ho risolto per la lettura e ti posto tutto il codice:
Codice:
<?php
require 'configurazione.php';
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 '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';   
    // preparo la query   
    $query = "SELECT * FROM impieghi";   
    // invio la query   
    $result = mysql_query($query);   
    // controllo l'esito   
    if (!$result) {   
        die("Errore nella query $query: " . mysql_error());   
    }   
    echo '   
    <table border="1 px" bordercolor="#006633" align="center" CELLSPACING="0" frame="box">
  <tr bgcolor="#EAEAEA">
      <td NOWRAP align="center">ID</td>
      <td NOWRAP align="center">Nome</td>
      <td NOWRAP align="center"></td>
      <td NOWRAP align="center"></td>
  </tr>';  
    while ($row = mysql_fetch_assoc($result))  
    {  
        $ID       =htmlentities($row['ID']);
        $rag_soc_1 =htmlentities($row['Nome']);
 
          // preparo il link per la modifica dei dati del record  
        $link = $_SERVER['PHP_SELF'].'?ID=' . $row['ID'];  
$bgcolor = $bgcolor == '#ffffff' ? '#EAEAEA' : '#ffffff';
        echo "
          <tr bgcolor=$bgcolor>  
            <td NOWRAP><font size=\"1\">$ID</font></td>  
            <td NOWRAP><font size=\"1\">$rag_soc_1</font></td>  
            <td NOWRAP ><a href=\"\"><img src=\"mod.png\" alt=\"modifica\" border=\"0\"></a></td>
      <td NOWRAP ><a href=\"$link\"><img src=\"del.gif\" alt=\"cancella\" border=\"0\"></a></td>  
            </tr>";  
    }  
    echo '</table>   
        <br />   
       ';  
    // 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 impieghi 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);
}  
?>

con questo riesco a leggere ed eliminare, ma non riesco a modificare :(

Grazie ancora...
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Prova modificando così (ho anche fatto alcune altre correzioni, perché il codice era un po' confuso):
PHP:
<?php
require 'configurazione.php';

if($_GET['action'] == 'delete')
{
	if(count($_POST) > 0)
	{
		$ids = isset($_POST['ID']) ? $_POST['ID'] : array();
		elimina_record($ids);
	}
	elseif(isset($_GET['ID']))
		elimina_record(array($_GET['ID']));
}
elseif($_GET['action'] == 'edit' && isset($_GET['ID']))
	modifica_record($_GET['id']);
else
	mostra_lista();

function mostra_lista()
{
	// mostro un eventuale messaggio
	if(isset($_GET['msg']))
		echo '<b>'. htmlentities($_GET['msg']) .'</b><br /><br />';
	
	// preparo la query
	$query = 'SELECT * FROM impieghi';
	
	// invio la query
	$result = mysql_query($query) or die("Errore nella query {$query}: " . mysql_error());
	
	echo <<<EOF
	<table border="1px" bordercolor="#006633" align="center" cellspacing="0" frame="box">
		<tr bgcolor="#EAEAEA">
			<td nowrap="nowrap" align="center">ID</td>
			<td nowrap="nowrap" align="center">Nome</td>
			<td nowrap="nowrap" align="center"></td>
			<td nowrap="nowrap" align="center"></td>
		</tr>
EOF;

	while($row = mysql_fetch_assoc($result))
	{
		$ID	= htmlentities($row['ID']);
		$rag_soc_1 = htmlentities($row['Nome'])
		$bgcolor = $bgcolor == '#ffffff' ? '#EAEAEA' : '#ffffff';
		
		echo <<<EOF
		<tr bgcolor={$bgcolor}>
			<td nowrap="nowrap"><font size="1">{$ID}</font></td>
			<td nowrap="nowrap"><font size="1">{$rag_soc_1}</font></td>
			<td nowrap="nowrap"><a href="{$_SERVER['PHP_SELF']}?action=edit&ID={$ID}"><img src="mod.png" alt="modifica" border="0"></a></td>
			<td nowrap="nowrap"><a href="{$_SERVER['PHP_SELF']}?action=delete&ID={$ID}"><img src="del.gif" alt="cancella" border="0"></a></td>
		</tr>
EOF;
	}
	
	echo <<<EOF
	</table>
	<br />
EOF;

	// 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 impieghi WHERE ID IN ({$ids})";
	
	// invio la query
	$result = mysql_query($query) or 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}");
}

function modifica_record($id)
{
	// converto l'ID in intero
	$id = intval($id);
	
	// seleziono il record dal database
	$sql = "SELECT * FROM impieghi WHERE ID = {$id}";
	$query = mysql_query($sql) or die("Errore nella query {$sql}: " . mysql_error());
	
	// controllo che il record esista
	if(mysql_num_rows($query) == 0)
	{
		$messaggio = urlencode('Il record specificato non esiste.');
		header("Location: {$_SERVER['PHP_SELF']}?msg={$messaggio}");
		exit();
	}
	
	// controllo che il form sia stato inviato
	if(count($_POST) > 0)
	{
		// recupero i dati
		$ragsoc = isset($_POST['ragsoc']) ? trim($_POST['ragsoc']) : '';
		$ragsoc = mysql_real_escape_string($ragsoc);
		
		// controllo che il campo sia stato compilato
		if($ragsoc == '')
		{
			$messaggio = urlencode('Non hai compilato il modulo!');
			header("Location: {$_SERVER['PHP_SELF']}?msg={$messaggio}");
			exit();
		}
		
		// eseguo la query di update
		$sql = "UPDATE impieghi SET Nome = '{$ragsoc}' WHERE ID = {$id}";
		$query = mysql_query($sql) or die("Errore nellaqì query {$sql}: " . mysql_error());
		
		$messaggio = urlencode('Record aggiornato correttamente!');
		header("Location: {$_SERVER['PHP_SELF']}?msg={$messaggio}");
	}
	// visualizzo il form di modifica
	else
	{
		// recupero i dati del record
		$data = mysql_fetch_assoc($query);
		
		echo <<<EOF
		<form method="post" action="{$_SERVER['PHP_SELF']}?action=edit&ID={$id}">
			<label>Ragione sociale:</label>
			<input type="text" name="ragsoc" value="{$data['Nome']}" />
			<br /> <br />
			
			<input type="submit" value="Aggiorna dati" />
		</form>
EOF;
	}
}
?>
 

Vale_Barbato

Utente Attivo
15 Set 2005
465
0
0
Prova modificando così (ho anche fatto alcune altre correzioni, perché il codice era un po' confuso):

Ciao Alessandro,
non sono riuscita a far funzionare in nessuno modo :(
Mi daresti un aiutino!!!!!

Grazie mille...
 

Vale_Barbato

Utente Attivo
15 Set 2005
465
0
0
Ciao,
ho ri-modificato il codice e sono quasi vicina ad aver risolto, ora funziona ma c'è un difetto che non capisco:
In pratica quando modifico un record, mi prende l'ID esatto, ma il contenuto Nome e sempre del'ID 0

Questo è il codice da me modificato:
Codice:
<?php
require 'configurazione.php'; 

if($_GET['action'] == 'delete') 
{ 
    if(count($_POST) > 0) 
    { 
        $ids = isset($_POST['ID']) ? $_POST['ID'] : array(); 
        elimina_record($ids); 
    } 
    elseif(isset($_GET['ID'])) 
        elimina_record(array($_GET['ID'])); 
} 
elseif($_GET['action'] == 'edit' && isset($_GET['ID'])) 
    modifica_record($_GET['id']); 
else 
    mostra_lista(); 

function mostra_lista() 
{   
    // mostro un eventuale messaggio   
    if(isset($_GET['msg']))   
        echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';   

    // preparo la query   
    $query = 'SELECT * FROM impieghi';   

    // invio la query 
    $result = mysql_query($query) or die("Errore nella query {$query}: " . mysql_error()); 
       
    echo '   
    <table border="1 px" bordercolor="#006633" align="center" CELLSPACING="0" frame="box">
  <tr bgcolor="#EAEAEA">
      <td NOWRAP align="center">ID</td>
      <td NOWRAP align="center">Nome</td>
      <td NOWRAP align="center"></td>
      <td NOWRAP align="center"></td>
  </tr>';  

    while ($row = mysql_fetch_assoc($result))  
    {  
        $ID       =htmlentities($row['ID']);
        $rag_soc_1 =htmlentities($row['Nome']);
		$bgcolor = $bgcolor == '#ffffff' ? '#EAEAEA' : '#ffffff';
        
		echo "
          <tr bgcolor=$bgcolor>  
            <td NOWRAP><font size=\"1\">$ID</font></td>  
            <td NOWRAP><font size=\"1\">$rag_soc_1</font></td>  
            <td nowrap=\"nowrap\"><a href=\"{$_SERVER['PHP_SELF']}?action=edit&ID={$ID}\"><img src=\"mod.png\" alt=\"modifica\" border=\"0\"></a></td> 
            <td nowrap=\"nowrap\"><a href=\"{$_SERVER['PHP_SELF']}?action=delete&ID={$ID}\"><img src=\"del.gif\" alt=\"cancella\" border=\"0\"></a></td>  
            </tr>";  
    }  
    echo '</table>   
        <br />   
       ';  
    // 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 impieghi WHERE ID IN ({$ids})"; 

   // invio la query 
    $result = mysql_query($query) or 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}"); 
}  

function modifica_record($id) 
{ 
    // converto l'ID in intero 
    $id = intval($id); 
     
    // seleziono il record dal database 
    $sql = "SELECT * FROM impieghi WHERE ID = {$id}"; 
    $query = mysql_query($sql) or die("Errore nella query {$sql}: " . mysql_error()); 
     
    // controllo che il record esista 
    if(mysql_num_rows($query) == 0) 
    { 
        $messaggio = urlencode('Il record specificato non esiste.'); 
        header("Location: {$_SERVER['PHP_SELF']}?msg={$messaggio}"); 
        exit(); 
    } 
     
    // controllo che il form sia stato inviato 
    if(count($_POST) > 0) 
    { 
        // recupero i dati 
        $ragsoc = isset($_POST['ragsoc']) ? trim($_POST['ragsoc']) : ''; 
        $ragsoc = mysql_real_escape_string($ragsoc); 
         
        // controllo che il campo sia stato compilato 
        if($ragsoc == '') 
        { 
            $messaggio = urlencode('Non hai compilato il modulo!'); 
            header("Location: {$_SERVER['PHP_SELF']}?msg={$messaggio}"); 
            exit(); 
        } 
         
        // eseguo la query di update 
        $sql = "UPDATE impieghi SET Nome = '{$ragsoc}' WHERE ID = {$id}"; 
        $query = mysql_query($sql) or die("Errore nellaqì query {$sql}: " . mysql_error()); 
         
        $messaggio = urlencode('Record aggiornato correttamente!'); 
        header("Location: {$_SERVER['PHP_SELF']}?msg={$messaggio}"); 
    } 
    // visualizzo il form di modifica 
    else 
    { 
        // recupero i dati del record 
        $data = mysql_fetch_assoc($query); 
         
        echo "
          <form method=\"post\" action=\"{$_SERVER['PHP_SELF']}?action=edit&ID={$id}\"> 
            <label>Ragione sociale:</label> 
            <input type=\"text\" name=\"ragsoc\" value=\"{$data['Nome']}\" /> 
            <br /> <br /> 
             
            <input type=\"submit\" value=\"Aggiorna dati\" /> 
        </form>"; 
		
    } 
} 
?>

Grazie ancora :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
A media degli elementi estratti da una query MySQL 0
S Selezionare ultimo record di una sotto query MySQL 27
V Query per una somma PHP 2
G Casella combinata in una query MS Access 4
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
M Ordinare una query join PHP 2
Tommy03 [PHP] Media valori presi da una query PHP 3
M [MySQL] CREARE UN LINK SU UN DETERMINATO CAMPO DI UNA TABELLA RISULTATO DI UNA QUERY SQL MySQL 3
P [MS ACCESS] Estrarre più somme da una query MS Access 4
G [PHP] Oracle, convertire una query multiline in Json PHP 3
A [PHP] Modifica caratteri di una query Oracle SQL PHP 0
G [PHP] inserire risultato di una query in una tabella PHP 3
napuleone [MySQL] commenti in una query MySQL 1
M [MS Access] Passare i dati di una query da form a report MS Access 3
simgia [PHP] Ciclare una query JOIN PHP 2
R [PHP] Estrapolare dati da una query left join PHP 0
MikSkagit [PHP] Risultato in una sola query PHP 16
U [PHP] estrarre i risultati di una query e visualizzarli in una tabella. PHP 9
trattorino [PHP] Unire a una query piu tabelle PHP 7
elpirata [PHP] Paginazione dati estratti da una query con più condizioni PHP 17
G [ASP] Risultato query in una variabile Classic ASP 2
D PHP:funzione che opera una query su argomento PHP 8
F Tabella con prima colonna con i risultati di una query PHP 1
G Problema con una query. PHP 5
A impostare una query con operatori condizionali MySQL 1
elpirata Stampare a video in echo table il risultato di una query PHP 4
M Comparare se un campo testuale è contenuto in un altro in una query MySQL 0
M Access-Query per creare una tabella con la data nel nome tabella MS Access 0
F Risultato di una query nell'array PHP 2
F paginazione record di una query Classic ASP 5
M Escludere dati da una query PHP 15
F PHP problema doppi apici all'interno di una query SQL PHP 1
D [risolto] Problemi di paginazione dei risultati con una determinata query Classic ASP 4
otto9due Piccolo aiutino per una query.. PHP 3
F Miglior metodo per contare le righe di una query MySQL 2
E Mettere come Selected l'opzione di un select option, tramite il dato di una query. Javascript 2
L Due query una sola while PHP 1
N Eseguire una query MySQL dopo 10 secondi PHP 0
D Stampare una query in una tabella MySQL 2
G condizioni if then else all interno di una query?? MySQL 2
xone Ordinare tramite menù a tendina i risultati di una query già stampati MySQL 0
A jbutton che esegue una query mysql in netbeans Java 1
K query per popolare una select tramite ajaxc php e xml ! Ajax 14
gandalf1959 [risolto] Mostrare a video il risultato di una query con stesso anno e mesi diversi PHP 13
G Inserimento loop in una INSERT query in PHP e MySQL PHP 2
Monital Divisione di una query e resto della divisione PHP 3
F explode in una query PHP 4
Albertoesse Problemi passaggio valori da un Form ad Una classe con query mysql PHP 12
R passare una variabile in query per ORDER BY PHP 6
D Ordinare i risultati di una query dalla fine della tabella MySQL 13

Discussioni simili