[PHP] Priorità annunci nel listato

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
50
Ciao a tutti,
ho un piccolo problema che però non riesco a capire come e dove mettere le mani:

Ho una query che mi restituisce i risultati del db correttamente, ora però ho l necessità di avere insieme dei risultati con priorità.

Ho creato nel db un campo enum con numero di default 0 e poi 1,2,3 io vorrei in poche parole che se nello stesso listato ci siano degli annunci in categoria 1,2,3 si vedano nel listato con priorità su quello che è a 0, nell'ordine 0, 1. 2, 3 se non è fattibile mi basterebbe anche solo 0, 1

vi posto sotto la query con qui recupero i risultati cosi magari qualcuno di voi esperti può darmi una mano.

PHP:
<?php 
//includiamo il file della classe 
@require("paginazione.php"); 

//connettiamoci a MySQL e selezioniamo il database 
class MySQL 
{  
function MySQL()  
{  
require "db_connect.php";
}  
}  

$data = new MySQL(); 

// istanziamo la classe per l'impaginazione 
$p = new Paging; 
$max = 6; 
$inizio = $p->paginaIniziale($max); 
$query_count = @mysql_query(
"SELECT * FROM
     pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id )
     INNER JOIN provincia ON (pompe.provinciaid=provincia.id )
     INNER JOIN categoria ON (pompe.categoriaid=categoria.id )
     INNER JOIN users ON (pompe.user_id=users.id)
       
WHERE
 tipologia.tipologia='pluto' AND categoria.categoria='topolino'  AND provincia.provincia='Forli-Cesena' ORDER BY `id_annunci` DESC ")
   
     or die (mysql_error()); 
$count = @mysql_num_rows($query_count) or die (mysql_error()); 

$pagine = $p->contaPagine($count, $max); 

$obj_titolo = @mysql_query(
"SELECT * FROM
     pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id )
     INNER JOIN provincia ON (pompe.provinciaid=provincia.id )
     INNER JOIN categoria ON (pompe.categoriaid=categoria.id )
     INNER JOIN users ON (pompe.user_id=users.id)
       
WHERE
 tipologia.tipologia='pluto' AND categoria.categoria='topolino' AND provincia.provincia='Forli-Cesena' ORDER BY `id_annunci` DESC LIMIT ".$inizio.",".$max) or die (mysql_error());

while ($row = mysql_fetch_array($obj_titolo)) {  

$click_annuncio = $row['click_annuncio']; 
$id_annunci = $row['id_annunci']; 
$user_id = $row['id']; 
  $messaggio = substr($row['messaggio'], 0, 200);  
  $mq = $row['mq'];  
  $tipologia = $row['tipologia']; 
  $categoria = $row['categoria'];
  $provincia = $row['provincia'];
  $titolo = $row['titolo']; 
     $tipo = $row['tipo']; 
   $locali = $row['locali']; 
  $username = $row['username']; 
  $email = $row['email']; 
    $cliente = $row['cliente']; 
       $logo_cliente = $row['logo_cliente']; 
       $titolo_link = preg_replace('<br>', '', $titolo);
    $titolo_link = preg_replace('/[^a-z ]+/i', '', $titolo_link); 
   $titolo_link = preg_replace('/\s+/', '-', $titolo_link);        
  $titolo_link = strtolower ($titolo_link);  
  $provincia = $row['provincia'];        
   
   $nome_file = $row['nome_file']; 
  $tipo_file = $row['tipo_file']; 
  $dati_file = $row['dati_file']; 
   
  $nome_file_vero = $row['nome_file_vero']; 
  $tipo_file = $row['tipo_file']; 
  $dati_file = $row['dati_file']; 
//recuperiamo i dati da stampare 



// stampo i dati

  echo "<a href=\"$titolo_link-$id_annunci\"/>$titolo</a><br /><br /> "; 
        echo "  <p><a href=\"$titolo_link-$id_annunci\"/><img src='immagini2ricette.php?id_annunci=$id_annunci' name='$nome_file' alt'$nome_file' title='$titolo' class='img-responsive'  /></a></p>";
       
        echo "<h5>$messaggio ...</h5><br />";
         echo "<h5>$tipologia | $categoria | $cittas </h5><br /><br /> ";                
} 


$lista = $p->listaPagine($_GET['p'], $pagine); 
echo $lista . "<br>"; 

$navigatore = $p->precedenteSuccessiva($_GET['p'], $pagine); 
echo $navigatore; 
?>
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non so se ho capito, in ogni caso penso sia sufficiente modificare
Codice:
ORDER BY enum DESC, id_annunci DESC
mettendo la condizione DESC, verranno ordinati mettendo prima 3 in successione gli altri ed ultimo lo zero
 

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
50
Ciao @marino51 ,
grazie mille per la risposta, se modifico da ORDER BY `id_annunci` DESC in ORDER BY enum DESC, id_annunci DESC, mi da il seguente errore:

Unknown column 'enum' in 'order clause'

se invece al posto di enum, metto il nome del campo: attivo mi da

Column 'attivo' in order clause is ambiguous
 

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
50
Ciao,
mancavano gli apici :)

in ogni caso se anche metto gli apici con enum o con il nome del campo del db attivo non mi da errori, ma gli annunci rimangono sempre come da inserimento, e non come da ordine del campo attivo (enum 0,1,2,3)
 

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
50
Ciao,
nessuno riesce ad aiutarmi ???

ho provato anche a cambiare i campi del campo Attivo (enum) con lettere e non con numeri, ma il risultato è sempre il medesimo, anzi a differenza del suggerimento di @marino51 in questo caso mi prende l'ordine del DESC corretto, riordinandomeli dal più nuova al più vecchio, ma in ogni caso le priorità non me le prende :(

ho provato anche con FIELD ma niente sto impazzendo :(

PHP:
SELECT * FROM pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id ) INNER JOIN
 provincia ON (pompe.provinciaid=provincia.id ) INNER JOIN categoria
ON(pompe.categoriaid=categoria.id ) INNER JOIN users ON (pompe.user_id=users.id)
 WHERE tipologia.tipologia='Toilette' AND categoria.categoria='cani'  ANDprovincia.provincia='Milano' 
ORDER BY 'attivo'='normale' DESC, 'attivo'='top' DESC, 'attivo'='supertop' DESC, 'attivo'='premium' DESC, id_annunci DESC
 

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
50
Grazie lo stesso a tutti ho risolto da solo.

Posto qui sotto la risoluzione cosi se qualcuno prima o poi avesse lo stesso problema, potrebbe risolvere cosi:

Ho creato un nuovo tabella con 2 campi id autoincrement ecc.. e prioryty

ho creato all'interno 4 risultati
normale
uno
due
tre

Ho aggiunto alla tabella principale (quella dei risultati un campo priorytyid enum con valore predefinito (normale) = 1

PHP:
SELECT * FROM
pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id )
INNER JOIN provincia ON (pompe.provinciaid=provincia.id )
INNER JOIN categoria ON (pompe.categoriaid=categoria.id )
INNER JOIN prioryty ON (pompe.priorytyid=prioryty.id )
INNER JOIN users ON (pompe.user_id=users.id)
WHERE tipologia.tipologia='pistacchi' AND categoria.categoria='arazzi' 
AND provincia.provincia='palazzi' AND priorytyid 
ORDER BY priorytyid DESC, id_annunci DESC

Cosi funziona correttamente, ho provato varie combinazioni e il risultato è perfetto

Buona giornata a tutti
 

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
50
Ciao @marino51 si l'avevo creato, ma era un campo nella tabella principale e cosi non funzionava, allora ho creato una nuova tabella chiamata prioryty, che poi ho relazionato alla tabella principale con priorytyid sempre campo enum, poi ho aggiunto questi campi alla join e ora mettendo come avevi detto tu alla fine della query prioryty DESC, id_annunci DESC funziona

se controlli infatti la prima query postata e la seconda vedi la modifica ...

In ogni caso cosi funziona e nell'altro modo no, quindi se qualcuno dovesse aver bisogno della cosa ho commentato tutto il codice e sono comunque a disposizione di altri utenti, come altri utenti lo sono sempre stati per me :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
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
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0

Discussioni simili