- Home
 - Categorie
 - Coding e Sistemistica
 - Coding
 - Creazione Script Commenti In Php Da Zero
 
- 
							
							
							
							
							
questo:
CREATE TABLEcommenti(
idINT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
usernameVARCHAR( 30 ) NOT NULL ,
commentoVARCHAR( 500 ) NOT NULL ,
dataVARCHAR( 20 ) NOT NULL
) ENGINE = MYISAM ;poi nel 2' passaggio mi dice di creare la query in un'area di testo, lì dentro che devo scrivere?
:?:()::bho:
Grazie
 - 
							
							
							
							
							
Allora lascia perdere, è solo il backup della struttura della tabella che ti diceva di eseguire la query se perdevi la tabella

Ora per inserire e visualizzare i dati nella tabella vedi il post 22


 - 
							
							
							
							
							
Ciao Jeeves, funziona. Però nella data mi da problemi...
Username: dada
Commento: rtyeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Data: 01-01-1970, 1:00:00come potrei aggiustare il problema della data giusta? poi più aggiorno e più si moltiplica l'ultimo post..... strano....
Grazie di cuore poi quando ti sposi vengo a suonare al tuop matrimonio con il mio trombone

 - 
							
							
							
							
							
@Davide-Al said:
Ciao Jeeves, funziona. Però nella data mi da problemi...
Username: dada
Commento: rtyeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Data: 01-01-1970, 1:00:00come potrei aggiustare il problema della data giusta? poi più aggiorno e più si moltiplica l'ultimo post..... strano....
Grazie di cuore poi quando ti sposi vengo a suonare al tuop matrimonio con il mio trombone

dataVARCHAR( 20 ) NOT NULL
credo che si qui' il problema...prova cosi'...
data` datatime( 20 ) NOT NULLe nel form php gli dai valore NOW
 - 
							
							
							
							
							
mi fai un esempio concreto?
<?php
include "config.php";
$user=$_POST['username'];
$commento=$_POST['commento'];
// Connessione al database
$comm = mysql_query("SELECT username, commento, data FROM commenti ORDER BY data");
// Visualizzazione commenti
while($com = mysql_fetch_assoc($comm)) {
echo "<p>Username: ".$com['username']."<br>Commento: ".$com['commento']."<br>Data: ".date('d-m-Y, G:i:s', $com['data'])."</p>";
}
echo"messaggio inviato da: $user";
$query = "INSERT INTO commenti (username, commento, data) VALUES ('$user', '$commento', '$data')";
$esecuzione = mysql_query($query, $db);
//PER LA DATA, PRIMA RICHIAMO LA FUNZIONE DATE: $data = date("D/F/Y")
?>
<p>COMMENTO:
<?php
echo"$commento";
?>ti ringrazio
 - 
							
							
							
							
							
@carlitos1982: se fai così non puoi più modificare il formato della data, invece con time() sì

@Davide-Al: il 1-1-1970, 1:00:00 e time() con valore 0

time() calcola i secondi passati da quella data

Quindi nel database, al campo data, devi inserire time(), non 0

Fammi sapere...


 - 
							
							
							
							
							
Errore
**query SQL:** CREATE TABLE `commenti` ( `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,usernameVARCHAR( 30 ) NOT NULL ,
commentoVARCHAR( 500 ) NOT NULL ,
datatime( 20 ) NOT NULL
) ENGINE = MYISAM
**Messaggio di MySQL: **
#1064 - 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 '( 20 ) NOT NULL
) ENGINE = MYISAM' at line 5
 - 
							
							
							
							
							
Errore
**query SQL:** CREATE TABLE `commenti` ( `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,usernameVARCHAR( 30 ) NOT NULL ,
commentoVARCHAR( 500 ) NOT NULL ,
datadatatime( 20 ) NOT NULL
) ENGINE = MYISAM
**Messaggio di MySQL: **
#1064 - 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 'datatime( 20 ) NOT NULL
) ENGINE = MYISAM' at line 5
 - 
							
							
							
							
							
Davide-Al, la query che crea la tabella è quella del post 22 ;), non altre query

time() di php è quello che devi inserire nel campo data quando si aggiunge un commento, vedi sempre al post 22


 - 
							
							
							
							
							
 funziona benissimo grazie sei grande nn avevo fatto caso a una cosa nel codice... grazie...Una cosa che vorrei corregere è che quando aggiorno la pagina di replica l'ultimo post con secondi diversi ovviamente. Secondo me quando aggiorno nn fa altro che interagire cn il database e duplica l'ultimo commento.... strano.....

 - 
							
							
							
							
							
Lo sai perché avviene? Perché tu la query che inserisce i commenti e la query che li visualizza li fa nello stesso file, ma invece se fai un file per vedere i commenti e un file per aggiungere i commenti tutto questo non succede


 - 
							
							
							
							
							
ok provo a separare le parti e ti faccio sapere
 - 
							
							
							
							
							
Ciao Jeeves ma perchè quando faccio un nuovo commento mi esce prima una data sbagliata...
e poi il commento giusto? forse ho due funzioni diverse insieme?Username: davide
Commento: 3333333333333333333333
Data: 01-01-1970, 1:00:00
Username: davide
Commento: 3333333333333333333333
Data: 03-07-2008, 19:35:50
messaggio inviato da: davide
COMMENTO: 444444444444444444444444questo è il file.php
<?php
include "config.php";
$user=$_POST['username'];
$commento=$_POST['commento'];
// Connessione al database
$comm = mysql_query("SELECT username, commento, data FROM commenti ORDER BY data");
// Visualizzazione commenti
while($com = mysql_fetch_assoc($comm)) {
echo "<p>Username: ".$com['username']."<br>Commento: ".$com['commento']."<br>Data: ".date('d-m-Y, G:i:s', $com['data'])."</p>";
}
echo"messaggio inviato da: $user";
$query = "INSERT INTO commenti (username, commento, data) VALUES ('$user', '$commento', '$data')";
$esecuzione = mysql_query($query, $db);
//PER LA DATA, PRIMA RICHIAMO LA FUNZIONE DATE: $data = date("D/F/Y")
mysql_query("INSERT INTO commenti (username, commento, data) VALUES("".$username."", "".$commento."", "".time()."")");
?>
<p>COMMENTO:
<?php
echo"$commento";
?>nn riesco a capire l'errore

 - 
							
							
							
							
							
Lo sai perché? Perché se vai a vedere nel phpmyadmin il contenuto della tabella, dove vedi 1-1-1970, 1:00:00, alla voce data sta 0?
Invece lo devi sostituire con i veri secondi passati da quella data, che te li dà time() di php

Poi, devi eseguire una sola query per inserire i dati nel database, e sta sempre al post 22


 - 
							
							
							
							
							
Comunque ti faccio io una bozza dei file:
scrivicommenti.php
[php]<?php
include("config.php");
$user = $_POST['username'];
$commento = $_POST['commento'];
// Connessione al database
if($user == "" || $commento == "") {
echo "Non hai compilato tutti i campi";
} else {
mysql_query("INSERT INTO commenti (username, commento, data) VALUES("".$username."", "".$commento."", "".time()."")"); // Query di inserimento dati
}
[/php]
Ti consiglio di utilizzare un captcha comunque
vedicommenti.php
[php]<?php
include("config.php");
$formatodata = "D/F/Y"; // Il formato della data quando la visualizzi// Connessione al database
$comm = mysql_query("SELECT username, commento, data FROM commenti ORDER BY data");
// Visualizzazione commenti
while($com = mysql_fetch_assoc($comm)) {
echo "<p>Username: ".$com['username']."<br>Commento: ".$com['commento']."<br>Data: ".date($formatodata, $com['data'])."</p>";
}
?>[/php]Fammi sapere...


 - 
							
							
							
							
							
non riesco a seguirti scusa

il valore 0 nel database nn so dove andarlo a modoficare cn la data giusta..
 - 
							
							
							
							
							
Ma aspetta, l'hai trovato?

Puoi usare mktime() per trasformare una data in secondi passati da quella data, ma con gli annunci non c'entra niente.
Esempio: che data vuoi inserire? (e io ti do i secondi passati da quella data e ti faccio vedere come ho fatto;))

 - 
							
							
							
							
							
Ciao, ho provato in tutti i modi ma nn riesco ancora a risolvere il problema della prima data giusta. Ho provato sia al latyo database e sia al lato codice con i tuoi esempi, ma niente...
il problema mi rimane sempre lo stesso:
la prima data è sbagliata 1/1/1970
e le altre giustee quando aggiorno la pagina si duplica l'ultimo commento, e più aggiorno più si duplica..
nn so come risolverlo, qualcuno mi può aiutare? per favore. Grazie a tutti
 - 
							
							
							
							
							
Allora per ricavare i secondi passati da quella data a una che vuoi tu devi usare mktime() e poi lo inserisci dove nel database sta scritto 0.
Esempio:
[php]<?php
// Inserisci i dati che vuoi e ti darà i secondi passati da quella data
$giorno = "";
$mese = "";
$anno = "";
$ora = "";
$minuti = "";
$secondi = "";// E qui te li fa vedere
echo mktime($ora,$minuti,$secondi,$mese,$giorno,$anno);
?>[/php]Poi inserisci il numero di secondi che ti fa vedere nel database alla voce che a data sta scritto 0.

 - 
							
							
							
							
							
spiegati meglio, dici nel database dove sta scritto 0... !?!???
 è qui che nn capisco. Sicuramente ti riferisci a data. Ma non vedo 0 nelle caselle di data