phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa
phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo -
Amministratore di phpBB Italia
Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
-
Pieros
- Utente

- Messaggi: 8
- Iscritto il: 04/01/2013, 11:14
- Sesso: Maschio
- Server: Windows
Messaggio
da Pieros » 04/01/2013, 20:17
Ciao a tutti, premetto che sono alle prime armi in php e in SQL, comunque,
sto cercando di apportare una modifica ad un file in php dove ho cambiato la tabella e i campi di una query dove ho aggiunto anche "ORDER BY", purtroppo mi da un errore: la variabile in uscita "$aup_topay" risulta "0", se tolgo "ORDER BY" invece mi viene un valore a caso e non l'ultimo della lista che è quello che mi interessa; forse c'entra qualcosa la riga "$db->next_record()";
la query è questa:
Codice: Seleziona tutto
$q ="SELECT order_total FROM #__{vm}_orders `ORDER BY `order_id` DESC WHERE user_id='".$aup_vendoruserid."'";
$db->query($q);
$db->next_record();
$aup_cprice = $db->f("order_total");
$aup_cprice= round($aup_cprice,2);
$aup_topay = $aup_cprice * $paypcentage / 100 / $aupoint;
qualcuno mi puoi dare una mano per favore?
-
Pieros
- Utente

- Messaggi: 8
- Iscritto il: 04/01/2013, 11:14
- Sesso: Maschio
- Server: Windows
Messaggio
da Pieros » 04/01/2013, 22:06
Ho risolto scrivendo la prima riga così:
Codice: Seleziona tutto
$q ="SELECT order_total FROM #__{vm}_orders WHERE user_id=$aup_vendoruserid ORDER BY order_id DESC";
-
Pieros
- Utente

- Messaggi: 8
- Iscritto il: 04/01/2013, 11:14
- Sesso: Maschio
- Server: Windows
Messaggio
da Pieros » 05/01/2013, 9:52
Credevo di avere risolto, ma purtroppo non è così: da prove più accurate ho constatato che la query da ancora risultati sbagliati.
Spero sempre che qualcuno mi dia una mano.
Ciao.
Piero.
-
Carlo
- Amministratore

- Messaggi: 9957
- Iscritto il: 19/04/2009, 10:24
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 7.1.0
- Database: MySQL(i) 10.0.27-MariaDB-cll-lve
- Località: Puglia
-
Contatta:
Messaggio
da Carlo » 05/01/2013, 14:36
1) Se esegui la query direttamente nel database, per esempio con phpMyAdmin, ti ritornano sempre risultati errati?
2) Che intendi con risultati sbagliati?
-
Pieros
- Utente

- Messaggi: 8
- Iscritto il: 04/01/2013, 11:14
- Sesso: Maschio
- Server: Windows
Messaggio
da Pieros » 05/01/2013, 16:01
Proprio così, guardando la tabella del db in oggetto con phpadmin nel pannello di controllo del mio provider noto che il valore "$aup_topay" non è l'ultimo inserito ma uno a caso dei precedenti.
Se può essere utile posso copiare il pezzo di codice dove è inserita la query.
-
Pieros
- Utente

- Messaggi: 8
- Iscritto il: 04/01/2013, 11:14
- Sesso: Maschio
- Server: Windows
Messaggio
da Pieros » 05/01/2013, 16:13
Ho provato ad eseguire la query direttamente in phpadmin e mi da esattamente la tabella selezionata ed ordinata, quindi mi viene da pensare che l'errore dovrebbe stare nel metodo con cui viene preso il primo campo della tabella.
Ma dove?
-
Carlo
- Amministratore

- Messaggi: 9957
- Iscritto il: 19/04/2009, 10:24
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 7.1.0
- Database: MySQL(i) 10.0.27-MariaDB-cll-lve
- Località: Puglia
-
Contatta:
Messaggio
da Carlo » 05/01/2013, 22:30
1) C'è un ciclo per leggere un record alla volta?
2) Dal tuo codice sembra che usi una classe personalizzata per leggere dal database.
-
Pieros
- Utente

- Messaggi: 8
- Iscritto il: 04/01/2013, 11:14
- Sesso: Maschio
- Server: Windows
Messaggio
da Pieros » 07/01/2013, 16:29
Questa è la parte di codice in cui c'è la Mia modifica:
Codice: Seleziona tutto
$aupoint = 1; // As AUP doesn't care about decimals, we recommend setting the smallest unit the currency can handle
$naming = 0 ; // 0 for username , 1 for realname
$profileman = 0 ; // 0 for Community Builder, 1 for Jomsocial
$profileitemid = '89' ; // Set here your own user profiles itemid
$paypcentage = 100; // here 90 goes to the vendor so finally only 10 to the site owner.
// End parameters
if($naming==0) $naming = 'username';
elseif ($naming==1) $naming = 'name';
$aup_download_id = $db->f("download_id");
$aup_file_name = $db->f("file_name");
$aup_clientid = $db->f("user_id");
$aup_productid = $db->f("product_id");
/// Here we get the naming of the customer:
$q="SELECT ".$naming." FROM #__users WHERE id='".$aup_clientid."'";
$db->query($q);
$clientnaming = $db->loadResult();
if($profileman==0)
$clientprofileurl = JRoute::_('index.php?option=com_comprofiler&task=userProfile&user='.$aup_clientid.'&Itemid='.$profileitmeid);
elseif($profileman==1)
$clientprofileurl = JRoute::_('index.php?option=com_community&view=profile&userid='.$aup_clientid.'&Itemid='.$profileitemid);
// we get the first part of the sku from the file name which corresponds to the vendor userid
$aup_exploded = explode(".",$aup_file_name);
$aup_vendoruserid = $aup_exploded[0];
// we get the shopper group of the customer to determine the price he paid the product
// so we don't reward too much the vendor if the customer had a special price from his shoppergroup
$q ="SELECT shopper_group_id FROM #__{vm}_shopper_vendor_xref WHERE user_id='$aup_clientid'";
$db->query($q);
$db->next_record();
$aup_shoppergroup = $db->f("shopper_group_id");
// Mia modifica
[b$q ="SELECT order_total FROM #__{vm}_orders WHERE user_id=$aup_vendoruserid ORDER BY order_id DESC";
$db->query($q);
$db->next_record();
$aup_cprice = $db->f("order_total");
$aup_cprice= round($aup_cprice,2);
$aup_topay = $aup_cprice * $paypcentage / 100 / $aupoint;
////////////// Payment via AUP API//////////////////////
$informationdata = ''.$aup_file_name.' - Acquirente: '.$clientnaming.'';
$referencekey = 'Download ID: '.$aup_download_id;
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP))
{
require_once ($api_AUP);
$aupid = AlphaUserPointsHelper::getAnyUserReferreID( $aup_vendoruserid );
if ( $aupid ) AlphaUserPointsHelper::newpoints( 'plgaup_vm_payment2vendor', $aupid, $referencekey , $informationdata , $aup_topay );
}
// decrement the download_max to limit the number of downloads
$q ="UPDATE `#__{vm}_product_download` SET";
$q .=" `download_max`=`download_max` - 1";
$q .=" WHERE download_id = '" .$download_id. "'";
$db->query($q);
$db->next_record();
}
if ($end_date=="0") {
// Set the Download Expiry Date, so the download can expire after DOWNLOAD_EXPIRE seconds
$end_date=time('u') + DOWNLOAD_EXPIRE;
$q ="UPDATE #__{vm}_product_download SET";
$q .=" end_date=$end_date";
$q .=" WHERE download_id = '" . $download_id . "'";
$db->query($q);
$db->next_record();
}
Grazie anticipatamente.
Piero.
-
Pieros
- Utente

- Messaggi: 8
- Iscritto il: 04/01/2013, 11:14
- Sesso: Maschio
- Server: Windows
Messaggio
da Pieros » 08/01/2013, 13:23
Ho scoperto che la query è sintatticamente esatta e che l'errore è nella struttura logica del database, nel senso che il valore del risultato che sembrava casuale era invece dovuto alla struttura dei dati della tabella.
Per ottenere il giusto risultato ho individuato un'altra strada che necessita solo una query su due tabelle in relazione tra loro con un campo.
Pertanto, grazie veramente per l'aiuto che comunque mi ha indicato la giusta strada per la soluzione.
Ciao.
Piero.
Chi c’è in linea
Visitano il forum: Nessuno e 56 ospiti