errore nel controllo di un numero

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
Salve, ho fatto uno script solo che quando provo ad inviare un messaggio mi da sempre l'id sbagliato, cioè io faccio inserire un id, se l'id è maggiore degli id esistenti nella tabella gli da un messaggio in cui dice che non esiste nessun utente con quell'id, solo che quando metto un id esistente mi dà sempre quell'errore:
PHP:
		<?php
			$countiscritti=mysql_query("SELECT id_utente FROM iscritti");
			$cont=mysql_num_rows($countiscritti);
			$destinatario=$_POST['destinatario'];
			$mittente=$_POST['mittente'];
			$messaggio=strip_tags($_POST['messaggio']);
			$data=$_POST['data'];
			if (($messaggio=="") or ($destinatario==""))
			   echo '<br><b><font color=red>Devi compilare tutti i campi</font></b><br><a href=\"inviamessaggio.php\">Ritorna Indietro</a>';
			else {
				if ($mittente > $cont) {
					$query="Insert into `messaggi` (`mittente`,`destinatario`,`messaggio`,`data`) VALUES ('$mittente','$destinatario','".addslashes($messaggio)."','$data')";
					$result=mysql_query($query) or die(mysql_error());
					if($result==1)
						echo"<br><b><font color=green>Messaggio inviato con successo</font></b>";
					else
						echo"<br><b><font color=red>Messaggio non inviato</font></b><br><a href=\"inviamessaggio.php\">Ritorna Indietro</a>";
				}
				else echo '<br><b><font color=red>Devi inserire un\'id esistente</font></b><br><a href="inviamessaggio.php">Ritorna Indietro</a>';
			}
		?>
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
if($mittente > $cont) Non è che dovevi fare cosi? if($mittente <= $cont)

Così invia il messaggio solo se il mittente è uguale o inferiore al conto, perciò se esiste
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
E se per qualche motivo salti un id nella registrazione degli utenti?

forse ti conviene fare in questo modo:

PHP:
// cerchi l'id scelto nella tabella
$countiscritti = mysql_query("SELECT id_utente FROM iscritti WHERE id_utente = " . (int) $_POST['mittente']);
    // se lo trovi
    if (mysql_num_rows($countiscritti) == 1) {
        //  fai la insert
    else
       // altrimenti mostri il messaggio
 

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
mi dà errore, ho visto cosa mi da con l'echo ed esce fuori questo:
Resource id #8

PHP:
		<?php
			$destinatario=$_POST['destinatario'];
			$mittente=$_POST['mittente'];
			$messaggio=strip_tags($_POST['messaggio']);
			$data=$_POST['data'];
			if (($messaggio=="") or ($destinatario==""))
			   echo '<br><b><font color=red>Devi compilare tutti i campi</font></b><br><a href=\"inviamessaggio.php\">Ritorna Indietro</a>';
			else {
				$countiscritti = mysql_query("SELECT id_utente FROM iscritti WHERE id_utente = " . (int) $_POST['mittente']); 
				if (mysql_num_rows($countiscritti) == 1) {
					echo $countiscritti;
					$query="Insert into `messaggi` (`mittente`,`destinatario`,`messaggio`,`data`) VALUES ('$mittente','$destinatario','".addslashes($messaggio)."','$data')";
					$result=mysql_query($query) or die(mysql_error());
					if($result==1)
						echo"<br><b><font color=green>Messaggio inviato con successo</font></b>";
					else
						echo"<br><b><font color=red>Messaggio non inviato</font></b><br><a href=\"inviamessaggio.php\">Ritorna Indietro</a>";
				}
				else echo '<br><b><font color=red>Devi inserire un\'id esistente</font></b><br><a href="inviamessaggio.php">Ritorna Indietro</a>';
			}
		?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
e se provi cosi cosa ti stampa in $q?

PHP:
$q = "SELECT id_utente FROM iscritti WHERE id_utente = " . (int) $_POST['mittente'];
    $countiscritti = mysql_query($q);
    echo $q;
    if (mysql_num_rows($countiscritti) == 1) {
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
e se provi cosi cosa ti stampa in $q?

PHP:
$q = "SELECT id_utente FROM iscritti WHERE id_utente = " . (int) $_POST['mittente'];
    $countiscritti = mysql_query($q);
    echo $q;
    if (mysql_num_rows($countiscritti) == 1) {
O.ò stamperà il valore di $q no? SELECT id_utente FROM iscritti WHERE id_utente = + Il valore int del mittente


Edit: non ho ben capito, cosa vorresti vedere con l'echo?
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Si, in effetti ha più senso scrivere cosi;

PHP:
if(!$countiscritti){
        die("Errore:<br/> $q <br/>" . mysql_error());
    }
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
strano!
puoi ripostarlo per intero?
 

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
questo è tutto il codice:
PHP:
<?php 
	// inizializzazione della sessione
	session_start();
	// inclusione del file di funzione
	require_once __DIR__ . '/functions.php'; 
	// istanza della classe
	$iscrizione = new Iscrizioni();
	// chiamata al metodo per la verifica della sessione
	if (!$iscrizione->verifica_sessione())
	{
	  //redirect in caso di sessione non verificata
	  header("location:errore2.php");
	  exit ();
	}
	// identificativo univoco dell'utente
	$id_utente = $_SESSION['id_utente'];

	require_once __DIR__ . '/header.php'; 

?>
 <!-- Content -->
  <div id="content">
  	<div id="conteiner">
		<div align="center">
		<?php
			$destinatario=$_POST['destinatario'];
			$mittente=$_POST['mittente'];
			$messaggio=strip_tags($_POST['messaggio']);
			$data=$_POST['data'];
			if (($messaggio=="") or ($destinatario==""))
			   echo '<br><b><font color=red>Devi compilare tutti i campi</font></b><br><a href=\"inviamessaggio.php\">Ritorna Indietro</a>';
			else {
				$q = "SELECT id_utente FROM iscritti WHERE id_utente = " . (int) $_POST['mittente'];
				$countiscritti = mysql_query($q);
				if (mysql_num_rows($countiscritti) == 1) {  
					$query="Insert into `messaggi` (`mittente`,`destinatario`,`messaggio`,`data`) VALUES ('$mittente','$destinatario','".addslashes($messaggio)."','$data')";
					$result=mysql_query($query) or die(mysql_error());
					if($result==1)
						echo"<br><b><font color=green>Messaggio inviato con successo</font></b>";
					else
						echo"<br><b><font color=red>Messaggio non inviato</font></b><br><a href=\"inviamessaggio.php\">Ritorna Indietro</a>";
				}
				else echo '<br><b><font color=red>Devi inserire un\'id esistente</font></b><br><a href="inviamessaggio.php">Ritorna Indietro</a>';
			}
		?>
		</div>
  	</div>
    <?php require_once __DIR__ . '/sidebar.php'; ?>
  </div>
  
<?php require_once __DIR__ . '/footer.php'; ?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
non vedo errori,

strano che ti dia cmq il risultato

prova a fare un var_dump di quello che restituisce mettendo * nella query

PHP:
$q = "SELECT * FROM iscritti WHERE id_utente = " . (int) $_POST['mittente'];
    $countiscritti = mysql_query($q);
    var_dump(mysql_fetch_array($countiscritti));

magari capiamo dove sta il problema
 

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
mi dà questo:
Codice:
array
  0 => string '1' (length=1)
  'id_utente' => string '1' (length=1)
  1 => string 'admin' (length=5)
  'nome_utente' => string 'admin' (length=5)
  2 => string 'd033e22ae348aeb5660fc2140aec35850c4da997' (length=40)
  'password' => string 'd033e22ae348aeb5660fc2140aec35850c4da997' (length=40)
  3 => string 'Paolo' (length=5)
  'nome_reale' => string 'Paolo' (length=5)
  4 => string 'admin' (length=5)
  'email' => string 'admin' (length=5)
  5 => string 'A' (length=1)
  'livello' => string 'A' (length=1)
  6 => string 'images/avatar/Hydrangeas.jpg' (length=28)
  'avatar' => string 'images/avatar/Hydrangeas.jpg' (length=28)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Se digiti id 12 ti mette nel post id 1?

PHP:
'id_utente' => string '1' (length=1)


forse è meglio controllare il value del campo nel form
 

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
ho ricontrollato, ed ho visto l'errore:
errato:
PHP:
$countiscritti = mysql_query("SELECT * FROM iscritti WHERE id_utente = " . (int) $_POST['mittente']) or die(mysql_error());
giusto:
PHP:
$countiscritti = mysql_query("SELECT * FROM iscritti WHERE id_utente = " . (int) $_POST['destinatario']) or die(mysql_error());

io andavo ogni volta a controllare il mio id cioè chi invia il messaggio e non chi lo riceveva xD
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Errore Cannot read property 'childNodes' of undefined per mancanza nodo nel file xml XML 6
A [PHP] ERRORE QUANDO CAMBIO SLUG NEL CMS e REWRITE PHP 6
novello88 Joomla su VPS OVH: non funziona nulla ma nessun errore nel log Server Dedicati e VPS 1
M errore lettura data nel mysql con funzione Where PHP 1
R Errore nel CSS impossibile HTML e CSS 2
felino [Mod_rewrite] Errore nel rewrite Apache 2
L Errore nel passare più valori tra pagine php PHP 10
Shyson Stampa data nel db ma da errore PHP 7
felino Errore nel visualizzare il nome del mese PHP 2
Emix errore nel calcolo PHP 4
Jam1 Errore nel creare miniature da immagini caricate su un mio form PHP 0
D Errore incomprensibile nel codice Javascript 2
valient13 Errore nel echo PHP 2
asevenx errore con l'inserimento dei dati nel database, campi vuoti Classic ASP 1
T errore nel recupero di un campo da db ASP.NET 1
I Errore nel ridimensionamento di una <table> in un <div> HTML e CSS 5
I SQLDatasource errore nel server ASP.NET 0
T Errore nel link "Torna Indietro" [era:Funzione javascript] Javascript 0
T errore asp (inserimento dati nel db) Classic ASP 1
S errore nel compilare una drop down list ASP.NET 0
K Inserimento query Errore 1366 PHP 4
F errore 1062 su campo nuovo MySQL 4
N Errore interno Access MS Access 2
R mi da errore dove inizia il while PHP 1
R Recupero di permalink di un sito che è stato eliminato per errore WordPress 5
R Yoast SEO errore semafori sempre rossi SEO e Posizionamento 0
S Visualizza l'errore di creazione in MSSQL Database 4
simgia Cordova errore quando cerco di emulare o creare la app Sviluppo app per Android 2
P Errore nell'indirizzo degli elementi HTML e CSS 2
Jensen Errore di sintassi con DELETE PHP 3
H Errore su array associativo PHP 1
FDF182 ERRORE 1292 PHP 4
P errore 404 con javascript Javascript 2
felino Windows 7: errore 80072EFE su Windows Update Windows e Software 1
A errore http://datatables.net/tn/7 PHP 4
M Errore visualizzazione meta tag title e description SEO e Posizionamento 1
A Errore durante il salvataggio Photoshop 0
M Errore configurazione motion detection nvr Hikvision DS-7616 IP Cam e Videosorveglianza 0
voldemort [c] Errore di segmentazione (core dump creato) C/C++ 1
T SSD - errore sistema Hardware 2
R Navigare sito con cURL, mi restituisce errore PHP 0
L File CSV con app inventor da errore Sviluppo app per Android 2
A Errore visualizzazione selezione testo Photoshop 0
I Postman 400 Errore di richiesta non valida Programmazione 0
S Errore PHP - Notice: Undefined index ... PHP 14
U Campo vuoto data errore Fatal error: PHP 2
R Errore UPDATE tabella mysql PHP 1
R W10 Segnalazione di errore su terminale USB Windows e Software 0
G non riesco a capire quale sia l'errore [SQL] MySQL 2
I Errore 80040220 nella newsletter con paginazione Classic ASP 0

Discussioni simili