Unità di trasferimento

Ciao borgo! Sì si cavolo è vero...grazie!

Ora dopo che esce l'alert, quindi dopo aver dato l'ok, mi compare la select...selezione dò l'ok ma mi esce questo warning e notice

Notice: Undefined index: id_cl in c:\programmi\easyphp1-8\www\trasferimento.php on line 34

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\trasferimento.php on line 68

Queste righe:

$_SESSION['id_cl']=htmlspecialchars($_GET['id_cl']);

e

$inserimento_dati_cliente=mysql_fetch_array($query1);

Grazie!
 
Ultima modifica:
ciao

Notice: Undefined index: id_cl in c:\programmi\easyphp1-8\www\trasferimento.php on line 34
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\trasferimento.php on line 68
Queste righe:
$_SESSION['id_cl']=htmlspecialchars($_GET['id_cl']);
e
$inserimento_dati_cliente=mysql_fetch_array($query 1);

l'errore alla riga 68 probabilmente è dovuto al fatto che nella quey1 non entra l'id_cl.
poi mi dici che alla riga 34 ti da errore. per caso hai spstato le istruzioni:

PHP:
if(!isset($_SESSION)){  
session_start ();  
}

le righe sopra DEVONO essere le prime subito dopo <?php prima di ogni uotput html
se hai un output html la session non si crea e quindi indice indefinito. dovrebbero risultare così:

riga 1 <?php
riga 2 if(!isset($_SESSION)){
riga 3 session_start ();
riga 4 }
riga 5 o chiusura di php ?> che poi riaprirai o altre istruzioni php
 
Ciao!

Mi sembra di sì Borgo...ti posto tutto il codice...

PHP:
<?php

require('config.php');

if(!isset($_SESSION['login']))
{
header('Location: localhost/login.php');
exit;
}
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));


?>


<?php 

// Dati connessione al database 
$db_host = 'localhost';        // Host - solitamente localhost
$db_utente = 'root';        // Nome utente del Database 
$db_password = '';        // Password del Database 
$db_nomedb = '';     // Nome del Database 

// Effettua la connessione al database 
$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error()); 
mysql_select_db($db_nomedb); 
?>


<?php
if(!isset($_SESSION)){ 
session_start (); 
} 
?>

<?php
//leggo l'id dalla pagina trasferisci_cliente.php e lo passo in sessione 
$_SESSION['id_cl']=htmlspecialchars($_GET['id_cl']); 
//altre cose che ti interessano............ 
//leggo il pulsante di submit !!!METTI SEMPRE IL NOME AI PULSANTI!!! 
if(isset($_POST['invia']) && $_POST['invia']=="INVIA"){ 
    $unita=$_POST['unita']; 
/* *****ATTENZIONE 
presuppongo che cambi solo il nome della tabella, non la loro struttura ed i nomi dei campi 
****************** */ 
    switch ($unita){ 
        case "01": 
            $unita="01";//trasferisci in uno 
        break; 
        case "02": 
            $unita="02";//trasferisci in due 
        break; 
        case "03": 
            $unita="03";//trasferisci in tre 
        break; 
        case "04": 
            $unita="04";//trasferisci in quattro 
        break; 
        case "05": 
            $unita="05";//trasferisci in cinque 
        break; 
        default: 
        echo "non ho scelto, ripetere"; 
        //link di ritorno alla pagina stessa 
        break; 
    } //fine switch 

    //leggo i dati del cliente 
  
   
    $query1=mysql_query("SELECT * FROM inserimento_dati_cliente WHERE id_cl=".$_SESSION['id_cl']); 
    $inserimento_dati_cliente=mysql_fetch_array($query1); 
    $cognome=$inserimento_dati_cliente['cognome'];  
    $nome=$inserimento_dati_cliente['nome'];  
    $data_di_nascita=$inserimento_dati_cliente['data_di_nascita']; 

    //trasferisci nella tabella scelta 
    $query2="INSERT INTO ".$unita." (cognome, nome, data_di_nascita) VALUE('$cognome', '$nome', '$data_di_nascita')";  
    $inserisci_in_ball=mysql_query($query2);  

    //elimini il nome trasferito dalla tabella clienti_fissi     
    $query3=mysql_query("DELETE FROM inserimento_dati_cliente WHERE id_cl=".$_SESSION['id_cl']);  
    //link di ritorno  
}// fine if invia 
?> 

<form action="trasferimento.php" method="post" name="trasferimento">  
UNITA'<br><br> 
<select name="unita"> 
<option value="01">A</option> 
<option value="02">B</option> 
<option value="03">C</option> 
<option value="04">D</option> 
<option value="05">E</option> 
<br><br><br> 
</select> 
<input name="invia" type="submit" id="invia" value="INVIA"> 
<br><br> 
</form>
Mi dà stesso indentico warning e notice.

Grazie Borgo!!!
 
ciao
infatti le istruzioi non sono alla prima riga
correggi

PHP:
<?php 
if(!isset($_SESSION)){  
session_start ();  
}  

//require('config.php'); 

if(!isset($_SESSION['login'])) 
{ 
header('Location: localhost/login.php'); 
exit; 
} 
require('config.php'); 
//eccetera.......


il require è un output, con molta probabilità non ti funzia nemmeno 'hedar location (anche header deve venire prina di uotput)
 
Grazie Borgo! Allora l'header per il momento l'ho tolto per fare meno caos però mi dà sempre warning. Mi esce l'alert senza notice ma dopo che seleziono e dò l'ok mi dice:

Notice: Undefined index: id_cl in c:\programmi\easyphp1-8\www\trasferimento.php on line 23

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\trasferimento.php on line 57


PHP:
<?php
if(!isset($_SESSION)){ 
session_start (); 
} 

// Dati connessione al database 
$db_host = 'localhost';        // Host - solitamente localhost
$db_utente = 'root';        // Nome utente del Database 
$db_password = '';        // Password del Database 
$db_nomedb = '';     // Nome del Database 

// Effettua la connessione al database 
$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error()); 
mysql_select_db($db_nomedb); 




//leggo l'id dalla pagina trasferisci_cliente.php e lo passo in sessione 
$_SESSION['id_cl']=htmlspecialchars($_GET['id_cl']); 
//altre cose che ti interessano............ 
//leggo il pulsante di submit !!!METTI SEMPRE IL NOME AI PULSANTI!!! 
if(isset($_POST['invia']) && $_POST['invia']=="INVIA"){ 
    $unita=$_POST['unita']; 
/* *****ATTENZIONE 
presuppongo che cambi solo il nome della tabella, non la loro struttura ed i nomi dei campi 
****************** */ 
    switch ($unita){ 
        case "01": 
            $unita="01";//trasferisci in uno 
        break; 
        case "02": 
            $unita="02";//trasferisci in due 
        break; 
        case "03": 
            $unita="03";//trasferisci in tre 
        break; 
        case "04": 
            $unita="04";//trasferisci in quattro 
        break; 
        case "05": 
            $unita="05";//trasferisci in cinque 
        break; 
        default: 
        echo "non ho scelto, ripetere"; 
        //link di ritorno alla pagina stessa 
        break; 
    } //fine switch 

    //leggo i dati del cliente 
  
   
    $query1=mysql_query("SELECT * FROM inserimento_dati_cliente WHERE id_cl=".$_SESSION['id_cl']); 
    $inserimento_dati_cliente=mysql_fetch_array($query1); 
    $cognome=$inserimento_dati_cliente['cognome'];  
    $nome=$inserimento_dati_cliente['nome'];  
    $data_di_nascita=$inserimento_dati_cliente['data_di_nascita']; 

    //trasferisci nella tabella scelta 
    $query2="INSERT INTO ".$unita." (cognome, nome, data_di_nascita) VALUE('$cognome', '$nome', '$data_di_nascita')";  
    $inserisci_in_ball=mysql_query($query2);  

    //elimini il nome trasferito dalla tabella clienti_fissi     
    $query3=mysql_query("DELETE FROM inserimento_dati_cliente WHERE id_cl=".$_SESSION['id_cl']);  
    //link di ritorno  
}// fine if invia 
?> 

<form action="trasferimento.php" method="post" name="trasferimento">  
UNITA'<br><br> 
<select name="unita"> 
<option value="01">A</option> 
<option value="02">B</option> 
<option value="03">C</option> 
<option value="04">D</option> 
<option value="05">E</option> 
<br><br><br> 
</select> 
<input name="invia" type="submit" id="invia" value="INVIA"> 
<br><br> 
</form>
 
Ho provato anche a chiudere

PHP:
<?php 
if(!isset($_SESSION)){  
session_start ();  
}
con tag di chiusura e poi riaprire tutto con <?php ma nulla...
 
ciao, vediamo una riga alla volta

fai questa prova modificando queste righe

PHP:
//leggo l'id dalla pagina trasferisci_cliente.php e lo passo in sessione  
//$_SESSION['id_cl']=htmlspecialchars($_GET['id_cl']);  


var_dump(htmlspecialchars($_GET['id_cl']);

e dimmi cosa ti restituisce il var_dump
 
ciao scusa mi sono dimenticato una parentesi

var_dump(htmlspecialchars($_GET['id_cl']));

comunque ho fatto una nuova prova chiamando la paginae a me funzia, quindi probabilmente l'errore è nella trasmissione di id_cl nel $_GET
 
Non ho letto dall'inizio del topic perché sarei impazzito, ma ho rielaborato il codice che ho trovato nell'ultimo post, e questo è quello che ne ho ricavato:
PHP:
<?php
// inizializzo la sessione
session_start();
?>
<html>
	<head>
		<title>Trasferimento dati</title>
	</head>
	<body>
		<h1>Trasferimento dati</h1>
<?php
// dati per la connessione
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = '';

// effettua la connessione al database
$conn = mysql_connect($db_host, $db_user, $db_pass) or die('Errore nella connessione al database: '. mysql_error());
mysql_select_db($db_name, $conn) or die('Errore nella selezione del database: '. mysql_error());

// imposto la sessione dell'ID cliente
$_SESSION['id_cl'] = htmlspecialchars($_GET['id_cl']);

// controllo che il form sia stato inviato
if(isset($_POST['submit']))
{
	// valore del campo
	$unit = $_POST['unit'];
	
	// valori possibili
	$values = array('01', '02', '03', '04', '05');
	
	// controllo valore corretto
	if(!in_array($unit, $values))
		die('Non hai scelto l\'unit&agrave;, ripetere.');
	
	// recupero dei dati
	$query1 = mysql_query("SELECT * FROM inserimento_dati_cliente WHERE id_cl='{$_SESSION['id_cl']}'") or die('Query 1: '. mysql_error());
	$data = mysql_fetch_assoc($query1);
	
	// trasferimento nella tabella
	$sql = "INSERT INTO {$unit} (cognome,nome,data_di_nascita) VALUES ('{$data['cognome']}','{$data['nome']}','{$data['data_di_nascita']}')";
	$query2 = mysql_query($sql) or die('Query 2: '. mysql_error());
	
	// rimozione dati dalla tabella precedente
	$query = mysql_query("DELETE FROM inserimento_dati_cliente WHERE id_cl='{$_SESSION['id_cl']}'") or die('Query 3: '. mysql_error());
	
	// messaggio di successo
	echo '<p>Operazione eseguita con successo! Trasferimento riuscito.</p>';
}
else
{
?>
		<form name="transfer" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
			<label>Unit&agrave;:</label>
			
			<select name="unit">
				<option value="01">A</option>
				<option value="02">B</option>
				<option value="03">C</option>
				<option value="04">D</option>
				<option value="05">E</option>
			</select>
			
			<input type="submit" name="submit" value="Invia" />
		</form>
<?php
}
?>
	</body>
</html>

Comunque non capisco che bisogno c'è di impostare la variabile GET id_cl dentro una sessione! Perché se è inutile sarebbe bene fare a meno di inizializzare una sessione.

Non l'ho testato, ma non dovrebbe dare problemi. Per qualsiasi dubbio dimmi! :)
 
Ultima modifica:
ciao
Non ho letto dall'inizio del topic perché sarei impazzito, ma ho rielaborato il codice...
il problema non sta nel codice i quanto quello precedente a me funzia perfettamente, l'ho provato diverse volte e non mi da alcun errore.
mentre a bixio2009 continua a dare vari warnig.
i casi sono due o copia male il codice o il problema nasce a monte della pag in oggetto.


p.s. per alessandro
il tuo codice deve essere corretto
<input type="submit" name="submit" value="Invia" />
if(isset($_POST['invia']))
 
dimenticavo
Comunque non capisco che bisogno c'è di impostare la variabile GET id_cl dentro una sessione! Perché se è inutile sarebbe bene fare a meno di inizializzare una sessione
o te la porti dietro con un campo hidden o con sessione
 
Ciao! Grazie Borgo e Ale! O mamma e come faccio a portarmelo dietro tramite campo hidden?

Quale parte di codice dovrei modificare?

Grazie!
 
ciao
all'interno del form inserisci

<input name="nascosto" type="hidden" id="nascosto" value="<?php echo htmlspecialchars($_GET['id_cl']);?>">

poi dentro if(isset($_POST['invia']))
{
anche prima del post unita

$id_cl=$_POST['nascosto'];

se usi questo metodo togli tutto quello che riguarda le session e metterai
...WHERE id_cl= $id_cl"

un sistema vale l'altro (io preferisco session)
 
Sì, perdonami, è che ho riscritto lo script ma in testa avevo ancora quelli che avevo letto prima :D

Comunque, azzarderei dire, dal Notice che riceve dal parser PHP, che non definisce nell'URL la variabile id_cl e chiama lo script direttamente. Questo spiegherebbe anche la funzione mysql_fetch_array che va a vuoto con un Warning...
 
Grazie! Mamma...che casino!!! AIUTOOOO!!!! :hammer:

Ho messo il campo hidden, va una volta che mi esce il form e selezione unita A come faccio ad inviarlo se non ho il tasto/comando "invia"?

Grazie!!!
 
ciao, mi sembrava ovvio
il campo hidden devi metterlo dentro i tag
<form name="transfer" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input name="nascosto" type="hidden" id="nascosto" value="<?php echo htmlspecialchars($_GET['id_cl']);?>">
<label>Unit&agrave;:</label>

<select name="unit">
<option value="01">A</option>
<option value="02">B</option>
<option value="03">C</option>
<option value="04">D</option>
<option value="05">E</option>
</select>

<input type="submit" name="submit" value="Invia" />

</form>

o prima della select o dopo

aggiungi htmspecialcars anche a

htmspecialcars($_SERVER['PHP_SELF']);
 
Ho provato lo script di Alessandro gentilmente fornito:

PHP:
<?php
// inizializzo la sessione
session_start();
?>
<html>
    <head>
        <title>Trasferimento dati</title>
    </head>
    <body>
        <h1>Trasferimento dati</h1>
<?php
// dati per la connessione
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = '';

// effettua la connessione al database
$conn = mysql_connect($db_host, $db_user, $db_pass) or die('Errore nella connessione al database: '. mysql_error());
mysql_select_db($db_name, $conn) or die('Errore nella selezione del database: '. mysql_error());

// imposto la sessione dell'ID cliente
$_SESSION['id_cl'] = htmlspecialchars($_GET['id_cl']);

// controllo che il form sia stato inviato
if(isset($_POST['submit']))
{
    // valore del campo
    $unita = $_POST['unita'];
    
    // valori possibili
    $values = array('01', '02', '03', '04', '05');
    
    // controllo valore corretto
    if(!in_array($unita, $values))
        die('Non hai scelto l\'unit&agrave;, ripetere.');
    
    // recupero dei dati
    $query1 = mysql_query("SELECT * FROM inserimento_dati_cliente WHERE id_cl='{$_SESSION['id_cl']}'") or die('Query 1: '. mysql_error());
    $data = mysql_fetch_assoc($query1);
    
    // trasferimento nella tabella
    $sql = "INSERT INTO {$unita} (cognome,nome,data_di_nascita) VALUES ('{$data['cognome']}','{$data['nome']}','{$data['data_di_nascita']}')";
    $query2 = mysql_query($sql) or die('Query 2: '. mysql_error());
    
    // rimozione dati dalla tabella precedente
    $query = mysql_query("DELETE FROM inserimento_dati_cliente WHERE id_cl='{$_SESSION['id_cl']}'") or die('Query 3: '. mysql_error());
    
    // messaggio di successo
    echo '<p>Operazione eseguita con successo! Trasferimento riuscito.</p>';
}
else
{
?>
        <form name="transfer" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
            <label>Unit&agrave;:</label>
            
            <select name="unit">
                <option value="01">A</option>
                <option value="02">B</option>
                <option value="03">C</option>
                <option value="04">D</option>
                <option value="05">E</option>
            </select>
            
            <input type="submit" name="submit" value="Invia" />
        </form>
<?php
}
?>
    </body>
</html>

Però mi dà:
Notice: Undefined index: id_cl in c:\programmi\easyphp1-8\www\trasferimento.php on line 23

Notice: Undefined index: unita in c:\programmi\easyphp1-8\www\trasferimento.php on line 29
Non hai scelto l'unità, ripetere.
:hammer::hammer::hammer::hammer::hammer:
 
Ciao! Grazie per la risposta e per la pazienza! Questo è incasinatissimo per me cavolaccio!!! :hammer:

Ho messo così, solo che non ho capito dove devo mettere htmspecialcars($_SERVER['PHP_SELF']);

PHP:
<?php
// inizializzo la sessione
session_start();
?>
<html>
    <head>
        <title>Trasferimento dati</title>
    </head>
    <body>
        <h1>Trasferimento dati</h1>
<?php
// dati per la connessione
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = '';

// effettua la connessione al database
$conn = mysql_connect($db_host, $db_user, $db_pass) or die('Errore nella connessione al database: '. mysql_error());
mysql_select_db($db_name, $conn) or die('Errore nella selezione del database: '. mysql_error());

// imposto la sessione dell'ID cliente
$_SESSION['id_cl'] = htmlspecialchars($_GET['id_cl']);

// controllo che il form sia stato inviato
if(isset($_POST['submit']))
{
    // valore del campo
    $unita = $_POST['unita'];
    
    // valori possibili
    $values = array('01', '02', '03', '04', '05');
    
    // controllo valore corretto
    if(!in_array($unita, $values))
        die('Non hai scelto l\'unit&agrave;, ripetere.');
    
    // recupero dei dati
    $query1 = mysql_query("SELECT * FROM inserimento_dati_cliente WHERE id_cl='{$_SESSION['id_cl']}'") or die('Query 1: '. mysql_error());
    $data = mysql_fetch_assoc($query1);
    
    // trasferimento nella tabella
    $sql = "INSERT INTO {$unita} (cognome,nome,data_di_nascita) VALUES ('{$data['cognome']}','{$data['nome']}','{$data['data_di_nascita']}')";
    $query2 = mysql_query($sql) or die('Query 2: '. mysql_error());
    
    // rimozione dati dalla tabella precedente
    $query = mysql_query("DELETE FROM inserimento_dati_cliente WHERE id_cl='{$_SESSION['id_cl']}'") or die('Query 3: '. mysql_error());
    
    // messaggio di successo
    echo '<p>Operazione eseguita con successo! Trasferimento riuscito.</p>';
}
else
{
?>
  
<form name="transfer" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input name="nascosto" type="hidden" id="nascosto" value="<?php echo htmlspecialchars($_GET['id_cl']);?>">
<label>Unit&agrave;:</label>

<select name="unit">
<option value="01">A</option>
<option value="02">B</option>
<option value="03">C</option>
<option value="04">D</option>
<option value="05">E</option>
</select>

<input type="submit" name="submit" value="Invia" />

</form>




<?php
}
?>

Grazie!!!!!!!!!!!!!!!!!!!!!
 

Discussioni simili