PhpAdmin-MySQL com MAMP

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
ciao
non devi togliere values, ma correggere ho fatto un errore di scrittuta
....
'$bandierina'");
devi correggere in
....
'$bandierina')";

ho invertito la parentesi con gli apici
il codice dopo aver letto i valori dei post immessi da un utente li inserisce (salva) in un record della tabella messaggi

Perciò se ho ben capito:

qiuesto prende i dati dal form e li inserisce nel db

PHP:
 $q="INSER INTO messaggi(data_localeS,oggettoS,messaggioS,nomeS,cittaS,suoemailS,ip,bandierina)";

Questo li prende dal db e li mette nella pagina
PHP:
 VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$suoemailS','$ip','$bandierina')";

E questo?

$ris=mysql_query($q);


Io ho fatto una prova i post-successi non si stampano le parole scritte nel form
 
ciao
si, hai capito ti faccio un esempio senza scrivere tutti i tuoi dati
l'utente
pippo scrive ciao
topolino scrive come stai
pluto scrive abbastanza bene
.........
nella tabella troverai nei rispettivi campi id, nome, messaggio
1 pippo ciao
2 topolino come stai
3 pluto abbastanza bene
e così via
 
cioa
non avevo visto il tuo ultimo post
no
non puoi staccare INSERT da VALUE
con
$q ="INSERT....
VALUES.....";

prepari solamente cosa inserire, in pratica è la descrizione di cosa vuoi fare, cioe, in questo caso, inserire nella tabella messaggi e nei relativi campi nome ecc... i loro valori
dopo aver preparato la descrizione di quello che devi (vorresti) fare dici a php di eseguire

$ris=mysql_query($q);

quello che hai descritto
 
ciao
si, hai capito ti faccio un esempio senza scrivere tutti i tuoi dati
l'utente
pippo scrive ciao
topolino scrive come stai
pluto scrive abbastanza bene
.........
nella tabella troverai nei rispettivi campi id, nome, messaggio
1 pippo ciao
2 topolino come stai
3 pluto abbastanza bene
e così via

Prima, dimmi se è giusto quello che ho scritto nell'ultimo post,

a me non si stampa niente, questo è il codice coi div

PHP:
...
 echo "<div class=\"stampaS\">";
              
               echo "<div class=\"dataBox\">$data_localeS</div><br />";
                
                echo "<div class=\"campiAltiS\">";
                
                echo "<div class=\"oggettoBox\">$oggettoS</div>";  
                     
                echo "</div>"; // campiAltiS
                
                echo "<div class=\"messaggioBox\">$messaggioS</div>";
                 
                echo "<div class=\"bassoS\"></div>"; // bassoS
                
                echo "<div class=\"nomeBox\">$nomeS,</div>";  
                
                if (!empty($cittaS)) {  // Se il campo è vuoto non stampa neanche la virgola
                echo "<div class=\"cittaBox\">$cittaS,</div>"; 
                }

                if (!empty($suoemailS)) {  // Se il campo è vuoto non stampa neanche il trattino
                echo "<div class=\"mailBox\">$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
        
if(isset($_POST['invia'])){
...
 
cioa
non avevo visto il tuo ultimo post
no
non puoi staccare INSERT da VALUE
con
$q ="INSERT....
VALUES.....";

prepari solamente cosa inserire, in pratica è la descrizione di cosa vuoi fare, cioe, in questo caso, inserire nella tabella messaggi e nei relativi campi nome ecc... i loro valori
dopo aver preparato la descrizione di quello che devi (vorresti) fare dici a php di eseguire

$ris=mysql_query($q);

quello che hai descritto
Non capisco una cosa: dal form via S_POST arrivano i dati, come fanno ad entrare nel db?

Eppoi, come fanno ad uscire per essere stampati?

Cosa intendi per tabella: quella nel db o il mio box dove si stampa il messaggio?
 
ciao
ancora non stampa nulla perchè non abbiamo ancora detto a php e mysql cosa fare (se guardi il mio primo codice ho indicato dove metteremo la parte di lettura e visualizzazione), come facevi col file html dicevi a php di aprire/leggere le righe.
per prima cosa però dovresti dirmi se la parte che scrive nel db scrive effettivamente

edit
per tabella intendo quella del db
S_POST arrivano i dati, come fanno ad entrare nel db?
come ti ho appena detto, prima "descrivi" cosa fare poi dici a php di inseririrli
 
Ultima modifica:
ciao
ancora non stampa nulla perchè non abbiamo ancora detto a php e mysql cosa fare (se guardi il mio primo codice ho indicato dove metteremo la parte di lettura e visualizzazione), come facevi col file html dicevi a php di aprire/leggere le righe.
per prima cosa però dovresti dirmi se la parte che scrive nel db scrive effettivamente

edit
per tabella intendo quella del db

come ti ho appena detto, prima "descrivi" cosa fare poi dici a php di inseririrli
C'è un ultimo post che ti ho fatto 3 domande.

Se intendi questo, no

img02sj.jpg
 
ciao
si intendo l'ultima immagine che hai postato, sulla linguetta in alto vedi "mostra" cliccando vedi cosa contiene la tabella
(1 pippo ciao ecc)
poi per spiegarci meglio il meccanismo:
cosa facevi col file html?
i valori dei $_POST li allineavi in una stringa "data|nome|...."
aprivi e leggevi il file html (array delle righe)
inserivi all'ultimo posto dell'array la stringa
riscrivevi il file html
con mysql il processo è simile
i valori di $_POST li metti nella "descrizione"
dici a php (mysql_query) di scriverli sul db

è evidente che la "descrizione", come tutto del resto, segue una precisa sintassi.

comunque quello che si può dire a php di fare col db sono diverse cose.
limitandoci al nostro, le "descrizioni" che ci interessano sono:
"INSERT INTO tabella(campo1,...) VALUES('valore1','valore2',...)" che serve a inserire i valori
"SELECT * FROM TABELLA ...." estrae i valori dalla tabella e poi volendo si visualizzano

in seguito potrebbe servirti
"UPDATE tabella SET campo1='nuovo valore'..." che aggiorna il valore di uno o più campi

un altro esempio, invece di farti usare phpmyadmin per crere la tabella avrei potuto dirti di fare un file pinco.php

PHP:
<?php
//dati di connessione
$q="CREATE TABLE IF NOT EXISTS `messaggi` (
`id` INT( 12 ) NOT NULL AUTO_INCREMENT PRIMARY KEY  ,
`data_locale` INT( 12 ) NOT NULL ,
`nome` VARCHAR( 50 ) NOT NULL ,
`citta` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 250 ) NOT NULL ,
`ip` VARCHAR( 20 ) NOT NULL ,
`bandierina` VARCHAR( 50 ) NOT NULL ,
`messaggio` TEXT NOT NULL
) ENGINE = MYISAM" ;
$ris=mysql_query($q);
?>
lanciando lo script php avrebbe creato la tabella come hai fatto tu con phpmyadmin, oppure anche il database
 
ciao
si intendo l'ultima immagine che hai postato, sulla linguetta in alto vedi "mostra" cliccando vedi cosa contiene la tabella
(1 pippo ciao ecc)
poi per spiegarci meglio il meccanismo:
cosa facevi col file html?
i valori dei $_POST li allineavi in una stringa "data|nome|...."
aprivi e leggevi il file html (array delle righe)
inserivi all'ultimo posto dell'array la stringa
riscrivevi il file html
con mysql il processo è simile
i valori di $_POST li metti nella "descrizione"
dici a php (mysql_query) di scriverli sul db

è evidente che la "descrizione", come tutto del resto, segue una precisa sintassi.

comunque quello che si può dire a php di fare col db sono diverse cose.
limitandoci al nostro, le "descrizioni" che ci interessano sono:
"INSERT INTO tabella(campo1,...) VALUES('valore1','valore2',...)" che serve a inserire i valori
"SELECT * FROM TABELLA ...." estrae i valori dalla tabella e poi volendo si visualizzano

in seguito potrebbe servirti
"UPDATE tabella SET campo1='nuovo valore'..." che aggiorna il valore di uno o più campi

un altro esempio, invece di farti usare phpmyadmin per crere la tabella avrei potuto dirti di fare un file pinco.php

PHP:
<?php
//dati di connessione
$q="CREATE TABLE IF NOT EXISTS `messaggi` (
`id` INT( 12 ) NOT NULL AUTO_INCREMENT PRIMARY KEY  ,
`data_locale` INT( 12 ) NOT NULL ,
`nome` VARCHAR( 50 ) NOT NULL ,
`citta` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 250 ) NOT NULL ,
`ip` VARCHAR( 20 ) NOT NULL ,
`bandierina` VARCHAR( 50 ) NOT NULL ,
`messaggio` TEXT NOT NULL
) ENGINE = MYISAM" ;
$ris=mysql_query($q);
?>
lanciando lo script php avrebbe creato la tabella come hai fatto tu con phpmyadmin, oppure anche il database

Ok, ho cliccato su Mostra, appare questo:

SELECT *
FROM `messaggi`
LIMIT 0 , 30
 
Qualcosa non va, da errore quando invio il form

PHP:
$q="INSER INTO messaggi(data_localeS,oggettoS,messaggioS,nomeS,cittaS,suoemailS,ip,bandierina)
       VALUES('$data_localeS','$oggettoS','$messaggioS','$nomeS','$cittaS','$suoemailS','$ip','$bandierina')"; 
            
   $ris=mysql_query($q); 
   // controllo l'esito
	if (!$ris) {
		die("Errore nella query $query: " . mysql_error());
	}

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 'INSER INTO messaggi(data_localeS,oggettoS,messaggioS,nomeS,cittaS,suoemailS,ip,b' at line 1
 
ciao
ecco la parte per visualizzare i record, devi inseririla in quello che hai gia fatto per l'inserimento
se funzia, poi andremo a mettere la paginazione in modo che volendo si possano leggere tutti i messaggi senza far diventare la pagina un lenzuolo

PHP:
<?php
//devi inserire (senza i tag php) questa parte di scripi al posto di
/*
qui dopo mettermo la visualizzazione dei messaggi
*/
//diciamo a php cosa deve fare
//per ora mettimo un limite ai messaggi da visualizzare
$numero=20;//eventualmente dopo metteremo una paginazione in modo da poterli vedere tutti
//in pratica gli dico di selzionare/leggere tutti i campi avendo messo SELECT * in ordine decrescente di id
//limitando la selezione/lettura a 20 record
$q="SELECT * FROM messaggi ORDER BY id LIMIT $numero";
//esegui
$ris=mysql_query($q);
//convine verificare che ci siano dei record
if(mysql_num_rows($ris) > 0){//conto i record
	//leggo un record alla volta e lo stampo
	while($riga=mysql_fetch_array($ris)){//$riga diventa un array associativo con chiave "nome del campo" e suo valore
		//a scopo didattico faccio cosi, poi se vuoi puoi usare l'array direttamente
		//es. echo "<div class=\"oggettoBox\">".$riga['oggettoS']."</div>";
		//comunque come preferisci
		$data=$riga['data_localeS'];//verifica che le varie chiavi siano perfettamente uguali ai nomi dei campi che hai usato
		$oggetto=$riga['oggettoS'];
		$messaggio=$riga['messaggioS'];//non mi ricordo se ho messi nl2br quiando inserisco, se no mettilo qui
		//uniformo il nome, la citta e l'email in modo che vengano visualizzati sempre uguali indipendentemenete da come l'utente li inserisce
		$nome=ucwords(strtolower($riga['nomes']));//es pInco pALLO diventa Pinco Pallo
		$citta=ucwords(strtolower($riga['cittaS']));
		$email=strtolower($riga['emailS']);
		$ip=$riga['ip'];
		$bandierina=$riga['bandierina'];
		//e visualizzo
		echo "<div class=\"stampaS\">";
		echo "<div class=\"dataBox\">$data</div>"; //non usare il br non è elegante dai un margin both nel css
		echo "<div class=\"campiAltiS\">";
		echo "<div class=\"oggettoBox\">$oggetto</div>";
		echo "</div>"; // campiAltiS 
		echo "<div class=\"messaggioBox\">$messaggio</div>";
		echo "<div class=\"bassoS\"></div>"; // bassoS 
		echo "<div class=\"nomeBox\">$nome</div>";
		if (!empty($citta)) {  // Se il campo è vuoto non stampa neanche la virgola
			echo "<div class=\"cittaBox\">, $citta</div>"; //per non stampare la virgola mettila qui
        }
		if (!empty($suoemail)) {  // Se il campo è vuoto non stampa neanche il trattino
			echo "<div class=\"mailBox\">, $suoemail&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
	}
}else{
	echo "<div class=\"stampaS\">non ci sono messaggi</div>";
}
//da qui in poi tutta la parte dell'insert e poi il form che hai gia fatto
?>
prova e sappimi dire
p.s.
verifica che non abbia fatto errori di digitazione
se funzioa poi faremo alcune piccole modifiche
 
Nella tabella del db li stampa, ma a video esce la scritta che non ci sono messaggi.

I controlli che hai inserito io li ho già:

Tuoi

PHP:
 $nome=ucwords(strtolower($riga['nomeS']));//es pInco pALLO diventa Pinco Pallo 
        $citta=ucwords(strtolower($riga['cittaS'])); 
        $suoemail=strtolower($riga['suoemailS']);


Miei

PHP:
$data_localeS = $_POST['WebDate_ScrivimiS']; // Questo codice richiama la funzione che si trova in questa pagina - WebDate_ScrivimiS()  
$nomeS = stripslashes(htmlentities(ucfirst(trim($_POST['nomeS']))));
$cittaS = stripslashes(htmlentities(ucfirst(trim($_POST['cittaS'])))); 
$suoemailS = htmlentities($_POST['suoemailS']); 
$suoemailS = str_replace(" ","",$suoemailS); // Toglie gli spazi interni nella mail
$oggettoS = stripslashes(htmlentities(ucfirst(trim($_POST['oggettoS']))));
$messaggioS = stripslashes(htmlentities(ucfirst(trim($_POST['messaggioS'])))); 
$validatorS = stripslashes(htmlentities(trim($_POST['validatorS'])));
 
Ho messo così, adesso stampa, ma non tiene i box-div allineati

PHP:
//diciamo a php cosa deve fare 
//per ora mettimo un limite ai messaggi da visualizzare 
$numero=3;//eventualmente dopo metteremo una paginazione in modo da poterli vedere tutti 
//in pratica gli dico di selzionare/leggere tutti i campi avendo messo SELECT * in ordine decrescente di id 
//limitando la selezione/lettura a 20 record 
$q="SELECT * FROM successi ORDER BY id LIMIT $numero"; 
//esegui 
$ris=mysql_query($q); 
//conviene verificare che ci siano dei record 
if(mysql_num_rows($ris) > 0){//conto i record 
    //leggo un record alla volta e lo stampo 
    while($riga=mysql_fetch_array($ris)){//$riga diventa un array associativo con chiave "nome del campo" e suo valore 
      
        echo "<div class=\"stampaS\">"; 
        echo "<div class=\"dataBox\">".$riga['data_localeS']."</div>"; //non usare il br non è elegante dai un margin both nel css 
        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($cittaS)) {  // Se il campo è vuoto non stampa neanche la virgola 
            echo "<div class=\"cittaBox\">".$riga['cittaS'].",</div>"; 
        } 
        if (!empty($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: ".$riga['ip']."</div>"; 
        echo "<div class=\"bandierinaBox\">".$riga['bandierina']."<div class=\"nazione\">".$countries[$two_letter_country_code][1]."</div></div>"; 
        echo "</div>";//stampaS 
    } 
}else{ 
    echo "<div class=\"stampaS\">Non ci sono ancora Successi, volevi scriverne uno?</div>"; 
}
 
ciao
verifica l'apertura/chiusura dei div
es. alla riga
PHP:
echo "<div class=\"bassoS\"></div>"; // bassoS
apri e chiudi un div senza nulla dentro.
la posizione dei div è uguale a quella che dovresti avere quando usi il file html

edit
se hai ancora in linea il vecchio con il file html, posta di nuovo il link che guaro il layout e vedo se l'ho scritto giusto
 
Ultima modifica:
ciao
verifica l'apertura/chiusura dei div
es. alla riga
PHP:
echo "<div class=\"bassoS\"></div>"; // bassoS
apri e chiudi un div senza nulla dentro.
la posizione dei div è uguale a quella che dovresti avere quando usi il file html

edit
se hai ancora in linea il vecchio con il file html, posta di nuovo il link che guaro il layout e vedo se l'ho scritto giusto

I div sono esattamente come prima penso sia qualche altro problema perché come vedi ogni box appare un po' più grande del precedente, eppoi non stampa il numero dei messaggi()
PHP:
$numero=5; // Limite max successi da visualizzare
// Legge tutti i campi in ordine decrescente
$q="SELECT * FROM successi ORDER BY id LIMIT $numero"; 
//esegui 
$ris=mysql_query($q); 
if(mysql_num_rows($ris) > 0){ // Conto i record (i campi compilati 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\">".$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: ".$riga['ip']."</div>"; 
        echo "<div class=\"bandierinaBox\">".$riga['bandierina']."<div class=\"nazione\">".$countries[$two_letter_country_code][1]."</div></div>"; 
        echo "</div>";//stampaS 
    } 
}else{  
    echo "<font style=\"font-size:18px;color:#0000ff;\">Non ci sono ancora Successi, volevi scriverne uno?</font>"; 
}
if(isset($_POST['invia'])){
...

img01zt.jpg
 
Ultima modifica:

Discussioni simili