[PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli

maxnegri

Utente Attivo
12 Ott 2004
87
0
6
Salve a tutti,
ho le seguenti sessioni nel carrello dove sono presenti più prodotti di diverse aziende
PHP:
foreach ($_SESSION["cart_products"] as $cart_itm)
        {
        $product_code = $cart_itm["product_code"];

// vorrei prelevare l'id delle aziende e creo la query

 $sql = "SELECT  coupon_shop FROM coupons_coupons WHERE  coupon_id= $product_code ORDER BY coupon_shop ASC ";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $couponshop=$row['coupon_shop'];
 
//STAMPO A VIDEO L'ID AZIENDA echo"SHOPID $couponshop";
}
}
}
Il problema che riscontro che quando ci sono più prodotti in sessione della stessa azienda ottengo l'id dell'azienda duplicato per quanti prodotti sono presenti in sessione.
Come posso prelevare solo l'id unico dell'azienda ?
 
Ultima modifica:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@maxnegri
Dal regolamento generale del forum:
2.7 E' vietato aprire discussioni con titoli generici del tipo "Aiuto", "Help" o "Rispondete subito". Alle discussione deve essere assegnato un titolo che ne renda immediatamente comprensibile il contenuto utilizzando, ove possibile, la giusta terminologia tecnica. Così facendo si rende più facile agli altri utenti il compito di trovare immediatamente le discussioni a cui parteciapre.
Pertanto ti chiedo di leggere attentamente il regolamento generale del forum e quello della sezione dove posti!
Inoltre di chiedo di modificare il titolo della discussione in modo adeguato

In più:
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code.gif
quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box inserisci 2.png.JPG

Quindi ti prego ancora di leggere attentamente il regolamento generale del forum e quello di sezione dove posti.

Grazie infinite
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
visto che estrai il solo "coupon_shop" puoi inserire la clausola "distinct"
Codice:
SELECT DISTINCT coupon_shop FROM coupons_coupons WHERE ….
 

maxnegri

Utente Attivo
12 Ott 2004
87
0
6
Si, conosco la funzione DISTINCT ma non va perché la query si trova in un ciclo foreach e mi stampa comunque l'id coupon_shop per quanti prodotti sono stati aggiunti al carrello di una determinata azienda.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
é evidente che non ho capito il problema e quindi non so cosa suggerirti,
attendi che qualche altra persona capisca meglio di me
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
se non hai ancora risolto, qualche nota sul tuo codice,

mi sembra corretto che,
leggendo prodotti diversi ( $_SESSION["cart_products"] as $cart_itm ),
a ciascun prodotto siano associati i suoi possibili fornitori ( coupon_shop )
tra cui scegliere per la possibile fornitura,
esponendo a video quelli specifici del prodotto

mi sembra errato che nel ciclo while estrai solo l'ultimo fornitore, perdendo tutti i precedenti, vedi,
$couponshop=$row['coupon_shop'];
che rimane valorizzato con l'ultimo elemento letto

la domanda che poni mi sembra incoerente con il codice postato
se vuoi che il codice operi in maniera diversa,
dovresti riformulare la domanda in modo da spiegare come deve funzionare l'intero codice, non la singola query


se invece hai già risolto, la curiosità mi spinge a chiederti di postare il codice modificato
 

maxnegri

Utente Attivo
12 Ott 2004
87
0
6
Ciao, no non ho risolto.
Nella schermata del carrello dove, se aggiunti, possono essere presenti prodotti di diverse aziende.
Di seguito il codice
PHP:
    foreach ($_SESSION["cart_products"] as $cart_itm)
        {

            $product_code = $cart_itm["product_code"];
}

Con il product_code visualizzo tutti i prodotti aggiunti al carrello.
Nella tabella dei prodotti ho il campo coupon_shop che fa riferimento all'azienda. Il mio problema adesso è quello di prelevare le aziende (coupon_shop) con il riferimento del product_code che sta nel (foreach) dei prodotti aggiunti e quando lo faccio i risultati sono duplicati per quanti prodotti sono stati aggiunti al carrello.

Es. ho tre prodotti di un'azienda ed uno di un'altra? Il risultato che visualizzo è:

SHOPID 1
SHOPID 1
SHOPID 1
SHOPID 3

Come faccio ad eliminare i risultati duplicati ed ottenere i singoli ID?

SHOPID 1
SHOPID 3

Spero di essermi spiegato bene. Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
potresti rendere $couponshop un'array
PHP:
$couponshop = array();
foreach ($_SESSION["cart_products"] as $cart_itm)
…...
$couponshop[]=$row['coupon_shop'];

al termine del ciclo rendere i valori nell'array univoci e visualizzarli

concordi ?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
puoi fare qualcosa di simile …
PHP:
$couponshopX = array();

foreach ($_SESSION["cart_products"] as $cart_itm)
{
    $product_code = $cart_itm["product_code"];

    $sql = "SELECT  coupon_shop FROM coupons_coupons WHERE  coupon_id= $product_code ORDER BY coupon_shop ASC ";
    $result = $conn->query($sql);

    if ($result->num_rows > 0)
    {
        while($row = $result->fetch_assoc())
        {
            $couponshopX[]=$row['coupon_shop'];
        }
    }
}
if (count($couponshopX) > 0)
{
    $couponshop = array_unique($couponshopX);

    //STAMPO A VIDEO L'ID AZIENDA echo"SHOPID $couponshop";
 

maxnegri

Utente Attivo
12 Ott 2004
87
0
6
Mi stampa solo SHOPID Array.
Ho fatto un test con 3 prodotti di un'azienda, uno di un'altra ed ancora uno di un'altra azienda.
Se poi stampo $couponshop[0] mi da solo il primo id. SHOPID 1
Forse devo fare un explode ?
 

maxnegri

Utente Attivo
12 Ott 2004
87
0
6
Si adesso funziona.
Ho fatto così:

PHP:
foreach ($couponshop as $couponshop)
{
    echo $couponshop , '<br>';
}

e mi stampa gli id unici delle aziende.
Credo sia corretto. Grazie mille!
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] Eliminare doppioni array e rinumerare le posizioni PHP 2
maxnegri Eliminare url index.php con variabili e reindirizzare alla home del sito PHP 7
C [PHP] eliminare elemento da un array multidimensionale PHP 9
trattorino [PHP] Eliminare piu frasi PHP 1
C [PHP] RISOLTO - Eliminare elementi duplicati da array multidimensionale PHP 1
Monital [PHP] Eliminare la Barra di caricamento file alla fine dell'esecuzione PHP 11
asevenx [PHP] Eliminare record automaticamente dopo una certa data PHP 12
S Eliminare immagine tramite php PHP 14
S non riesco ad eliminare dei caratteri in PHP - Excel PHP 10
F eliminare post php / mysql PHP 5
F eliminare un record grazie a PHP PHP 11
V Eliminare dati da db mysql con php PHP 14
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3

Discussioni simili