Modifica numero

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
Ciao a tutti:
PHP:
<?php
//connessione al database
include('connect.php');

//sessione
include('sessione.php');

if(isset($_GET['id_gioc'])){ 

//verifico se il numero è usato
$maglia = $_POST['maglia'];
$id = $_GET['id_gioc'];
$new_id = explode("-", $id);
$team = $_SESSION['username'];
$tables = array('GIOC_giovani', 'GIOC_giovani_port', 'GIOC_adulti', 'GIOC_adulti_port');
foreach($tables as $table) {
$query = "SELECT * FROM {$table} WHERE squadra='$team' AND nome='$new_id[0]' AND cognome='$new_id[1]'";
$result = mysql_query($query) or die (mysql_error());

while($row = mysql_fetch_assoc($result)) {
$numero = $row['numero'];
//se il numero è già usato

if($maglia == $numero) { 
echo "Il numero è già assegnato ad un altro giocatore!";
exit;
}else{
// contiene la query SQL della tabella attuale 
$sql = "UPDATE {$table} SET numero='$maglia' WHERE squadra='$team' AND nome='$new_id[0]' AND cognome='$new_id[1]'";
mysql_query($sql) or die(mysql_error()); 
}
}
}
}
header("location:primavera.php");
?>

Praticamente da un select con numeri da 1 a 99 che fa da form...io invio i dati a questa pagina,chiamata modifica_numero.php la quale deve controllare se il numero è già usato e in caso questo lo sia..annulli l'operazione e mostri l'errore...il problema è che a me modifica sempre il numero e non restituisce mai questo errore!!Come mai?
 
C'è una cosa che non capisco, il file controlla che sia stato inviato un valore tramite GET, però tra gli input elaborati ci sono anche parametri inviati con POST, possibile?
 
Scusa ho incollato un file che avevo sul pc e non quello che ho sull'hosting...cmq il codice originale è uguale solamente che il $_post si trova prima dell'isset!
Il file controlla un valore inviato tramite "post" da un form e verifica se è presente sul DB,in caso sia presente blocca l'operazione e dà un errore...altrimenti si procede con la modifica!

sarebbe così,ma non funziona lo stesso:
PHP:
<?php
//connessione al database
include('connect.php');

//sessione
include('sessione.php');

$maglia = $_POST['maglia'];
if(isset($_GET['id_gioc'])){ 

//verifico se il numero è usato

$id = $_GET['id_gioc'];
$new_id = explode("-", $id);
 
Ultima modifica:
ciao
aahaa questo var_dump sconosciuto
intanto metti var_dump
PHP:
//.....
$numero = $row['numero']; 
var_dump($row['numero']); 
var_dump($maglia);
if($maglia == $numero) {
//.....
e verifica se quando vuoi che siano uguali siano effettivamente uguali
 
Mi sono reso conto di aver fatto una grandissima c......
Praticamente io estraggo il numero attuale del giocatore e verifico se il numero inviato è già usato!
Per cui se avevo
Luca Rossi N°10

L'unico modo in cui potevo visualizzare il messaggio "numero esistente" era che io inviassi 10,cmq ho risolto eliminando la condizione WHERE lasciando solo quella WHERE squadra=$team!

Grazie lo stesso a borgo che mi ci ha fatto ragionare! ;)
 
Scusate ancora,credevo che il problema fosse risolto,ma un mio utente mi ha fatto notare che c'è ancora lo stesso problema...con i var_dump ho capito anche l'errore!

Praticamente $numero corrispondeva a tutti i numeri dei giocatori di una squadra e quando mettevo la condizione ($maglia == $numero) per modificare il numero basta che un solo giocatore abbia il numero diverso da quello inserito per far avverare la condizione...

Ho provato così,ma ancora non va:
PHP:
<?php
//connessione al database
include('connect.php');

//sessione
include('sessione.php');

$maglia = $_POST['maglia'];
var_dump($maglia);
if(isset($_GET['id_gioc'])){ 

//verifico se il numero è usato

$id = $_GET['id_gioc'];
$new_id = explode("-", $id);
$team = $_SESSION['username'];
$tables = array('PORTIERI', 'GIOCATORI');
foreach($tables as $table) {
$query = "SELECT * FROM {$table} WHERE squadra='$team'";
$result = mysql_query($query) or die (mysql_error());

while($row = mysql_fetch_assoc($result)) {
$numero = $row['numero'];
$numeri = array('$numero');
//se il numero è già usato
if(in_array("$maglia", $numeri)) { 
echo "Numero esistente";
exit;
}else{
echo "Numero disponibile.";
//modifichiamo il numero del giocatore
$sql = "UPDATE {$table} SET numero='$maglia' WHERE squadra='$team' AND nome='$new_id[0]' AND cognome='$new_id[1]'";
mysql_query($sql) or die(mysql_error()); 
}
}
}
}
?>

Esempio:

Marco Rossi 1
Luigi Bianchi 2
Mirko Verdi 5

E modifico il numero di "Verdi" in 1,con lo script precedente l'if quando vedeva che il numero con "Bianchi" era diverso dava lo stesso l'ok per modificare il numero nonostante questo fosse uguale a quello di "Rossi"

Spero abbiate capito e potrete darmi ancora una volta una mano!0:)
 
ciao
non capisco esattamente quello che vorresti fare, ma credo (forse) qualcosina si.
prova in questo modo

PHP:
<?php
//.....
$numeri=array();
while($row = mysql_fetch_assoc($result)) { 
	$numeri[] = $row['numero']; //creo la matrice $numeri con tutti i numeri esistenti
}//fine del while
//se il numero è già usato 
//PERCHE' avevi messo l'uppa dentro il while?
if(in_array($maglia, $numeri)) {  
	echo "Numero esistente"; 
	exit; 
}else{ 
	echo "Numero disponibile."; 
	//modifichiamo il numero del giocatore 
	$sql = "UPDATE {$table} SET numero='$maglia' WHERE squadra='$team' AND nome='$new_id[0]' AND cognome='$new_id[1]'"; 
	mysql_query($sql) or die(mysql_error());  
} //fine if-else
//...
?>
 

Discussioni simili