Visualizzazione risultati 1 fino 21 di 21

Discussione: Menù modificabile con php

  1. #1
    Guest

    Predefinito Menù modificabile con php

    Vorrei creare per il mio sito un menù (nav) che si aggiorna automaticamente con uno script php. Siccome il sito è di un mio amico che non sa modificare i codici e non vuole un blog ma un sito vero che gestisca lui mi sono informato su internet ed è possibile creare le pagine del sito tramite php però queste pagine poi le vuole mettere nel menù dove servono a lui quindi vorrei creare in php un menù che lui può gestire senza fatica. È possibile?

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Sì, è possibile farlo. Però se vuoi utilizzare PHP devi conoscere la programmazione.

    Io ti consiglierei di utilizzare WordPress, con AlterBlog. Anche se c'è la parola "blog", puoi comunque creare un sito utilizzando le pagine piuttosto degli articoli (tipici dei blog).

    Se vuoi saperne di più, chiedi pure.

    Ciao!

  3. #3
    Guest

    Predefinito

    Mi piacerebbe farlo (sono relettronico quello del sito delle supplenze) dopo i consigli che mi avete dato voi e i libri che ho letto alla fine direi che la base la so non sono alle prime armi so programmare un pochino

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Quindi dove trovi difficoltà per scrivere tramite PHP un menù? (in ogni caso, per un semplice sito consiglio l'utilizzo di WordPress, io stesso probabilmente lo utilizzerei).

    Ciao!

  5. #5
    Guest

    Predefinito

    La mia difficoltà non è nello scrivere il codice ma fare la logica.
    Nel senso io creo delle pagine poi come faccio a dire allo script che pagine deve avere? Come faccio a dirgli l'ordine?

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Una cosa del tipo:
    Codice PHP:
    $voci = array('Home', 'Chi siamo', 'altra pagina'); // prelevi i dati da file, db o dove vuoi. Puoi anche fare una cartella e con glob() popoli l'array del menù, con una voce per ogni pagina.
    echo '<nav>'.PHP_EOL.'<ul>'.PHP_EOL;
    foreach(
    $voci as $voce)
    {
    echo
    '<li>'.$voce.'</li>'.PHP_EOL;
    }
    echo
    '</nav>'.PHP_EOL.'</ul>';
    Ciao!

  7. #7
    Guest

    Predefinito

    Con il menu sono posto grazie mille!

    Ho uno script per scrivere delle righe selezionate dal db ma mi scrive solo una riga potreste darmi una mano?
    Codice PHP:
    <?php
    include("connessione.php");
    $password=$_GET['codice_meccanografico'];
    $data = $_GET['data'];

    $query=mysqli_query($conn, "SELECT * FROM scuola WHERE codice_meccanografico = '$password'");
    $row=mysqli_fetch_array($query);
    $name=$row['nome'];


    global
    $column_headers;

    require
    './pdf/classes/fpdf181/fpdf.php';

    class
    Documento extends FPDF {
    function
    Header() {
    global
    $column_headers, $pagetitle;
    $this->Image('img/logo.png',10,6,30);
    $pagetitle = utf8_decode($pagetitle);
    $this->setX(10);
    $this->setY(25);
    $this->SetFont('Arial','B',10);
    $this->setX(10);
    $this->setY(30);



    $this->SetFont('Arial','B',10);
    $this->setXY(5,2);
    $this->Cell(200,12,$this->title,0,0,'C');
    $this->SetFont('Arial','',8);
    $this->setXY(5,2);
    $this->Cell(200,12,$this->title1,0,0,'C');
    $this->setXY(5,2);
    $this->Cell(200,12,$this->title2,0,0,'C');
    $this->setXY(10,3);


    $this->setXY(100, 15);
    $this->SetFont('Arial','B',15);
    $this->Cell(0,0,$pagetitle);
    $this->SetFont('Arial','B',10);
    $this->Line(5,30,280,30);

    $this->setY(34);

    foreach (
    $column_headers as $pos => $testo) {
    $this->setX($pos);
    $this->Cell(0,0,$testo);
    }
    $this->Line(5,40,280,40);
    $this->setXY(11, 46);
    }



    function
    Footer() {

    $this->setXY(11, -10);
    $username = $name;
    $f = date("d/m/Y")." - ".date("H:i")." Utente - $username";
    $this->Cell(0,0,$f);
    }

    function
    setColumnHeaders($ch) {
    global
    $column_headers;
    $column_headers = $ch;
    }
    }


    // Tabella famiglie articoli - PDF


    $query4 = mysqli_query($conn, "SELECT * FROM supplenze JOIN scuola ON supplenze.id_scuola = scuola.id_scuola WHERE scuola.codice_meccanografico = '$password' AND pubblico='1' AND data='$data'");
    while(
    $cicle=mysqli_fetch_array($query4)){

    $sql="SELECT * FROM supplenze,docenti WHERE doc_ass=id AND doc_ass=$cicle[doc_ass]";
    $query2 = mysqli_query($conn, $sql);
    $row1 = mysqli_fetch_array($query2, MYSQLI_ASSOC);


    $sql1="SELECT * FROM classi,docenti WHERE classi.id=$cicle[classe] AND docenti.id=$cicle[doc_sos]";
    $query3 = mysqli_query($conn, $sql1);
    $row2 = mysqli_fetch_array($query3, MYSQLI_ASSOC);


    $doc_ass = $row1['docente'];
    $data = $cicle['data'];
    $ora = $cicle['ora'];
    $classe = $row2['classe'];
    $materia = $cicle['materia'];
    $doc_sos = $row2['docente'];



    $pagetitle = "Tabella Supplenze Giornaliere";
    $nomefile = "supplenze giornaliere.pdf";

    $column_headers = array(
    10 => 'Docente assente',
    100 => 'Data',
    130 => 'Ora',
    150 => 'Classe',
    170 => 'Materia',
    200 => 'Docente sostituto',

    );

    $pdf = new Documento();
    $pdf->AliasNbPages();
    $pdf->AddPage('L');
    $pdf->SetFont('Arial','',10);
    $pdf->setColumnHeaders($column_headers);



    $pdf->setFillColor(240,30,20);

    $pdf->setXY(10, $pdf->getY());
    $pdf->setXY(10, $pdf->getY());
    $pdf->Cell(30,5,$doc_ass,0,0,'L');
    $pdf->setX(100);
    $pdf->Cell(10,5,$cicle['data'],0,0,'L');
    $pdf->setX(130);
    $pdf->Cell(10,5,$cicle['ora'],0,0,'L');
    $pdf->setX(150);
    $pdf->Cell(10,5,$classe,0,0,'L');
    $pdf->setX(170);
    $pdf->Cell(10,5,$cicle['materia'],0,0,'L');
    $pdf->setX(200);
    $pdf->Cell(10,5,$doc_sos,0,0,'L');

    $pdf->setXY(11, $pdf->getY()+6);


    $pdf->Output('supplenze giornaliere.pdf','I');

    }

    ?>

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Ipotizzando che il codice (e le query) siano corretti, non capisco perché la riga che "mostra" il pdf
    Codice PHP:
    $pdf->Output('supplenze giornaliere.pdf','I');
    sia all'interno del ciclo: non dovrebbe essere esternamente? Ovvero dopo aver dichiarato tutto il contenuto del PDF?

    Ciao!

  9. #9
    Guest

    Predefinito

    È vero ho sbagliato ora ho spostato la riga fuori dal ciclo ma il problema persiste mi mostra solo una riga non tutto quelle presenti nel database

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Non conosco quella libreria, non so se c'è un modo per "mostrare" le stringhe inserite. In ogni caso fai debug anche lato PHP, guarda se vengono letti correttamente i dati etc (esempio aiutandoti con le echo).

    Ciao!

  11. #11
    Guest

    Predefinito

    Sto facendo un po di debug e qualche problema l'ho risolto ma rimane stampata comunque una sola riga... cercherò qualche guida online grazie mille

    Vorrei creare due menù a tendina in pratica con il primo seleziono la classe e il secondo si popola dei docenti che ci sono nella classe scelta dal primo ma non voglio mettere il tasto invia al primo menu a tendina. È possibile farlo?

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Certo che è possibile farlo.
    Se non vuoi inviare alcun dato dopo aver selezionato la classe, dovrai pre-caricare tutti i docenti per ogni classe.

    Ciao!
    Ultima modifica di alemoppo : 07-10-2018 alle ore 17.22.08

  13. #13
    Guest

    Predefinito

    Ma nel codice cosa cambierebbe? Uso una select per le classi e una select per i docenti come sempre?

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    L'html deve essere come se lo facessi in html+css puro. Poi popoli le varie voci tramite PHP ad esempio come ti avevo indicato precedentemente.

    Ciao!

  15. #15
    Guest

    Predefinito

    Ma come faccio a dire quale è la classe selezionata senza tasto "invia"? Non capisco questo

  16. #16
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Non ho capito la domanda: la classe selezionata apparirà con CSS, hai guardato qualche esempio? Ad esempio questo?

    Ciao!

  17. #17
    Guest

    Predefinito

    Adesso capito cosa intendi stiamo pensando a due cose diverse! Io ho un menù a tendina fatto con <option> in cui ci sono le classi e poi ho un secondo menù a tendina sempre fatto con <option> però questo menu si deve popolare in base alla scelta del primo menù.
    Seleziono la classe "3A" e nel secondo mi escono solo i docenti della classe 3A

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Ah, in tal caso allora cambia tutto. Se vuoi utilizzare le option senza inviare i dati, devi per forza utilizzare javascript.

    Tramite javascript intercetti l'evento ad esempio Change nelle option, quindi a quell'evento modifichi il contenuto di una certa pagina prendendo i dati o da array scritti nella pagina da PHP, oppure (se potenzialmente l'insieme dei dati è molto grande), tramite richieste ajax.

    Ciao!
    Ultima modifica di alemoppo : 07-10-2018 alle ore 21.31.06

  19. #19
    Guest

    Predefinito

    Ho capito

    Grazie mille!

  20. #20
    Guest

    Predefinito

    Ho creato questo script per inviare le mail ma passando per altervista il link non viene letto come un'immagine(quando si carica la mail invece di dare il link dovrebbe caricare un'immagine ma passando per il server di altervista non viene caricata(rimane il link.
    Allora ho provato con gmail ma altervista non comunica con smtp quindi le mail non vengono inviate.
    mzanella mi ha consigliato di usare SendGrid (alemoppo hai aperto una discussione riguardo questo servizio e sono andato a leggera) prima di modificare il codice vorrei sapere se potrei risolvere il problema oppure se perdo tempo.
    Grazie mille!

    Codice PHP:
    session_start();
    include(
    "config.php");
    header('Content-type: text/html; charset=UUTF-8859-1');

    $query = "SELECT id_scuola FROM users WHERE id = ?";
    $stmt = mysqli_prepare($conn, $query);
    if (!
    $stmt) {
    die(
    "Errore nella preparazione della query: " . mysqli_error($conn));
    }
    if (!
    mysqli_stmt_bind_param($stmt, "i", $_SESSION['id_utente'])) {
    die(
    "Errore nel binding dei parametri: " . mysqli_stmt_error($stmt));
    }
    if (!
    mysqli_stmt_execute($stmt)) {
    die(
    "Errore durante l'esecuzione della query: " . mysqli_stmt_error($stmt));
    }

    $result = mysqli_stmt_get_result($stmt);
    if (!
    $result) {
    die(
    "Errore durante l'esecuzione della query: " . mysqli_stmt_error($stmt));
    }

    $row = mysqli_fetch_array($result);
    if (!
    $row) {
    die(
    "Nessun utente con l'id specificato");
    }

    $id_scuola = $row['id_scuola'];


    $query1 = mysqli_query($conn, "SELECT * FROM supplenze WHERE pubblico='0' AND id_scuola='$id_scuola'");
    while(
    $cicle=mysqli_fetch_array($query1)){
    $doc1=$cicle['doc_sos'];
    $doc2=$cicle['doc_ass'];
    $giorno=$cicle['data'];
    $ora=$cicle['ora'];
    $classe1=$cicle['classe'];
    $token=$cicle['token'];

    $query11 = mysqli_query($conn, "SELECT * FROM docenti WHERE id='$doc1'");
    while(
    $cicle=mysqli_fetch_array($query11)){
    $email=$cicle['email'];
    $doc_sos=$cicle['docente'];

    $query11 = mysqli_query($conn, "SELECT * FROM docenti,classi WHERE docenti.id='$doc2' AND classi.id='$classe1'");
    while(
    $cicle=mysqli_fetch_array($query11)){
    $doc_ass=$cicle['docente'];
    $classe=$cicle['classe'];





    $oggetto="Nuova supplenza";
    $testomsg="<html>Gentile docente ".$doc_sos.",
    La informiamo che lei avrà una supplenza per il giorno "
    .$giorno." alla ".$ora." ora nella classe ".$classe." per sostituire il docente ".$doc_ass.". Riceverà una mail la mattina del giorno della supplenza come promemoria.</html>";
    echo(
    "Devo mandare una mail al docente $doc_sos che ha indirizzo $email<br>");
    mysqli_query($conn, "INSERT INTO mail(indirizzo, oggetto) values('".$email."', '".$oggetto."')");
    $id = mysqli_insert_id($conn);
    $contenuto = $testomsg.'<br><br><img src="http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI']).'/confermasupp.php?t='.$token.'&id='.$id.'">';
    $maildest=$email;

    sendMail($maildest, $maildest, $oggetto, $contenuto);

  21. #21
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Se vuoi inviare una email in formato HTML (quindi con tag html funzionanti), devi dichiarare nell'header dell'email questa stringa (in generale puoi modificare il charset, adattati a quello che stai utilizzando tu):
    Codice:
    MIME-Version: 1.0\r\nContent-type: text/html; charset=utf-8\r\n
    Trovi un esempio nella documentazione ufficiale della funzione mail(), esempio #5.

    Poi se vuoi utilizzare SendGrid puoi farlo, ma tieni presente che il problema è che l'email non è in formato html.

    Ciao!
    Ultima modifica di alemoppo : 08-10-2018 alle ore 22.03.01

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •