Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Sito con news
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 04 Feb 2009 20:11    Oggetto: Sito con news Rispondi citando

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:
Codice:
$_GET['tit']

che è la variabile per il titolo che nel nostro caso è ff e
Codice:
$_GET['cat']

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
Ciao
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 04 Feb 2009 22:02    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 05 Feb 2009 13:20    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 05 Feb 2009 20:24    Oggetto: Rispondi citando

Il codice scritto da me sopra estrapola un articolo nel dettaglio,lo script è quasi pronto Wink

Domani vi farò sapere

Ciao

Ho usato un codice tutto mio Wink
Top
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 05 Feb 2009 21:04    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 05 Feb 2009 21:07    Oggetto: Rispondi citando

L'ho ritrovato è questo.Adesso bisogna capire come funziona Think Think
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 05 Feb 2009 22:09    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 06 Feb 2009 15:00    Oggetto: Rispondi citando

Citazione:
Il più famoso anche se non è free (o forse non completamente) è Zend

Questo lo conoscevo

Comunque domani provo qualcosa Wink
Top
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 08 Feb 2009 00:08    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 08 Feb 2009 10:08    Oggetto: Rispondi citando

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?
Ciao
Top
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 08 Feb 2009 14:50    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 08 Feb 2009 17:58    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 08 Feb 2009 18:04    Oggetto: Rispondi citando

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 Wink

Anche se questo misà di poco professionale.
Potrei provare a fare un sistema anti-SPAM e censurare alcune parole.

Cosa è meglio secondo te?
Top
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 09 Feb 2009 21:28    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 09 Feb 2009 22:35    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 10 Feb 2009 15:33    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 10 Feb 2009 16:52    Oggetto: Rispondi citando

Questo metodo da me è giusto se si ha un campo Categoria.
Ma sa io voglio trattare le categorie come tabelle?
Top
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 10 Feb 2009 19:27    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 11 Feb 2009 00:15    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 11 Feb 2009 14:58    Oggetto: Rispondi

Solo gli autori,con nome e cognome si registrano.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 1 ora
Vai a 1, 2  Successivo
Pagina 1 di 2

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi