PhpAdmin-MySQL com MAMP

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
ciao
in modo che possa verificare meglio potresti esportare la tabella successi in formato sql, zipparla e postarla?
così evito di farmi db e altre cose?
posta anche l'immagine della tabella archivio
 
ciao
in modo che possa verificare meglio potresti esportare la tabella successi in formato sql, zipparla e postarla?
così evito di farmi db e altre cose?
posta anche l'immagine della tabella archivio

img01to.jpg


Vedi l'allegato archivio.sql.zip

Vedi l'allegato successi1.sql.zip
 
Ultima modifica:
ciao
avevo fatto un errore di logica, modificato e adesso funzia
PHP:
<?php
//.........
$numero=20;//eventualmente dopo metteremo una paginazione in modo da poterli vedere tutti
//.........................
//*********da qui inizia la parte che trasferisce in archivio post SOSTITUISCI DA QUI
//leggiamo tra i post estratti il valore minimo dell'id (unisco la querry direttamente all'esecuzione)
$ris=mysql_query("SELECT MAX(id) as massimo FROM successi ORDER BY id DESC");
$vecchi_id=$riga['massimo']-$numero;
if($vecchi_id > 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
    	echo "trasferisco da $vecchi_id<br>";
		while($riga=mysql_fetch_array($ris)){
        	//estraggo tutti i dati (da verificare quelli che hai tenuto)
        	$id=$riga['id'];
        	$data=$riga['data_localeS'];
        	$oggetto=$riga['oggettoS'];
        	$messaggio=$riga['messaggioS'];
        	$nomeS=$riga['nomeS'];
			$cittaS=$riga['cittaS'];
			$cittaS=$riga['suoemailS'];
			$ip=$riga['ip'];
                        $bandierina=$riga['bandierina'];
			//salvo il messaggio nella tabella archivio
        	$ris_a=mysql_query("INSERT INTO archivio(data_localeS,oggettoS,messaggioS,nomeS,cittaS,suoemailS,ip,bandierina)
			VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$suoemailS','$ip','$bandierina')");
			//note che l'insert è uguale a quello che hai fatto per la tabella messaggi
			//avendo salvato in tab. archivio posso eliminarlo dalla tab. messaggi
			$ris_d=mysql_query("DELETE FROM successi WHERE id=$id");
		}
	}
}
//********fine del trasferimento A QUI 
//............................
?>
in settimana la numerazione
 
ciao
avevo fatto un errore di logica, modificato e adesso funzia
PHP:
<?php
//.........
$numero=20;//eventualmente dopo metteremo una paginazione in modo da poterli vedere tutti
//.........................
//*********da qui inizia la parte che trasferisce in archivio post SOSTITUISCI DA QUI
//leggiamo tra i post estratti il valore minimo dell'id (unisco la querry direttamente all'esecuzione)
$ris=mysql_query("SELECT MAX(id) as massimo FROM successi ORDER BY id DESC");
$vecchi_id=$riga['massimo']-$numero;
if($vecchi_id > 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
    	echo "trasferisco da $vecchi_id<br>";
		while($riga=mysql_fetch_array($ris)){
        	//estraggo tutti i dati (da verificare quelli che hai tenuto)
        	$id=$riga['id'];
        	$data=$riga['data_localeS'];
        	$oggetto=$riga['oggettoS'];
        	$messaggio=$riga['messaggioS'];
        	$nomeS=$riga['nomeS'];
			$cittaS=$riga['cittaS'];
			$cittaS=$riga['suoemailS'];
			$ip=$riga['ip'];
                        $bandierina=$riga['bandierina'];
			//salvo il messaggio nella tabella archivio
        	$ris_a=mysql_query("INSERT INTO archivio(data_localeS,oggettoS,messaggioS,nomeS,cittaS,suoemailS,ip,bandierina)
			VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$suoemailS','$ip','$bandierina')");
			//note che l'insert è uguale a quello che hai fatto per la tabella messaggi
			//avendo salvato in tab. archivio posso eliminarlo dalla tab. messaggi
			$ris_d=mysql_query("DELETE FROM successi WHERE id=$id");
		}
	}
}
//********fine del trasferimento A QUI 
//............................
?>
in settimana la numerazione

Sai che non mi funziona?

1. Nella tabella successi si registrano i messaggi ma non stampa a video il successo più recente e non manda nella tabella archivio il più remoto.

PHP:
..
<?php
$numero=3; // Limite max successi da visualizzare
// Legge tutti i campi in ordine decrescente
$q="SELECT * FROM successi ORDER BY id 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 
    while($riga=mysql_fetch_array($ris)) {
        echo "<div class=\"stampaS\">"; 
        echo "<div class=\"dataBox\">".crea_data($riga['data_localeS'])."</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'].",</div>"; 
        } 
        if (!empty($riga['suoemailS'])) {  // Se il campo è vuoto non stampa neanche il trattino 
            echo "<div class=\"mailBox\">".$riga['suoemailS']."&nbsp;&nbsp;-&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 
    }
 //*********da qui inizia la parte che trasferisce in archivio post SOSTITUISCI DA QUI 
 //Leggiamo tra i post estratti il valore max dell'id
$ris=mysql_query("SELECT MAX(id) as massimo FROM successi ORDER BY id DESC"); 
$vecchi_id=$riga['massimo']-$numero; 
if($vecchi_id > 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 
        echo "trasferisco da $vecchi_id<br>"; 
        while($riga=mysql_fetch_array($ris)){ 
             //estraggo tutti i dati del successo col valore minimo id dalla tabella successi...
            $id=$riga['id']; 
            $data=$riga['data_localeS']; 
            $oggetto=$riga['oggettoS']; 
            $messaggio=$riga['messaggioS']; 
            $nomeS=$riga['nomeS']; 
            $cittaS=$riga['cittaS']; 
            $cittaS=$riga['suoemailS']; 
            $ip=$riga['ip']; 
            $bandierina=$riga['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,suoemailS,ip,bandierina) 
            VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$suoemailS','$ip','$bandierina')"); 
             //avendo salvato in tabella archivio posso eliminarlo dalla tabella successi
            $ris_d=mysql_query("DELETE FROM successi WHERE id=$id"); 
        } 
    } 
  } 
}
//********fine del trasferimento A QUI  
else {  
echo "<font style=\"font-size:18px;color:#0000ff;\">Non ci sono ancora Successi, volevi scriverne uno?</font>"; 
} 
    
function crea_data($t){ 
$giorno=array('domenica','luned&igrave;','marted&igrave;','mercoled&igrave;','gioved&igrave;','venerd&igrave;','sabato'); 
$mese=array('','gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre'); 
$gg=date('w',$t); 
$mm=date('n',$t); 
return $giorno[$gg]." ".date('d',$t)." ".$mese[$mm]." ".date("Y H:i:s \G\M\T P (T)", $t); 
} 

if(isset($_POST['invia'])) {
..
 
ciao
a video non è cambiato nulla, quindi dovrebbe visualizzare come faceva prima.
per passare da successi a archivio devi superare il valore che hai messo in limit.
es. se hai messo limit 20 ($numero=20) li visualizza e basta (non trasferisce e non elimina) sino al 20°.
quando un utente inserisce il 21° messaggio il più vecchio passa in archivio e viene eliminato da successi.
in questo modo hai sempre i 20 successi visualizzati inviati per ultimi

edit
comunque riprovo poi ti so dire
 
Ultima modifica:
ciao
a video non è cambiato nulla, quindi dovrebbe visualizzare come faceva prima.
per passare da successi a archivio devi superare il valore che hai messo in limit.
es. se hai messo limit 20 ($numero=20) li visualizza e basta (non trasferisce e non elimina) sino al 20°.
quando un utente inserisce il 21° messaggio il più vecchio passa in archivio e viene eliminato da successi.
in questo modo hai sempre i 20 successi visualizzati inviati per ultimi

Appunto, è così che dovrebbe essere, ma nel mio caso, ho impostato a 3, nella tabella successi stampa anche i successivi, ma a video rimangono stampati i soliti primi 3, e la tabella archivio rimane vuota
 
ciao
alla riga $q ecc..
PHP:
//............
$numero=10; // Limite max successi da visualizzare
// Legge tutti i campi in ordine decrescente
$q="SELECT * FROM successi ORDER BY id  LIMIT $numero";
//..........

aggiungi
PHP:
//...........
$numero=10; // Limite max successi da visualizzare
// Legge tutti i campi in ordine decrescente
$q="SELECT * FROM successi ORDER BY id DESC LIMIT $numero";
//.......
anche se non capisco perche di default dovrebbe essere DESC
 
ciao
alla riga $q ecc..
PHP:
//............
$numero=10; // Limite max successi da visualizzare
// Legge tutti i campi in ordine decrescente
$q="SELECT * FROM successi ORDER BY id  LIMIT $numero";
//..........

aggiungi
PHP:
//...........
$numero=10; // Limite max successi da visualizzare
// Legge tutti i campi in ordine decrescente
$q="SELECT * FROM successi ORDER BY id DESC LIMIT $numero";
//.......
anche se non capisco perche di default dovrebbe essere DESC

...come prima, non è che magari il codice va posizionato in un altra parte della pagina?
 
ciao
questo è un mistero.
ho fatto ancora delle prove e col mio script funzia, poi ho guardato meglio quello che ti ho postato (e che hai ripostato) e non so perche ma manca una riga (sparita???).
PHP:
<?php
//....
//leggiamo tra i post estratti il valore minimo dell'id (unisco la querry direttamente all'esecuzione)
$ris=mysql_query("SELECT MAX(id) as massimo FROM successi ORDER BY id DESC");
$riga=mysql_fetch_array($ris);// <=**** questa era sparita ??????
$vecchi_id=$riga['massimo']-$numero;
if($vecchi_id > 0){
//.....
?>
per cui non leggeva il massimo id
 
ciao
questo è un mistero.
ho fatto ancora delle prove e col mio script funzia, poi ho guardato meglio quello che ti ho postato (e che hai ripostato) e non so perche ma manca una riga (sparita???).
PHP:
<?php
//....
//leggiamo tra i post estratti il valore minimo dell'id (unisco la querry direttamente all'esecuzione)
$ris=mysql_query("SELECT MAX(id) as massimo FROM successi ORDER BY id DESC");
$riga=mysql_fetch_array($ris);// <=**** questa era sparita ??????
$vecchi_id=$riga['massimo']-$numero;
if($vecchi_id > 0){
//.....
?>
per cui non leggeva il massimo id
Adesso va, arrivato al max stampa questo, lo posso togliere?

Poi ho bisogno mi stampi dal più vecchio sopra e i più recenti verso il basso...io quasi quasi forse ci metterei anche il conta post sulla barra come qui nel forum, che dici?

Ho dovuto togliere $riga a $ip e $bandierina
 
ciao
cosa puoi togliere?

poi se non ti servono ip e bandierina toglili anche dalle tabelle.
il valore di ip comunque ti potrebbe servire in seguito (verifichi alcuni ip che possono essere spammer ed eventalmente blocchi l'inserimento) quindi comunque per ora lascialo in tabella
ora quardo come puoi fare l'insert dell'ip poi te lo posto (per bandierina non so da dove venga)

per la numerazione, visto che deve riflettersi in tutte le pagine poi ti so dire
 
ciao
cosa puoi togliere?

poi se non ti servono ip e bandierina toglili anche dalle tabelle.
il valore di ip comunque ti potrebbe servire in seguito (verifichi alcuni ip che possono essere spammer ed eventalmente blocchi l'inserimento) quindi comunque per ora lascialo in tabella
ora quardo come puoi fare l'insert dell'ip poi te lo posto (per bandierina non so da dove venga)

per la numerazione, visto che deve riflettersi in tutte le pagine poi ti so dire

Ho messo così

PHP:
...
 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

Questo sotto in rosso si può togliere?

if(mysql_num_rows($ris)>0) { //se maggiore di 0 ci sono
echo "trasferisco da $vecchi_id<br>";
...

Poi ho bisogno che stampi a video in ordine crescente (il più recente in fondo)
 
ciao
per inserire l'ip vai dove fai l'insert del successo postato (dopo l'if isset $_POST) e puoi modificare direttamente l'insert
PHP:
<?php
//....
$q="INSERT INTO messaggi(data_localeS,oggettoS,messaggioS,nomeS,cittaS,suoemailS,ip,bandierina)
       VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$suoemailS','".$_SERVER['REMOTE_ADDR']."','$bandierina')"; 
//....
?>

Poi ho bisogno che stampi a video in ordine crescente (il più recente in fondo)
questo è un più complesso (la SELECT deve prima ordinare poi estrarre quanti record richiesti da limit) guardo se e come è possibile senza complicare troppo lo script

si, si quell'echo lo puoi toglere era per verificare mentre provavo
 
ciao
per inserire l'ip vai dove fai l'insert del successo postato (dopo l'if isset $_POST) e puoi modificare direttamente l'insert
PHP:
<?php
//....
$q="INSERT INTO messaggi(data_localeS,oggettoS,messaggioS,nomeS,cittaS,suoemailS,ip,bandierina)
       VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$suoemailS','".$_SERVER['REMOTE_ADDR']."','$bandierina')"; 
//....
?>


questo è un più complesso (la SELECT deve prima ordinare poi estrarre quanti record richiesti da limit) guardo se e come è possibile senza complicare troppo lo script

si, si quell'echo lo puoi toglere era per verificare mentre provavo
Per invertire l'ordine di stampa ho messo così

PHP:
$q="SELECT * FROM successi ORDER BY id ASC LIMIT $numero";

Poi ho aggiunto l'id es.#4 ad ogni post

PHP:
<div class=\"idSuccessiDX\">#".$riga['id']."</div>
 
...però questo ASC mi da un problemuccio: come io invio il form non mi stampa l'ultimo post inviato, in pratica non aggiorna la pagina, per visualizzarlo devo aggiornare la pag. manualmente.

Se invece metto DESC non da questo problema

PHP:
$q="SELECT * FROM successi ORDER BY id ASC LIMIT $numero";
 
ciao
vuoi altetrnare il colore di sondo sui successi?
se si è un problema di css+php.
in pratica conti i mentre i successi si visualizzano se il conteggio è un numero pari dai al div uno sfondo se dispari un altro
 

Discussioni simili