PhpAdmin-MySQL com MAMP

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
ciao
nella parte in cui visualizzi i successi
PHP:
<?php
//...........
if(mysql_num_rows($ris) > 0) { 
    // Leggo un record alla volta e lo stampo
	$contatore=1; //inizializzi il contatore a 1
    while($riga=mysql_fetch_array($ris)) {
        echo "<div class=\"stampaS\">"; 
		echo "<div class=\"idSuccessiDX\"># $contatore</div> ";//lo stampi
        echo "<div class=\"dataBox\">".crea_data($riga['data_localeS'])."</div>";  
/*
tralascio tutti gli altri echo div
*/
        echo "<div class=\"bandierinaBox\">$bandierina<div class=\"nazione\">".$countries[$two_letter_country_code][1]."</div></div>"; 
        echo "</div>";//stampaS
		$contatore ++; //e ad ogni giro lo incrementi di uno
    }
 //*********da qui inizia la parte che trasferisce in archivio post SOSTITUISCI DA QUI  
//.....
?>
analogo se lo vuoi anche dove mostri l'archivio

p.s.
secondo me sarebbe da chiudere la discussione, sta diventando un poema, apri se ti servono altri post

In messaggi il numero lo stampa al contrario cioè, parte con #1 da sopra, dovrebbe partire da sotto, poi in archivio non riesco a metterlo in modo che stampi in sequenza alla pagina messaggi

PHP:
if(mysql_num_rows($ris) > 0) { // Conto i record (i campi nella tabella del db)
    // Leggo un record alla volta e lo stampo 
    $contatore=1; //inizializzi il contatore a 1 
     while($riga=mysql_fetch_array($ris)) {
        //verifico se il conteggio è pari o dispari e in alternato cambio il colore
        if($conteggio%2==0) {
        $sfondo="#f7f7f7";
        }
        else {
        $sfondo="#e9eff1"; 
        } 
        echo "<div class=\"stampaS\" style=\"background-color: $sfondo \">"; 
        echo "<div class=\"dataBox\">".crea_data($riga['data_localeS'])."<div class=\"idSuccessiSX\"></div><div class=\"idSuccessiDX\"># $contatore</div></div>"; 
        echo "<div class=\"campiAltiS\">"; 
        echo "<div class=\"oggettoBox\">".$riga['oggettoS']."</div>"; 
        echo "</div>"; // campiAltiS  
        echo "<div class=\"messaggioBox\">".$riga['messaggioS']."</div>"; 
        echo "<div class=\"bassoS\"></div>"; // bassoS  
        echo "<div class=\"nomeBox\">".$riga['nomeS'].",</div>"; 
        if(!empty($riga['cittaS'])) {  // Se il campo è vuoto non stampa neanche la virgola 
        echo "<div class=\"cittaBox\">".$riga['cittaS'].",&nbsp;&nbsp;</div>"; 
        } 
        echo "<div class=\"ipBox\">Ip: $ip</div>";   
        echo "<div class=\"bandierinaBox\">$bandierina<div class=\"nazione\">".$countries[$two_letter_country_code][1]."</div></div>"; 
        echo "</div>";//stampaS 
        $contatore ++; // a ogni giro incremento di uno 
    }
 //*********Inizio trasferimento nella tabella archivio
 //Leggiamo tra i post estratti il valore max dell'id
$ris=mysql_query("SELECT MAX(id) as massimo FROM successi ORDER BY id DESC"); 
// Lancio la query  
$riga=mysql_fetch_array($ris); 
$vecchi_id=$riga['massimo']-$numero; 
if($vecchi_id >= 0) { //cioè maggiore o uguale a 0  
    //verifico che ci siano record precedenti 
    $ris=mysql_query("SELECT * FROM successi WHERE id <= $vecchi_id"); 
    if(mysql_num_rows($ris)>0) { //se maggiore di 0 ci sono records 
        while($riga=mysql_fetch_array($ris)) { 
             //estraggo tutti i dati del successo col valore minimo id dalla tabella successi...
            $id=$riga['id']; 
            $data_localeS=$riga['data_localeS']; 
            $oggettoS=$riga['oggettoS']; 
            $messaggioS=$riga['messaggioS']; 
            $nomeS=$riga['nomeS']; 
            $cittaS=$riga['cittaS']; 
            $ip; 
            $bandierina; 
            //...e salvo il successo nella tabella archivio, l'insert è uguale a quello che che c'è nella tabella successi  
            $ris_a=mysql_query("INSERT INTO archivio(data_localeS,oggettoS,messaggioS,nomeS,cittaS,ip,bandierina) 
            VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$ip','$bandierina')"); 
             //avendo salvato in tabella archivio posso eliminarlo dalla tabella successi
            $ris_d=mysql_query("DELETE FROM successi WHERE id=$id"); 
            //Questa riga ricarica la pagina e quindi aggiorna i contatori 
           echo "<meta http-equiv='refresh' content='0; url=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
        } 
    } 
  } 
}
//********fine del trasferimento
 
Ultima modifica:
ciao
prova in questo modo (ti scirvo solo la parte del conteggio)
PHP:
<?php
//......
$conteggio=$numero; //è quello che usi mel limit
while($riga=mysql_fetch_array($ris)) {
//tutti gli echo div
}
$conteggio --; //decremento di uno
//.............
?>
 
ciao
prova in questo modo (ti scirvo solo la parte del conteggio)
PHP:
<?php
//......
$conteggio=$numero; //è quello che usi mel limit
while($riga=mysql_fetch_array($ris)) {
//tutti gli echo div
}
$conteggio --; //decremento di uno
//.............
?>
Applicandolo alla parte dell'archivio il conteggio continua a salire in automatico da solo, io penso che è questa riga da sistemare $id=$riga['id']; (anche se ho già tentato varie prove)
 
cioa
cosa c'entra $id=$riga['id'] con il contatore?
guarda che qull'id ti serve per eliminare il record
PHP:
$ris_d=mysql_query("DELETE FROM successi WHERE id=$id");
se non lo metti come fa php/mysql a sapere quale record eliminare?
o se lo metti sbagliato ti elimina il record sbagliato o non elimina nulla se non trova la corrispondenza
 
cioa
cosa c'entra $id=$riga['id'] con il contatore?
guarda che qull'id ti serve per eliminare il record
PHP:
$ris_d=mysql_query("DELETE FROM successi WHERE id=$id");
se non lo metti come fa php/mysql a sapere quale record eliminare?
o se lo metti sbagliato ti elimina il record sbagliato o non elimina nulla se non trova la corrispondenza
Ho messo così non da più errore, ma sostanzialmente funziona come quando usavo l'id e cioè, se cancello un post il contanumero non si autoaggiorna, lascia sempre il "buco"
 
...dimenticavo

PHP:
//*********Inizio trasferimento nella tabella archivio
 //Leggiamo tra i post estratti il valore max dell'id
$ris=mysql_query("SELECT MAX(id) as massimo FROM successi ORDER BY id DESC"); 
// Lancio la query  
$riga=mysql_fetch_array($ris); 
$vecchi_id=$riga['massimo']-$numero; 
if($vecchi_id >= 0) { //cioè maggiore o uguale a 0  
    //verifico che ci siano record precedenti 
    $ris=mysql_query("SELECT * FROM successi WHERE id <= $vecchi_id"); 
    if(mysql_num_rows($ris)>0) { //se maggiore di 0 ci sono records 
    $contatore=1; //inizializzi il contatore a 1
    while($riga=mysql_fetch_array($ris)) { 
             //estraggo tutti i dati del successo col valore minimo id dalla tabella successi...
            $id=$riga['id']; 
            $data_localeS=$riga['data_localeS'];
            $oggettoS=$riga['oggettoS']; 
            $messaggioS=$riga['messaggioS']; 
            $nomeS=$riga['nomeS']; 
            $cittaS=$riga['cittaS']; 
            $ip; 
            $bandierina; 
            $contatore ++; // a ogni giro incremento di uno 
            //...e salvo il successo nella tabella archivio, l'insert è uguale a quello che che c'è nella tabella successi  
            $ris_a=mysql_query("INSERT INTO archivio(data_localeS,oggettoS,messaggioS,nomeS,cittaS,ip,bandierina) 
            VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$ip','$bandierina')"); 
             //avendo salvato in tabella archivio posso eliminarlo dalla tabella successi
            $ris_d=mysql_query("DELETE FROM successi WHERE id=$id"); 
            //Questa riga ricarica la pagina e quindi aggiorna i contatori 
           echo "<meta http-equiv='refresh' content='0; url=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
        } 
    } 
  } 
}
//********fine del trasferimento
 
ciao
cosa intendi che il contatore ti lascia un buco?
se all'inizio avevi (es) 8 record ti visualizza
#8.......
#7.......
#6.......
#5.......
.........
#1.......
se togli un record
#7.......
#6.......
#5.......
.........
#1.......
il contatore non dipende dai record ma da quanti "giri" fa il while

p.s.
correggi anche il nome della variabile
PHP:
//.....
        //verifico se il conteggio è pari o dispari e in alternato cambio il colore
        if($conteggio%2==0) {
        $sfondo="#f7f7f7";
        }
        else {
        $sfondo="#e9eff1"; 
        } 
//......
in
PHP:
//.....
        //verifico se il conteggio è pari o dispari e in alternato cambio il colore
        if($contatore%2==0) {//ho visto che $conteggio l'hai tolta e messo $contatore
        $sfondo="#f7f7f7";
        }
        else {
        $sfondo="#e9eff1"; 
        } 
//......
 
ciao
scusa una cosa, mi sono accorto adesso
hai messo $contatore nel while che fa il trasferimento da successi ad archivio.
$contatore deve essere messo nel while che stampa i successi a monitor
 
Nuova prova con questo codice: ho vuotato i record delle 2 tabelle (non gli id), ho inserito 5 messaggi

nella tabella successi stampa a video

#1
#2
#3

nella tabella archivio stampa a video il numero id che c'è in phpmyadmin

#14
#15

PHP:
<?php
$numero=3; // Limite max successi da visualizzare
// Legge tutti i records nella tabella successi dall'alto verso il basso e li estrae in ordine crescente
$q="SELECT * FROM successi ORDER BY id ASC LIMIT $numero"; 
// Lancio la query
$ris=mysql_query($q); 

if(mysql_num_rows($ris) > 0) { // Conto i record (i campi nella tabella del db)
    // Leggo un record alla volta e lo stampo
    $contatore=1; //inizializzi il contatore a 1
    while($riga=mysql_fetch_array($ris)) {
        //verifico se il conteggio è pari o dispari e in alternato cambio il colore
        if($contatore%2==0) {
        $sfondo="#f7f7f7";
        }
        else {
        $sfondo="#e9eff1"; 
        } 
        echo "<div class=\"stampaS\" style=\"background-color: $sfondo \">"; 
        echo "<div class=\"dataBox\">".crea_data($riga['data_localeS'])."<div class=\"idSuccessiSX\"></div><div class=\"idSuccessiDX\">#$contatore</div></div>"; 
        echo "<div class=\"campiAltiS\">"; 
        echo "<div class=\"oggettoBox\">".$riga['oggettoS']."</div>"; 
        echo "</div>"; // campiAltiS  
        echo "<div class=\"messaggioBox\">".$riga['messaggioS']."</div>"; 
        echo "<div class=\"bassoS\"></div>"; // bassoS  
        echo "<div class=\"nomeBox\">".$riga['nomeS'].",</div>"; 
        if(!empty($riga['cittaS'])) {  // Se il campo è vuoto non stampa neanche la virgola 
            echo "<div class=\"cittaBox\">".$riga['cittaS'].",&nbsp;&nbsp;</div>"; 
        } 
        echo "<div class=\"ipBox\">Ip: $ip</div>";   
        echo "<div class=\"bandierinaBox\">$bandierina<div class=\"nazione\">".$countries[$two_letter_country_code][1]."</div></div>"; 
        echo "</div>";//stampaS 
        $contatore ++; // a ogni giro incremento di uno 
    }
 //*********Inizio trasferimento nella tabella archivio
 //Leggiamo tra i post estratti il valore max dell'id
$ris=mysql_query("SELECT MAX(id) as massimo FROM successi ORDER BY id DESC"); 
// Lancio la query  
$riga=mysql_fetch_array($ris); 
$vecchi_id=$riga['massimo']-$numero; 
if($vecchi_id >= 0) { //cioè maggiore o uguale a 0  
    //verifico che ci siano record precedenti 
    $ris=mysql_query("SELECT * FROM successi WHERE id <= $vecchi_id"); 
    if(mysql_num_rows($ris)>0) { //se maggiore di 0 ci sono records 
    $contatore=1; //inizializzi il contatore a 1
    while($riga=mysql_fetch_array($ris)) { 
             //estraggo tutti i dati del successo col valore minimo id dalla tabella successi...
            $id=$riga['id']; 
            $data_localeS=$riga['data_localeS'];
            $oggettoS=$riga['oggettoS']; 
            $messaggioS=$riga['messaggioS']; 
            $nomeS=$riga['nomeS']; 
            $cittaS=$riga['cittaS']; 
            $ip; 
            $bandierina; 
            $contatore ++; // a ogni giro incremento di uno 
            //...e salvo il successo nella tabella archivio, l'insert è uguale a quello che che c'è nella tabella successi  
            $ris_a=mysql_query("INSERT INTO archivio(data_localeS,oggettoS,messaggioS,nomeS,cittaS,ip,bandierina) 
            VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$ip','$bandierina')"); 
             //avendo salvato in tabella archivio posso eliminarlo dalla tabella successi
            $ris_d=mysql_query("DELETE FROM successi WHERE id=$id"); 
            //Questa riga ricarica la pagina e quindi aggiorna i contatori 
           echo "<meta http-equiv='refresh' content='0; url=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
        } 
    } 
  } 
}
//********fine del trasferimento
 
ciao
nella tabella archivio stampa a video il numero id che c'è in phpmyadmin
immagino (altrimenti come fai a mostrarli) che anche nella pagina che deve visualizzarti i record archiviati tu abbia un while per estrarre i record.
anche li prima del while metti $contatore=1; alla fine del while (prima della } di chiusura) $contatore++; e dove viene stampato l'id sostituiscilo col valore del contatore.
uguale a quello che hai fatto per visualizzare i successi
 
ciao
immagino (altrimenti come fai a mostrarli) che anche nella pagina che deve visualizzarti i record archiviati tu abbia un while per estrarre i record.
anche li prima del while metti $contatore=1; alla fine del while (prima della } di chiusura) $contatore++; e dove viene stampato l'id sostituiscilo col valore del contatore.
uguale a quello che hai fatto per visualizzare i successi

vedi post #149, qui stampa gli id dell'archivio $id=$riga['id']; , se lo metto così: $id=$contatore; continua a caricare ininterrottamente nuovi post nell'archivio
 
ciao
allora per mostrare il # il contatore devi metterlo anche li
L'ho messo, ma non stampa i numeri in sequenza alla tabella successi, li stampa partendo da #1

PHP:
$numero=20; // Limite max successi da visualizzare
// Legge tutti i records nella tabella archivio dall'alto verso il basso e li estrae in ordine decrescente
$q="SELECT * FROM archivio ORDER BY id DESC LIMIT $numero";  
// Lancio la query
$ris=mysql_query($q); 

if(mysql_num_rows($ris) > 0) { // Conto i record (i campi nella tabella del db)
    // Leggo un record alla volta e lo stampo
    $contatore=1; //inizializzi il contatore a 1 
    while($riga=mysql_fetch_array($ris)) {
       //verifico se conteggio è pari o dispari e in alternato cambio il colore
        if($contatore%2==0) {
        $sfondo="#f7f7f7";
        }
        else {
        $sfondo="#e9eff1";
        } //applico il colore di sfondo  
        echo "<div class=\"stampaS\" style=\"background-color: $sfondo \">"; 
        echo "<div class=\"dataBox\">".crea_data($riga['data_localeS'])."<div class=\"idSuccessiSX\"></div><div class=\"idSuccessiDX\">#$contatore</div></div>"; 
        echo "<div class=\"campiAltiS\">"; 
        echo "<div class=\"oggettoBox\">".$riga['oggettoS']."</div>"; 
        echo "</div>"; // campiAltiS  
        echo "<div class=\"messaggioBox\">".$riga['messaggioS']."</div>"; 
        echo "<div class=\"bassoS\"></div>"; // bassoS  
        echo "<div class=\"nomeBox\">".$riga['nomeS'].",</div>"; 
        if(!empty($riga['cittaS'])) {  // Se il campo è vuoto non stampa neanche la virgola 
            echo "<div class=\"cittaBox\">".$riga['cittaS'].",&nbsp;&nbsp;</div>"; 
        }   
        echo "<div class=\"ipBox\">Ip: $ip</div>"; 
        echo "<div class=\"bandierinaBox\">$bandierina<div class=\"nazione\">".$countries[$two_letter_country_code][1]."</div></div>"; 
        echo "</div>";//stampaS
        $contatore ++; // a ogni giro incremento di uno  
    } 
 }
 
ciao
non vedo errori nel contatore quindi non capisco perche non lo visualizzi (per caso il colore di bck del div è uguale a quello del testo)
poi dai un occhio ai commenti
PHP:
<?php
//....
$numero=20; // Limite max successi da visualizzare ?? ma nell'archivio non volevi visualizzare tutti gli archiviati?
//se si toglilo e modifica la query
// Legge tutti i records nella tabella archivio dall'alto verso il basso e li estrae in ordine decrescente
$q="SELECT * FROM archivio ORDER BY id DESC LIMIT $numero";
//in questo modo
//$q="SELECT * FROM archivio ORDER BY id DESC";
// Lancio la query
$ris=mysql_query($q); 
if(mysql_num_rows($ris) > 0) { // Conto i record (i campi nella tabella del db)
    // Leggo un record alla volta e lo stampo
    $contatore=1; //inizializzi il contatore a 1 
    while($riga=mysql_fetch_array($ris)) {
       //verifico se conteggio è pari o dispari e in alternato cambio il colore
        if($contatore%2==0) {
        $sfondo="#f7f7f7";
        }
        else {
        $sfondo="#e9eff1";
        } //applico il colore di sfondo  
        echo "<div class=\"stampaS\" style=\"background-color: $sfondo \">"; 
        echo "<div class=\"dataBox\">".crea_data($riga['data_localeS']).
		"<div class=\"idSuccessiSX\"></div>
		<div class=\"idSuccessiDX\"># $contatore</div>
		</div>"; 
        echo "<div class=\"campiAltiS\">"; 
        echo "<div class=\"oggettoBox\">".$riga['oggettoS']."</div>"; 
        echo "</div>"; // campiAltiS  
        echo "<div class=\"messaggioBox\">".$riga['messaggioS']."</div>"; 
        echo "<div class=\"bassoS\"></div>"; // bassoS  
        echo "<div class=\"nomeBox\">".$riga['nomeS'].",</div>"; 
        if(!empty($riga['cittaS'])) {  // Se il campo è vuoto non stampa neanche la virgola 
            echo "<div class=\"cittaBox\">".$riga['cittaS'].",&nbsp;&nbsp;</div>"; 
        }   
        echo "<div class=\"ipBox\">Ip: $ip</div>"; 
        echo "<div class=\"bandierinaBox\">$bandierina<div class=\"nazione\">".$countries[$two_letter_country_code][1]."</div></div>"; 
        echo "</div>";//stampaS
        $contatore ++; // a ogni giro incremento di uno  
    } 
 }
 //....
?>

p.s.
mi sono ricordato che hai anche la funzione crea_data puoi mettere anche quella nel file funzioni.php.
tutto quello che si ripete uguale tra le varie pagine conviene metterlo in file separati da includere, es tutta la parte di visualizzazione
è uguale (a parte la query) nella pagina successi.php e in archivio_successi.php potresti trascriverla in un file chiamato es visualizza.php e farci l'include
 
Non è che non stampa il numero progressivo in archivio_successi, lo stampa ma parte da #1, se nella pagina successi ho #3,in quella archivio dovrebbe partire da #4, invece parte da 1
 

Discussioni simili