Precedente :: Successivo |
Autore |
Messaggio |
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 04 Feb 2009 20:11 Oggetto: Sito con news |
|
|
Ciao a tutti dopo circa un anno mi rimetto a creare qualche script php.Mentre precedentamente mi ero occupato di creare form mail,adesso ho intenzione di creare un 'motore' per le news simile a questo di ZN,partendo da zero,oppure sfruttanto (proprio come zeusnews) phpbb.Sto trovando parecchie difficolta a riprendere a programmare con questo linguaggio.
Non è il php in sè che mi da fastidio ma è principalmente l'integrazioni con MySQL e l'uso di alcune funzione.
Ad esempio $GET e $POST.
Allora vediamo se non ricordo male $GET va usata in questo modo:
Codice: |
<a href="lista.php?tit=ff&cat=mm">
|
Dentro al file PHP abbiamo a disposizione due variabili:
che è la variabile per il titolo che nel nostro caso è ff e
questa è la variabile per la categoria dell'articolo.
Poi in base al nome della categoria estraggo l'articolo,fin qui ci sono?
Moltre difficolta le trovo con MySQL nel senso che mi è chiaro come usare gli oggetti estratti ma non come estrarli.Il database in teoria devo farlo così:
News composta dai campi autore,titolo e e-mail.
Per estrarlo basta questo?
Codice: | $query = "SELECT id, data, titolo FROM news |
Mi pare di ricordare bene o no?
Adesso le dovrei mettere in un array usando mysql_fetch_array e un ciclo while.
Praticamente per ogni id dell'array corrisponde un campo o no?
Gli esempi sono ben accetti
|
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 04 Feb 2009 22:02 Oggetto: |
|
|
Ciao,
ti consiglio di aggiungere nella tabella delle news anche un campo id auto_increment da usare come chiave.
Ora, se tu vuoi tirare fuori tutte le news dalla tabella la query è
Codice: |
SELECT
id,data,titolo
FROM
News
ORDER BY
data DESC
|
ho aggiunto l'order by per ordinare dalla più nuova alla più vecchia.
In php puoi fare così:
Codice: |
<?php
$conn=@mysqli_connect('host','utente','password') or die('Non riesco a connettermi');
$db=@mysqli_select_db('nome_database') or die('Non riesco a connettermi!');
$query
= "SELECT "
. "id,data,titolo "
. "FROM "
. "News "
. "ORDER BY "
. "data DESC ";
$rs=mysqli_query($conn,$query);
?>
|
A questo punto verifichiamo se il recordset è buono e se non è vuoto prendiamo i dati
Codice: |
<?php
$news=array();
if ($rs)
{
while ($myRow=mysqli_fetch_assoc($rs))
$news[]=$myRow;
}
?>
|
Ora se non ho scritto cazzate $news è un array in cui ogni elemento è una riga del recordset.
Per prendere ad esempio la data della prima news (l'ultima in ordine temporale) dovrai fare:
Codice: |
<?
print $news[0]['data'];
?>
|
La funzione mysqli_fetch_assoc ritorna un array associativo composto dalla riga del recordset puntata in quel momento dal while.
Quando ritorna false significa che è finito.
Bau! |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 05 Feb 2009 13:20 Oggetto: |
|
|
per estrapolare i dati dal databse posso fare così:
Codice: |
$risultato = mysql_query($query, $db);
$colonne = mysql_fetch_array($risultato);
|
Se non ho scritto cavolate mi crea una array con dentro il contentuo,il titolo,la data e la mail,o sbaglio?
Intanto ho fatto il sistema per la registrazione dei nick..lo devo provare |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 05 Feb 2009 20:24 Oggetto: |
|
|
Il codice scritto da me sopra estrapola un articolo nel dettaglio,lo script è quasi pronto
Domani vi farò sapere
Ho usato un codice tutto mio |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 05 Feb 2009 21:04 Oggetto: |
|
|
Allora diciamo che sono soddisfatto del lavoro fatto fino ad adesso,La mi applicazione-web si sta sempre di più trasformando a qualcosa di simile ad un CMS.
Allora come detto prima,oggi ho fatto gli script per inserire articoli in MySQL e sembra funzionare a meraviglia.Domani dovrò estrapolarli.
Poi ho anche fatto in modo che il tema fosse facilmente modificabile.Domani implementerò anche una sorta di BBCODE,speriamo bene.
Comunque freemind mi aveva consigliato un framework,che adesso non riesco a trovare.
Puoi ridirmelo?
Inoltre,conoscete altri framework? |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 05 Feb 2009 21:07 Oggetto: |
|
|
L'ho ritrovato è questo.Adesso bisogna capire come funziona |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 05 Feb 2009 22:09 Oggetto: |
|
|
Ti consiglio di leggere la guida ufficiale che sul sito è in formato html, purtroppo non c'è uno zip da scaricare, ti conviene fare un wget della directory remota...
Se vorrai provare il framework probabilmente succederà questo:
1) all'inizio dovrai entrare nell'ottica di come funziona
2) tirerai bestemmie perchè apparentemente una cosa cretina fatta senza symfony diventa meno cretina con lui
3) capirai pian pianino che invece il punto 2 è una cazzata perchè con symfony avrai il codice molto modulare senza sbattimenti.
Un altro framwork molto quotato è cakePHP che però non conosco.
Il più famoso anche se non è free (o forse non completamente) è Zend |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 06 Feb 2009 15:00 Oggetto: |
|
|
Citazione: | Il più famoso anche se non è free (o forse non completamente) è Zend |
Questo lo conoscevo
Comunque domani provo qualcosa |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 08 Feb 2009 00:08 Oggetto: |
|
|
Gli utenti che amministrano/moderano il sito avranno a disposizione un log-in.(che devo ancora creare)
Mi rimangono dubbi sul logout,so che alla chiusura del browser le sessioni vengono cancellate o no?
Altrimenti devo chiamare il file php dopo aver intercettato la chiusra del browser col j.s |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 08 Feb 2009 10:08 Oggetto: |
|
|
Allora per il log-out pensavo a qualcosa del genere:
Codice: |
<script type="text/javascript">
function cleanup(){
window.open ("logout.php");
}
window.onunload=cleanup;
</script> |
Che ne dite?
Poi per quanto riguarda il log-in come detto precedentemente lo potranno fare solo gli amministratori,che in teoria dovrebbero publicare articolo.
Nella form per inserire c'è il campo autore,lì dentro deve finire il nick dell'amministratore.
Ho pensato di fare tutto tramite ad una $_REQUEST praticamente quando si logga nell'url viene immagazzinato il nick che poi viene messo nell'apposito campo.
Cosa ne pensate?
|
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 08 Feb 2009 14:50 Oggetto: |
|
|
Dopo una dura mattinata di lavoro voglio fare il punto della situazione.
Allora nel mio sito avrò principalmente tre categorie:News,Tutorial,Articoli,Politica,Sondaggi.
Quindo ho 4 pagine php,news.php,tutorial.php,articoli.php,politica.php.
Dal pannello di amministrazione ogni moderatore della proprio sezione potrà inserire gli articoli.E grosso modo le tabelle saranno così:
News:autore,titolo,descrizione,contenuto,autorecommenti,contenutocommenti
Articoli:autore,titolo,descrizione,contenuto,autorecommenti,contenutocommenti
Politica:autore,titolo,descrizione,contenuto,autorecommenti,contenutocommenti
Il problema più grosso riguarda i sondaggi,infatti appogiandomi ad un servizio esterno,quindi devo modificare il file ogni volta he voglio cambiare il sondaggio.
La soluzione più intuitiva è quella di creare un editor in javascript.
Qundi il file .js dovrebbe apire sidebare.php che contiene il sondaggio e dovrebbe modificarlo.
Oppure ho pensato ad un alternativa.Immagazzinare il codice html (uso Survey Popus) in Mysql e poi estrarlo mostrandolo nella sidebar.
Sicuramente è molto più facile con il secondo metodo,voi che ne pensate. |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 08 Feb 2009 17:58 Oggetto: |
|
|
Ciao,
per il logout da un occhio qui.
Anche se non vuoi arrivare a intercettare puntualmente la fine della sessione ti consiglio di appoggiarti al db in modo da poter implementare eventualmente funzioni dipo: "Utenti connessi in questo momento", "Forza il logut di un utente" etc...
Per il sondaggio potresti invece essere un po' più preciso? |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 08 Feb 2009 18:04 Oggetto: |
|
|
Per il sondaggio mi affido ad un servizio esterno chiamato Survey Popus.
Siccome almeno ogni 15 giorni il sondaggio cambierà cercavo un modo per farlo in remoto non in locale.(quindi senza modificare i file .php)
La mia idea è quello di immagazinare,il codice html che Survey Popus genera,in Mysql.
Che ne dici?
[ problema risolto ]
Poi per i commenti avevo pensato di mostrarli solo dopo averli approvati.
Posso metterli in un tabella provvisoria chiamata commenti_da_approvare poi li trasferisco in un altro database
Anche se questo misà di poco professionale.
Potrei provare a fare un sistema anti-SPAM e censurare alcune parole.
Cosa è meglio secondo te? |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 09 Feb 2009 21:28 Oggetto: |
|
|
Sono quasi alla fine della progettazione mi rimane solo un dubbio.
Quando l'utente vuole posta il commento deve inserirsi in un determinato articolo quindi se io ho:
Id-Titolo-Autore-Contenuto-Commenti
1-ti1-mdweb-bla bla bla-(devono essere inseriri dall'utente)
Quindi io devo dirgli di mettere il commento nell'articolo che ha id1,chi mi da una mano con l'sql? |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 09 Feb 2009 22:35 Oggetto: |
|
|
Sarebbe più semplice se ci fornisse un'idea un po' meno generale dello schema del db.
Io nella maniera più semplice gestire la parte articoli/utenti/commenti così:
- tabella articoli: Articoli(Id,AutoreId,Titolo,Testo) e altri campi accessori
- tabella utenti: Utenti(Id,Nick,Password,Cognome,Nome,Attivo) e altri campi accessori
- tabella commenti: Commenti(Id,UtenteId,ArticoloId,Commento) e altri campi accessori.
Ipotizzando chi un utente debba essere registrato per poter commentare un articolo la query potrebbe essere una cosa del tipo:
Codice: |
INSERT INTO `Commenti`
(
`UtenteId`,
`ArticoloId`,
`Commento`
)
VALUES
(
'38', // id sparato a caso
'34', // id sparato a caso
'Che bello! Non pensavo che ci fosse tanta gente che la vede così' // commento sparato a caso!
)
|
Il 38 viene preso dalla sessione di login dell'utente che sta postando, il 34 è l'id dell'articolo che sta commentando e il testo è ovviamente il commento che avrà inserito in una form.
Questa è proprio un'idea semplice semplice.
Però mi pare che tu abbia sbattuto nella stessa tabella articoli e commenti (tutti in un solo campo).
Non mi sembra una grande idea.
Bisogna gestire il fatto che nella colonna "Commenti" ci saranno tutti i commenti di quell'articolo quindi andranno in qualche modo splittati. Supponendo di usare "|" come separatore possiamo usare la query che segue:
Codice: |
UPDATE
`Articoli`
SET
`Commento`=CONCAT(`Commento`,'|','Che bello!Non pensavo ci fosse tanta gente che la vede così')
WHERE
`Id`=34
|
Qui non puoi però tener traccia dello user che posta.
Forse non ho capito bene la tua idea, ma da quel che vedo mi pare che sia così.
Fai un dump della struttura del db e postala (anche solo le tabelle interessate in questa cosa). |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 10 Feb 2009 15:33 Oggetto: |
|
|
Adesso ho dei problemi con il pc.
Comunque ti dico che il sito sarà organizzato in categorie.
Quindi ho risolto così:
Codice: |
UPDATE
`Articoli`
SET
`Commento`=CONCAT(`Commento`,'|','Che bello!Non pensavo ci fosse tanta gente che la vede così')
WHERE
( Id='34' AND categoria=$categoria)
|
Per quanto riguarda il nome utente non ci sono problemi,gli utenti sono in grado i utilizzare il nick che vogliono,in quanto non devono essere necessariamente registrati.
Altrimenti posso fare un tabella separata come hai detto tu,usando sempre Where e Set per selezionare i commenti. |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 10 Feb 2009 16:52 Oggetto: |
|
|
Questo metodo da me è giusto se si ha un campo Categoria.
Ma sa io voglio trattare le categorie come tabelle? |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 10 Feb 2009 19:27 Oggetto: |
|
|
Un riassunto della situazione allora intanto ho quattro tabelle:
- sondaggi
- news
- segnalazioni
- commenti
Adesso come faccio a estrapolare solo i commenti di segnalazione?
Si può fare,usando ad esempio l'id dell'articolo.
Qundi nella tabella commenti ho:
- articolo id
- autore_commento
- commento
Quando li inserisco in Mysql ,l'la query sarà cosi
Codice: |
INSERT INTO `Commenti`
(
`utente`,
`articoloId`,
`commento`
)
VALUES
(
... // i rispettivi valori
)
|
Poi per estrapolarli farò cosi:
Codice: |
SELECT articoloid,utente,commenti FROM commenti WHERE articoloid='$articoloid' ORDER BY data DESC LIMIT
|
Che ne dici? |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 11 Feb 2009 00:15 Oggetto: |
|
|
mdweb ha scritto: | Un riassunto della situazione allora intanto ho quattro tabelle:
- sondaggi
- news
- segnalazioni
- commenti
Adesso come faccio a estrapolare solo i commenti di segnalazione?
Si può fare,usando ad esempio l'id dell'articolo.
Qundi nella tabella commenti ho:
- articolo id
- autore_commento
- commento
Quando li inserisco in Mysql ,l'la query sarà cosi
Codice: |
INSERT INTO `Commenti`
(
`utente`,
`articoloId`,
`commento`
)
VALUES
(
... // i rispettivi valori
)
|
Poi per estrapolarli farò cosi:
Codice: |
SELECT articoloid,utente,commenti FROM commenti WHERE articoloid='$articoloid' ORDER BY data DESC LIMIT
|
Che ne dici? |
Sì, ovviamente nella limit metti i parametri corretti.
Occhio alla gestione utenti: se non sbaglio un utente non registrato può commentare e può impostare il nick. Però così facendo come gestisci il fatto che se io mi registro con nick "pippo" allora un utente non registrato non lo può fare con il nick "pippo"? |
|
Top |
|
|
mdweb Dio maturo
Registrato: 18/12/07 15:59 Messaggi: 4412
|
Inviato: 11 Feb 2009 14:58 Oggetto: |
|
|
Solo gli autori,con nome e cognome si registrano. |
|
Top |
|
|
|