Problema numerazione news

pinoshine

Utente Attivo
15 Set 2012
95
0
0
Ciao a tutti, ho un problema con la numerazione quando inserisco una news, nella tabella delle news ho una riga chiamata ordine composta cosi':
Codice:
`ordine` int(11) NOT NULL,
dove all'interno viene scritto un numero di ordinamento in base alla mia scenda fatta dal gestionale in modo cosi' da scegliere quali news voglio vedere per prime, il problema e' quando inserisco una news questa me la trovo per prima con il numero "0" quando io vorrei che prendesse l'ultimo numero dell'ordinamento.
Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
se non ho capito male il problema.
prima di fare l'insert potresti fare una query di select tipo (schematizzo)
PHP:
$query="SELECT MAX(ordine) FROM tabella";
//..
$ordine=$riga['ordine']+1;
//...
//e quando fai l'insert
$query="INSERT INTO tabella(...,'ordine'...) VALUES(...,$ordine,...)";
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
Grazie per l'aito, ho provato ma purtroppo ho visto che la news viene numerata con il numero "1" su tutte quelle che inserisco, questo e' il codice:
PHP:
<?
							
							
							$ordine=$riga['ordine']+1; 

							$id=$_GET["idnews"];
							
                             
								require_once 'config.php' ;
								
								$query="SELECT MAX(ordine) FROM news";

                                

								$sql = "INSERT INTO news (ordine) VALUES('$ordine')";
								$result = mysql_query ($sql,$connessione) or die ("query non funzionante = $sql"); ?>
forse sbaglio qualcosa nel codice? Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
così come hai scritto non fa nulla di sicuro, comunque, sempre se non ho capito male, il lavoro di leggere il max(ordine) devi farlo dove inserisci la news.
immagino che tu abbia uno script per l'inserimento della news (schematizzo ancora)
PHP:
<?php
//....
$titolo=$_POST['titolo'];//titolo della news che inserisci
$testo=$_POST['testo'];// testo della news
//immagino i vari controlli su quanto inserito
//dati di connessione
$query="SELECT MAX(ordine) FROM news";
$ris=mysql_query($query);
$riga=mysql_fetch_array($ris);
$ordine=$riga['ordine']+1;
$query="INSERT INTO news(titolo,testo,ordine) VALUES('$titolo','$testo',$ordine)";
//ecc...
?>
se poi vuoi uppare 'ordine', quello è un'altra cosa
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
avevo scritto solo il succo del codice non tutto, comunque mi sono copiato il codice ma purtroppo continua a numerarmi la riga dell'ordine con il numero "1", il mio problema sta che nella home ho 8 news che voglio far vedere ed ogni volta che aggiungo una news quest'ultima mi compare nella home al primo posto, ce' qualche altro modo per evitare questo? Es. ho 10 news, vorrei che lo script aggiungendo una articolo automaticamente inserisce il numero 11 nella colonna "ordine". Grazie

Edit: ho notato che
PHP:
$query="SELECT MAX(ordine) FROM news";
non legge l'ultimo numero per questo mi rinomina sempre in "1"
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
prova a modificarla così
PHP:
$query="SELECT ordine FROM news ORDER BY ordine LIMIT 1";
dovrebbe prenderti il maggiore
dimenticavo eventualmente metti ORDER BY ordine DESC
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
Grazie ancora ma proprio non ne vuole sapere, scrive sempre "1" allora ho cambiato questo:
PHP:
$ordine=$riga['ordine']+100;
cosi' mi scrive nella riga ordine il numero "100" in questo modo quando aggiungo una news non me la trovo in home!!! Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
d'accordo, però mi sembra che ci sia qualcosa che non va
che tu scriva
$ordine=$riga['ordine']+1;
o
$ordine=$riga['ordine']+100;
se mettendo +1 trovi sempre 1, mettendo +100 dovresti trovare sempre 100
metti un var_dump
PHP:
 <?php
//....
$titolo=$_POST['titolo'];//titolo della news che inserisci
$testo=$_POST['testo'];// testo della news
//immagino i vari controlli su quanto inserito
//dati di connessione
$query="SELECT ordine FROM news ORDER BY ordine LIMIT 1"; 
$ris=mysql_query($query);
$riga=mysql_fetch_array($ris);
var_dump($riga['ordine']);//qui
$ordine=$riga['ordine']+1;
$query="INSERT INTO news(titolo,testo,ordine) VALUES('$titolo','$testo',$ordine)";
var_dump($query);//e anche qui
//ecc...
?>
e posta cosa riportano
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Questo codice funziona come detto solo se viene fatta una ridenominazione del campo:
PHP:
$query="SELECT MAX(ordine) as ordine FROM tabella"; 
//.. 
$ordine=$riga['ordine']+1; 
//... 
//e quando fai l'insert 
$query="INSERT INTO tabella(...,'ordine'...) VALUES(...,$ordine,...)";
Prova un po'.