PhpAdmin-MySQL com MAMP

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
ciao
è un campo che potrebbe essere di tipo set che può assumere solo alcuni valori definiti in partenza.
es di default 0 (record non archiviato)
se invece messo a 1 vuol dire che il record è archiviato, e può essere un modo, però per me ha un difetto se es (anche se forse non è il tuo caso) hai 1000 record non archiviati e 1000 archiviati usando due tabelle e cerchi qualcosa i scorri una tabella di 1000 record, col metodo del "flag" devi scorrere una tabella con 2000 record
come ho fatto io hai una tabella "leggera" e una "pesante" (man mano che aumentano gli archiviati) col metodo del flag ha sempre una tabella "pesante".

p.s.
comunque aprirò un 3d apposito vedendo cosa ne pensano anche altri

Però col flag uso una sola tabella, si potrebbe fare, che dici? C'è molto da cambiare nel codice?
 
ciao
bisogna modificare tutte le query, e devi inserire in tabella un campo.
ma una domanda se hai gia tutto a che ti serve cambiare?

Ti dico, col contatore non funzionava correttamente, perciò sono tornato a rimettere come conteggio gli id, poi in rete ho trovato questa cosa "flag" che permette di usare una sola tabella....però non so. Io comunque ora sto usando il vecchio codice id
 
ciao
come ti ho detto si può fare in diversi modi, se un modo funzia e non è troppo scorretto (e le due tabelle per me non lo sono) vale il principio "chi abbandona la via vecchia per la nuova, presto o tardi male si ritrova"
comunque anche facendo una tabella unica non risolvi il problema del contatore, anzi aumenti i buchi negli id
 
...continuo la discussione.

Come vedi il numero dei post è settato su 3 e poi li archivia, devo fare in modo che quando arriva in questo caso a 3 post stampati (ma non prima del numero settato), faccia apparire una scritta così (che poi io trasformo in link)

Img_01.png


PHP:
<?php
$numero=3; // Limite max successi da visualizzare
// Estraggo 3 successi dall'alto verso il basso, 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 
    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\">#".$riga['id']."</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 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 
else {  
echo "<p style=\"margin-left:30px;font-size:18px;color:#0000ff;\">Non ci sono ancora Successi, volevi scriverne uno?</p>"; 
}
 
ciao
io farei così al posto di verificare quanti "successi" nuovi sono visualizzati (potrebbe venirti in mente di aumentarli o diminuirli), piuttosto verificherei se ci sono successi in "archivio" e se si visualizzare il link altrimenti no
 
ciao
io farei così al posto di verificare quanti "successi" nuovi sono visualizzati (potrebbe venirti in mente di aumentarli o diminuirli), piuttosto verificherei se ci sono successi in "archivio" e se si visualizzare il link altrimenti no
Appunto, è quello che voglio fare, se l'archivio è ancora vuoto, la frase ovviamente non deve uscire
 
ciao
nel punto in cui vuoi che appaia il messaggio metti
PHP:
<?php
//.....
if(mysql_num_rows(mysql_query("SELECT * FROM archivio")) > 0){
	echo "<a href=\"pagina_archivio.php\">Vai all'archivio =></a>";
}
//....
?>
oppure se in tutte le pagine lo scrivi in un file php esterno e, sempre dove vuoi il messaggio, fai il require o l'include
poi nella pag archivio farai la solita SELECT * FROM archivio... e visualizzerai i vecchi successi
 
ciao
nel punto in cui vuoi che appaia il messaggio metti
PHP:
<?php
//.....
if(mysql_num_rows(mysql_query("SELECT * FROM archivio")) > 0){
	echo "<a href=\"pagina_archivio.php\">Vai all'archivio =></a>";
}
//....
?>
oppure se in tutte le pagine lo scrivi in un file php esterno e, sempre dove vuoi il messaggio, fai il require o l'include
poi nella pag archivio farai la solita SELECT * FROM archivio... e visualizzerai i vecchi successi

Bene, ho usato lo stesso principio nel file archivio_successi in modo che se l'archivio è vuoto non appaia &lArr; Indietro , ma qui non funziona

PHP:
// Fa uscire la freccia se esistono successi in archivio
if(mysql_num_rows(mysql_query("SELECT * FROM successi")) > 0){
echo "<a class=\"frecciaSX\" href=\"http://miosito.it/successi.php\">&lArr; Indietro</a>";
}
 
ciao
non ho capto bene, questo codice l'hai messo nella pg dove visualizzai i successi archiviati?
PHP:
// Fa uscire la freccia se esistono successi in archivio
if(mysql_num_rows(mysql_query("SELECT * FROM successi")) > 0){
echo "<a class=\"frecciaSX\" href=\"http://miosito.it/successi.php\">&lArr; Indietro</a>";
}
e cosa non funzia

p.s.
tra le tue piante manca l'aconutum nappello: ideale per la suocera
 
ciao
non ho capto bene, questo codice l'hai messo nella pg dove visualizzai i successi archiviati?
PHP:
// Fa uscire la freccia se esistono successi in archivio
if(mysql_num_rows(mysql_query("SELECT * FROM successi")) > 0){
echo "<a class=\"frecciaSX\" href=\"http://miosito.it/successi.php\">&lArr; Indietro</a>";
}
e cosa non funzia

p.s.
tra le tue piante manca l'aconutum nappello: ideale per la suocera

Da tempo non ho più la suocera:elvis:

Il codice che hai postato è in successi (non in archivio_successi), ma quello funziona

Ora ho questo in archivio_successi però è fisso

PHP:
<div class="paroleCent">
<p style="font-size: 18px; color: #e10202; font-weight: bolder; text-align:center; margin-bottom:40px;">Archivio Successi</p>
<a class="frecciaSX" href="http://miosito/successi.php">&lArr; Indietro</a>

<?php 
$numero=20; // Limite max successi da visualizzare nella pag. archivio_successi.php
// estraggo 20 successi dall'alto verso il basso, in ordine decrescente 
$q="SELECT * FROM archivio ORDER BY id DESC LIMIT $numero"; 

...
 
Adesso MAMP non funziona più neanche in locale, ho 2 siti, ho messo un collegamento in Word che cliccandoci sopra solitamente apre il sito in locale.

L'altro sito si apre come sempre, questo esce l'errore "Impossibile scaricare le informazioni richieste", non so, ha sempre funzionato
 
RISOLTO

ho messo così in archivio_successi e sembra funzioni

PHP:
<?php
// Fa uscire la freccia a sx se esistono successi in archivio
if(mysql_num_rows(mysql_query("SELECT * FROM archivio")) > 0){ 
echo "<a class=\"frecciaSX\" href=\"http://miosito.it/successi.php\">&lArr; Indietro</a>";
}  
$numero=20; // Limite max successi da visualizzare nella pag. archivio_successi.php
// estraggo 20 successi dall'alto verso il basso, in ordine decrescente 
$q="SELECT * FROM archivio ORDER BY id DESC LIMIT $numero"; 

...
 
Mi si presenta una situazione che devo memorizzare nel db la mail dell'utente (se la inserisce), però non deve stamparsi a video.

Io come vedi ho aggiunto $suoemailS e suoemailS ed un campo nella tabella, ma mi da questo errore

Errore nella query : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

PHP:
$numero=3; // Limite max successi da visualizzare nella pag. successi.php
// Estraggo 3 successi dall'alto verso il basso, 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 
    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\">#".$riga['id']."</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']; 
            $suoemailS=$riga['suoemailS'];
            $ip; 
            $bandierina;  
            //...e salvo il successo nella tabella archivio, l'insert è uguale a quello 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"); 
            //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
 
in parte ho risolto, mancavano 2 apici a questo codice '$uoemailS' però non stampa la mail nella tabella del db

PHP:
...
if($erroreS==""){ 
//Scrive i dati all'interno della tabella del db
//INSER INTO contiene il nome dei records, dall'alto verso il basso, che ci sono nella tabella del db 
//VALUES inserisce nella tabella del db i valori scritti nei campi del form, vanno scritti nello stesso ordine di INSERT INTO
$q="INSERT INTO successi(data_localeS,oggettoS,messaggioS,nomeS,cittaS,suoemailS,ip,bandierina)
       VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$uoemailS','$ip','$bandierina')"; 
// Lancio la query         
$ris=mysql_query($q);  
      
// Controllo l'esito
if (!$ris) {
die("Errore nella query $query: " . mysql_error());
}
// chiudo la connessione a MySQL
mysql_close($connessione);
...
 
RISOLTO TUTTO

Errore di punteggiatura, ora stampa nella tabella e non nei post, come volevo
 
ciao
vista così la query sembra corretta, quindi metti il solito var_dump per vedere come viene scritta
PHP:
<?php
//........
$q="INSERT INTO successi(data_localeS,oggettoS,messaggioS,nomeS,cittaS,suoemailS,ip,bandierina)
       VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$uoemailS','$ip','$bandierina')"; 
var_dump($q);
//......
?>
se immettendo nel form un indirizzo vedi che il posto di $uoemailS risulta vuoto devi andare a vedere dove la
ricevi col $_POST, immagino che sia così
PHP:
<?php
//......
$uoemailS=$_POST['suoemailS'];
var_dump($_POST['suoemailS']);
//...
?>
se il var_dump ti da NULL evidente che non riceve, verifica il nome del campo con quello scritto nel $_POST, fai comunque una verifica anche del nome del campo in tabella.

p.s.
verifica che i campi delle tabelle che sono facoltativi cioè dove l'utente può mettere qualcosa o mettere nulla siano settati a NULL e non a NOT NULL
 
ciao
vista così la query sembra corretta, quindi metti il solito var_dump per vedere come viene scritta
PHP:
<?php
//........
$q="INSERT INTO successi(data_localeS,oggettoS,messaggioS,nomeS,cittaS,suoemailS,ip,bandierina)
       VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$uoemailS','$ip','$bandierina')"; 
var_dump($q);
//......
?>
se immettendo nel form un indirizzo vedi che il posto di $uoemailS risulta vuoto devi andare a vedere dove la
ricevi col $_POST, immagino che sia così
PHP:
<?php
//......
$uoemailS=$_POST['suoemailS'];
var_dump($_POST['suoemailS']);
//...
?>
se il var_dump ti da NULL evidente che non riceve, verifica il nome del campo con quello scritto nel $_POST, fai comunque una verifica anche del nome del campo in tabella.

p.s.
verifica che i campi delle tabelle che sono facoltativi cioè dove l'utente può mettere qualcosa o mettere nulla siano settati a NULL e non a NOT NULL
Come dicevo al #198, c'era un errore di punteggiatura, avevo scritto $uoemail invece di $suoemail

EDIT
tutti i campi li ho settari a NULL no
 
Ultima modifica:

Discussioni simili