Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-09-2010, 18:57   #1
me88
Junior Member
 
Iscritto dal: Sep 2010
Messaggi: 28
[MySql]: valori INT

Ho una tabella MySql con un campo intero.
Il valore di questo campo è impostato tramite una query che gli assegna un numero determinato da una funzione random.

se ad esempio questa funione genera il numero 2045 nel campo viene inserito 706!! come è possibile?
me88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-09-2010, 19:12   #2
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da me88 Guarda i messaggi
Ho una tabella MySql con un campo intero.
Il valore di questo campo è impostato tramite una query che gli assegna un numero determinato da una funzione random.

se ad esempio questa funione genera il numero 2045 nel campo viene inserito 706!! come è possibile?
Evidentemente viene ri-generato il numero prima dell'insert (se ti fai stampare la query...).

Prova a postare la query va
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 28-09-2010, 19:32   #3
me88
Junior Member
 
Iscritto dal: Sep 2010
Messaggi: 28
Quote:
Originariamente inviato da dojolab Guarda i messaggi
Evidentemente viene ri-generato il numero prima dell'insert (se ti fai stampare la query...).

Prova a postare la query va
<?php
include "contr_login.php";
$pagamento=$_GET['pagamento'];
$codice = $_GET['codice'];

$db_user = "root";
$db_password = "quindici";
$db_database = "sito";
$connessione=mysql_connect($db_host,$db_user,$db_password);

$nome=$_SESSION['user'];
$numordine = rand(1, 3000); <----------------

$recset=mysql_db_query("sito","SELECT * FROM carrello WHERE username='$nome' ",$connessione);
$numrec=mysql_num_rows($recset);

for ($cont=0; $cont<$numrec; $cont++)
{
$id=mysql_result($recset,$cont,"id");
$nome=mysql_result($recset,$cont,"username");

if($pagamento == "Bonifico Bancario")
{
$recset1=mysql_db_query("sito","INSERT INTO ordini (idord, username, numordine) VALUES('$id', '$nome', '$numordine')",$connessione);
$numrec1=mysql_affected_rows($connessione);
}
else
if($pagamento == "Carta di credito")
{
-------> $recset1=mysql_db_query("sito","INSERT INTO ordini (idord, username, codcarta, numordine) VALUES('$id', '$nome', '$codice', '$numordine')",$connessione);
$numrec1=mysql_affected_rows($connessione);

}
}

con le frecce ho indicato il codice interessato
me88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-09-2010, 20:02   #4
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Ok, pensavo che come rand usassi la funzione di MySQL (interna alla Query) e non una funzione PHP 'esterna'.

Allora, vediamo insieme: prima di tutto la funzione che usi, mysql_db_query() è depecrata a partire dalla versione 5.3 di PHP, quindi fai attenzione: meglio NON usare mai funzioni depecrate.

Puoi sostituire il tutto con l'abbinamento mysql_select_db(database, conn) e mysql_query(query); per eseguire in ordine, il 'select' del db e la query.

Per il tuo problema è strano: posso consigliarti di stamparti la var numordine PRIMA e DOPO i ciclo e dirmi che risultato ti torna? PS segnati anche il risultato nella query.

PS. sfruttare un rand() per creare numeri d'ordini non è il massimo, se ti capitano dentro due numeri uguali ? (difficile ma possibile). Usa piuttosto una funzione di controllo o un campo auto-incrementale. MySQL ha questo limite purtroppo, ti tornerebbe un errore e si bloccherebbe tutto.
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 28-09-2010, 21:10   #5
me88
Junior Member
 
Iscritto dal: Sep 2010
Messaggi: 28
Quote:
Originariamente inviato da dojolab Guarda i messaggi
Ok, pensavo che come rand usassi la funzione di MySQL (interna alla Query) e non una funzione PHP 'esterna'.

Allora, vediamo insieme: prima di tutto la funzione che usi, mysql_db_query() è depecrata a partire dalla versione 5.3 di PHP, quindi fai attenzione: meglio NON usare mai funzioni depecrate.

Puoi sostituire il tutto con l'abbinamento mysql_select_db(database, conn) e mysql_query(query); per eseguire in ordine, il 'select' del db e la query.

Per il tuo problema è strano: posso consigliarti di stamparti la var numordine PRIMA e DOPO i ciclo e dirmi che risultato ti torna? PS segnati anche il risultato nella query.

PS. sfruttare un rand() per creare numeri d'ordini non è il massimo, se ti capitano dentro due numeri uguali ? (difficile ma possibile). Usa piuttosto una funzione di controllo o un campo auto-incrementale. MySQL ha questo limite purtroppo, ti tornerebbe un errore e si bloccherebbe tutto.
so che potrebbe dare l'ultimo problema che hai spiegato, però per come ho impostato il database non mi venivano altre soluzioni. pensavo di controllare ogni volta se il numero era presente in tabella.
in pratica io inserisco ogni prodotto di un ordine nella tabella(ad esempio: se un ordine ha 5 prodotti io avrò 5 record con lo stesso numero d'ordine e riferito allo stesso utente), quindi se uso un campo autoincrementale questi record di uno stesso ordine avrebbero numero differente. Spero di essermi spiegata bene! hai altre soluzioni da suggerirmi?

Ho provato a stampare come hai detto, sia prima che dopo il ciclo i numeri sono uguali, vengono cambiati all'interno del database!
ti ringrazio intanto per la risposta!

Ultima modifica di me88 : 28-09-2010 alle 21:23.
me88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-09-2010, 21:38   #6
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da me88 Guarda i messaggi
so che potrebbe dare l'ultimo problema che hai spiegato, però per come ho impostato il database non mi venivano altre soluzioni. pensavo di controllare ogni volta se il numero era presente in tabella.
in pratica io inserisco ogni prodotto di un ordine nella tabella(ad esempio: se un ordine ha 5 prodotti io avrò 5 record con lo stesso numero d'ordine e riferito allo stesso utente), quindi se uso un campo autoincrementale questi record di uno stesso ordine avrebbero numero differente. Spero di essermi spiegata bene! hai altre soluzioni da suggerirmi?

Ho provato a stampare come hai detto, sia prima che dopo il ciclo i numeri sono uguali, vengono cambiati all'interno del database!
ti ringrazio intanto per la risposta!
Si una soluzione ci sarebbe: non usare l'incrementale :P.

Prima però concentriamoci sull'errore.
Ti sei mandato in stampa la query? Metti tutta la query i una variabile PHP e mandala in stampa se i valori PHP rimangono invariati nel percorso del ciclo allora sono invariati anche nella query, ergo il valore si cambia al momento dell'insert into di MYSQL; curiosità, che campo hai usato per la tabella?

Per il quesito, in questo caso fai bene.
Alternativa sarebbe fare una tabella 'relazioni' con id prodotto e codice ordine
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 29-09-2010, 00:52   #7
me88
Junior Member
 
Iscritto dal: Sep 2010
Messaggi: 28
Quote:
Originariamente inviato da dojolab Guarda i messaggi
Si una soluzione ci sarebbe: non usare l'incrementale :P.

Prima però concentriamoci sull'errore.
Ti sei mandato in stampa la query? Metti tutta la query i una variabile PHP e mandala in stampa se i valori PHP rimangono invariati nel percorso del ciclo allora sono invariati anche nella query, ergo il valore si cambia al momento dell'insert into di MYSQL; curiosità, che campo hai usato per la tabella?

Per il quesito, in questo caso fai bene.
Alternativa sarebbe fare una tabella 'relazioni' con id prodotto e codice ordine
Ho modificato il codice in questo modo (ho anche stampato la query):
<?php
include "contr_login.php";
$pagamento=$_GET['pagamento'];
$codice = $_GET['codice'];

$db_user = "root";
$db_password = "quindici";
$db_database = "sito";
$connessione=mysql_connect($db_host,$db_user,$db_password);

$nome=$_SESSION['user'];
$controlla= 0;
while ($controlla == 0)
{
$numordine = rand(1, 2000);
$recset2=mysql_db_query("sito","SELECT * FROM ordini WHERE numordine ='$numordine' ",$connessione);
$numrec2=mysql_num_rows($recset2);
if ($numrec2 == 0)
$controlla=1;
else
$controlla=0;
}


$recset=mysql_db_query("sito","SELECT * FROM carrello WHERE username='$nome' ",$connessione);
$numrec=mysql_num_rows($recset);

for ($cont=0; $cont<$numrec; $cont++)
{
$id=mysql_result($recset,$cont,"id");
$nome=mysql_result($recset,$cont,"username");

if($pagamento == "Bonifico Bancario")
{
$recset1=mysql_db_query("sito","INSERT INTO ordini (idord, username, numordine) VALUES('$id', '$nome', '$numordine')",$connessione);
$numrec1=mysql_affected_rows($connessione);
$recset3=mysql_db_query("sito","SELECT * FROM ordini WHERE username='$nome' ",$connessione);
$numrec3=mysql_num_rows($recset3);
for ($cont3=0; $cont3<$numrec3; $cont3++){
$idord=mysql_result($recset3,$cont3,"idord");
$username=mysql_result($recset3,$cont3,"username");
$numordine=mysql_result($recset3,$cont3,"numordine");
echo $idord.$username.$cogn.$numordine;}

}
else
if($pagamento == "Carta di credito")
{
$recset1=mysql_db_query("sito","INSERT INTO ordini (idord, username, codcarta, numordine) VALUES('$id', '$nome', '$codice', '$numordine')",$connessione);
$numrec1=mysql_affected_rows($connessione);

}
}

echo "<h3>Greazie ".$nome." il tuo ordine &egrave stato inoltrato correttamente!</h3>";
echo "<h2>Ricorda il tuo numero di ordine: ".$numordine."</h2>";
echo "<p1>Riceverai entro poche ore un sms di conferma al numero di cellulare da te indicato. Entro una settimana lavorativa dalla conferma riceverai i prodotti.
Affinch&egrave possa andare tutto a buon fine ti invitiamo a prendere visione del regolamento tramite la sezione 'Modalit&agrave di consegna' e 'Modalit&agrave di pagamento'</p1>";
mysql_close($connessione);
?>
</body>
</html>

Non so come mai, ma adesso i numeri sono riportati correttamente in tabella, xo ho altri due problemi:
1. se ho due ordini diversi dello stesso cliente e con uno stesso prodotto la query non viene eseguita;
2. se eseguo un nuovo ordine con un cliente differente la query viene eseguita solo se la tabella ordini risulta vuota.

non capisco il motivo dal momento in cui non ho fatto nessuna distinzione tra tabella piena o vuota!!
me88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-09-2010, 01:10   #8
me88
Junior Member
 
Iscritto dal: Sep 2010
Messaggi: 28
Ho risolto!!!
Sarà l'ora tarda, ma non mi ero accorda che avevo definito come chiave primaria idord(che sarebbe l'id del prodotto, dovrei cambiare il nome effettivamente) e quindi logicamente non poteva avere più valori uguali in record differenti! grazie cmq per la pazienza!
me88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-09-2010, 08:20   #9
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da me88 Guarda i messaggi
Ho risolto!!!
Sarà l'ora tarda, ma non mi ero accorda che avevo definito come chiave primaria idord(che sarebbe l'id del prodotto, dovrei cambiare il nome effettivamente) e quindi logicamente non poteva avere più valori uguali in record differenti! grazie cmq per la pazienza!
Assolutamente no, è la limitazione che ti dicevo di MySQL .
Devi fare molta attenzione a questo quando lavori con MySQL.

PS. La prossima volta che 'posti' del codice, usa i TAG specifici del Forum, eviti il mal di testa a tutti noi
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 29-09-2010, 09:48   #10
me88
Junior Member
 
Iscritto dal: Sep 2010
Messaggi: 28
Quote:
Originariamente inviato da dojolab Guarda i messaggi
PS. La prossima volta che 'posti' del codice, usa i TAG specifici del Forum, eviti il mal di testa a tutti noi
ok!

ho un'altima domanda e poi non rompo più! mi sono accorta che tutto funziona perfettamente nel secondo if, mentre ho un piccolo problema nel primo. mi inserisce correttamente il record xo come prima lo copia due volte e con un codice ordine differente. ho provato a stampare il numero di record che vengono inseriti e mi da uno, ma poi effettivamente ce ne sono due in tabella!
me88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-09-2010, 09:58   #11
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da me88 Guarda i messaggi
ok!

ho un'altima domanda e poi non rompo più! mi sono accorta che tutto funziona perfettamente nel secondo if, mentre ho un piccolo problema nel primo. mi inserisce correttamente il record xo come prima lo copia due volte e con un codice ordine differente. ho provato a stampare il numero di record che vengono inseriti e mi da uno, ma poi effettivamente ce ne sono due in tabella!
I casi possono essere tre:

a) esiste già il record nel DB, MySQL lo ignora e lo re-inserisce (cosa possibile ma non mi sembra il caso, controlla comunque).
b) il ciclo viene eseguito n+1 volte del previsto.
c) la seconda condizione (IF) viene ritenuta vera 2 volte.

Controlla.
Per controlla intendo, fai il DEBUG.
Ricordati, il debug è il miglior nemico di un programmatore ti fa sempre incazzare
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 29-09-2010, 11:53   #12
me88
Junior Member
 
Iscritto dal: Sep 2010
Messaggi: 28
Quote:
Originariamente inviato da dojolab Guarda i messaggi
I casi possono essere tre:

a) esiste già il record nel DB, MySQL lo ignora e lo re-inserisce (cosa possibile ma non mi sembra il caso, controlla comunque).
b) il ciclo viene eseguito n+1 volte del previsto.
c) la seconda condizione (IF) viene ritenuta vera 2 volte.

Controlla.
Per controlla intendo, fai il DEBUG.
Ricordati, il debug è il miglior nemico di un programmatore ti fa sempre incazzare
ho provato a riguardare tutto in base a quello che mi hai detto e non penso sia uno dei tre casi possibili:
a) anche con la tabella vuota inserisce sempre due volte;
b) no perchè stampando la query mi dice correttamente che ha inserito una sola riga e poi se eseguisse più volte il ciclo credo che dovrebbe dare lo stesso problema anche sul secondo if;
c) avevo pensato anche io a quello ma evidentemente non è dato che ho provato a togliere il secondo if (quello corretto) e il problema non cambia.

penso a questo punto che lo lascerò così sperando che il prof non se ne accorga!
ho provato a fare la query da mysql ed è corretta..
me88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-09-2010, 11:56   #13
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da me88 Guarda i messaggi
ho provato a riguardare tutto in base a quello che mi hai detto e non penso sia uno dei tre casi possibili:
a) anche con la tabella vuota inserisce sempre due volte;
b) no perchè stampando la query mi dice correttamente che ha inserito una sola riga e poi se eseguisse più volte il ciclo credo che dovrebbe dare lo stesso problema anche sul secondo if;
c) avevo pensato anche io a quello ma evidentemente non è dato che ho provato a togliere il secondo if (quello corretto) e il problema non cambia.

penso a questo punto che lo lascerò così sperando che il prof non se ne accorga!
ho provato a fare la query da mysql ed è corretta..
La condizione del for, < o <= ?
Controlla bene questo.

PS. fai l'Insubria di Varese per caso?
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 29-09-2010, 12:16   #14
me88
Junior Member
 
Iscritto dal: Sep 2010
Messaggi: 28
Quote:
Originariamente inviato da dojolab Guarda i messaggi
La condizione del for, < o <= ?
Controlla bene questo.

PS. fai l'Insubria di Varese per caso?

no studio a parma!
me88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Tory Bruno ha lasciato la società...
L'immagine di Natale del telescopio spaz...
STMicroelectronics e SpaceX proseguono l...
Numeri da record, Xiaomi distribuisce ol...
BitLocker accelerato via hardware: Micro...
Blue Origin prosegue lo sviluppo dei lan...
Moore Threads: nuove GPU 15 volte pi&ugr...
Steam diventa esclusivamente 64-bit: Val...
La Corte Suprema restituisce a Elon Musk...
X lancia Creator Studio su mobile: nuovi...
Dieci anni fa SpaceX fece atterrare per ...
POCO M8 e M8 Pro arriveranno nel 2026: e...
Caos Formula 1: il motore Mercedes &egra...
Tariffe nazionali per le chiamate e gli ...
Tassa chilometrica non solo per elettric...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:36.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v