Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 23
  1. #11
    Non hai postato tutto lo script ma solo la parte che legge il prossimo id.
    Eliminala dallo script.
    Nelle righe successive ci dovrebbe essere la query che inserisce il nuovo record, qualcosa del tipo:

    'INSERT INTO qualetabella (ID, campo1,...,campoN) VALUES ($id,"'.$campo1.....'","'.$campoN.'")';

    Sostituisci il valore della $id con la costante NULL. Così:

    'INSERT INTO qualetabella (ID, campo1,...,campoN) VALUES (NULL,"'.$campo1.....'","'.$campoN.'")';

    Se iD è autoincrementante, mysql sa già quello che deve fare: le assegnarà automaticamente il prossimo valore disponibile.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  2. #12
    Originariamente inviato da softhare
    Non hai postato tutto lo script ma solo la parte che legge il prossimo id.
    Eliminala dallo script.
    Nelle righe successive ci dovrebbe essere la query che inserisce il nuovo record, qualcosa del tipo:

    'INSERT INTO qualetabella (ID, campo1,...,campoN) VALUES ($id,"'.$campo1.....'","'.$campoN.'")';

    Sostituisci il valore della $id con la costante NULL. Così:

    'INSERT INTO qualetabella (ID, campo1,...,campoN) VALUES (NULL,"'.$campo1.....'","'.$campoN.'")';

    Se iD è autoincrementante, mysql sa già quello che deve fare: le assegnarà automaticamente il prossimo valore disponibile.

    Ok.. in questo modo assegna automaticamente un nuovo id al topic.. ma il messaggio (che è contenuto nella tabella thread che è strutturata in id, topic_id, ecc..) non entra a far parte di quel topic.
    non so se mi spiego.
    Laura Pausini ♥
    Bellissima Così

  3. #13

  4. #14
    No non ti spieghi.
    Nè hai postato il codice.
    Probabilmente ci sono altri problemi...
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  5. #15
    Scusatemi, ho trovato un po' di tempo per riportare il codice e scrivo nella speranza che qualcuno riesca a trovare una soluzione al mio problema.

    Ecco, quindi, i codici dei file php presenti nella cartella del forum.

    CONFIG.PHP
    codice:
    <?php
     # Host 
    $mysql['host'] = "localhost"; 
    # Username 
    $mysql['user'] = "bellissimacosi"; 
    # Password 
    $mysql['pass'] = "password"; 
    # Nome del DB
     $mysql['name'] = "my_bellissimacosi"; 
    # Titolo della mia Applicazione
    $title = "Bellissima Così Forum";
    # Funzioni di connessione al mio DB MySQL
    @mysql_connect($mysql['host'], $mysql['user'], $mysql['pass']); @mysql_select_db($mysql['name']);
    ?>
    INDEX.PHP
    codice:
    <?php
    # Includo il file di configurazione
    require("config.php");
    # Recupero i forum esistenti
    $query = mysql_query("SELECT * FROM forum_lite_main ORDER BY titolo ASC"); 
    # Stampo il percorso
    echo "Indice"; 
    echo "
    "; 
    # Stampo la lista di tutti i Forum
    while($result = mysql_fetch_array($query))
     { 
    echo "<a href=\"forum.php?f=$result[id]\">"; echo "$result[titolo]</a>"; } ?>
    FORUM.PHP
    codice:
    <?php
    require("config.php");
    
    # Recupero i topic del forum
    $query = @mysql_query("SELECT * FROM forum_lite_topics
        WHERE forum_id = '" . $_GET[f] . "' ORDER BY id DESC");
    
    # Recupero il titolo del forum per il percorso
    $query2 = @mysql_query("SELECT titolo FROM forum_lite_main
        WHERE id = '" . $_GET[f] . "'");
    
    # Recupero i messaggi nel topic
    $query3 = @mysql_query("SELECT MAX(topic_id) FROM 
        forum_lite_thread");
    
    $result2 = @mysql_fetch_array($query2);
    $result3 = @mysql_fetch_array($query3);
    
    # Stampo il percorso
    echo "<a href=\"index.php\">Indice</a> » 
    $result2[titolo]
    ";
    
    # Stampo a video tutti i topic del Forum selezionato
    while($result = @mysql_fetch_array($query))
    {
        echo "<a href=\"thread.php?f=$_GET[f]&t=$result[id]\">";
        echo "$result[titolo]&nbsp";
        echo "di $result[autore]</a>";
    }
    
    # Recupero il valore più alto di topic_id e lo incremento di uno
    # per creare il link nuovo topic
    $topic_id = $result3[0]+1;
    echo "
    ";
    echo "<a href=\"new.php?f=$_GET[f]&t=$topic_id\">";
    echo "Nuovo topic</a>";
    ?>
    THREAD.PHP
    codice:
    <?php
    require("config.php");
    
    # Recupero i messaggi del thread
    $query = mysql_query("SELECT * FROM forum_lite_thread
        WHERE topic_id = '" . $_GET[t] . "' ORDER BY data ASC");
    
    # Recupero il titolo del forum
    $query2 = mysql_query("SELECT titolo FROM forum_lite_main
        WHERE id = '" . $_GET[f] . "'");
    
    # Recupero il titolo del topic
    $query3 = mysql_query("SELECT titolo FROM forum_lite_topics
        WHERE forum_id = '" . $_GET[f] . "'");
    
    $result2 = mysql_fetch_array($query2);
    $result3 = mysql_fetch_array($query3);
    
    # Stampo il percorso
    echo "<a href=\"index.php\">Indice</a> »";
    echo "<a href=\"forum.php?f=$_GET[f]\">$result2[titolo]</a> »";
    echo "$result3[titolo]";
    
    # Uso il ciclo while per stampare tutti i messaggi del thread
    while($result = mysql_fetch_array($query))
    {
        echo "<hr><div style=\"display: block\">";
        echo "$result[titolo]\n";
        echo "di $result[autore]
    $result[testo]</div>\n";
    }
    
    # Stampo a video il link per rispondere alla discussione
    echo "<hr><a href=\"reply.php?f=$_GET[f]&t=$_GET[t]\">";
    echo "Rispondi</a>";
    ?>
    NEW.PHP
    codice:
    <?php
    require("config.php");
    
    # Recupero il titolo del forum dal DB
    $query2 = @mysql_query("SELECT * FROM forum_lite_main
        WHERE id = '" . $_GET[f] . "'");
    $result2 = @mysql_fetch_array($query2);
    
    # Stampo il percorso
    echo "<a href=\"index.php\">Indice</a> »";
    echo "<a href=\"forum.php?f=$_GET[f]\">";
    echo "$result2[titolo]</a> » Nuovo topic";
    
    # Se il valore di cmd è false stampo il form a video
    if ($_POST[cmd] == FALSE)
    {
        echo "<form action=\"$REQUEST_URI\" method=\"post\">\n";
        echo "Titolo:
    \n";
        echo "<input type=\"text\" name=\"titolo\">
    
    \n\n";
        echo "Nome (o nick):
    \n";
        echo "<input type=\"text\" name=\"autore\">
    
    \n\n";
        echo "Messaggio:
    \n";
        echo "<textarea name=\"testo\" cols=\"50\" rows=\"5\">";
        echo "</textarea>
    
    \n\n";
        echo "<input type=\"hidden\" name=\"cmd\" value=\"add\">\n";
        echo "<input type=\"submit\" value=\"Crea\">\n";
        echo "</form>\n";
    }
    
    # Se cmd è diverso da false...
    else
    {
        # Verifico che tutti i campi necessari siano stati compilati
        if ($_POST[titolo] == FALSE OR $_POST[autore] == FALSE
           OR $_POST[testo] == FALSE)
        {
            echo "
    
    Tutti i campi sono obbligatori.";
        }
    
        # Se il controllo è ok salvo tutto nel DB
        else
        {
            $_POST[testo] = str_replace("\n", "
    ", $_POST[testo]);
    
            mysql_query("INSERT INTO forum_lite_topics
                         VALUES ('',
                                 '" . $_GET[f] . "',
                                 '" . date("d/m/Y") . "',
                                 '" . $_POST[autore] . "',
                                 '" . $_POST[titolo] . "')");
    
            mysql_query("INSERT INTO forum_lite_thread
                         VALUES ('',
                                 'NULL',
                                 '" . date("d/m/Y") . "',
                                 '" . $_POST[autore] . "',
                                 '" . $_POST[titolo] . "',
                                 '" . $_POST[testo] . "')");
    
            echo "
    
    Il tuo topic è stato inviato con successo.";
    
        }
    }
    ?>
    REPLY.PHP
    codice:
    <?php
    require("config.php");
    
    # Recupero il titolo del forum
    $query2 = mysql_query("SELECT titolo FROM forum_lite_main
        WHERE id = '" . $_GET[f] . "'");
    
    # Recupero il titolo del topic
    $query3 = mysql_query("SELECT titolo FROM forum_lite_topics
        WHERE forum_id = '" . $_GET[f] . "'");
    
    $result2 = mysql_fetch_array($query2);
    $result3 = mysql_fetch_array($query3);
    
    # Stampo il percorso
    echo "<a href=\"index.php\">Indice</a> »";
    echo "<a href=\"forum.php?f=$_GET[f]\">$result2[titolo]</a> »";
    echo "<a href=\"thread.php?f=$_GET[f]&t=$_GET[t]\">";
    echo "$result3[titolo]</a> » Rispondi";
    
    # Se il valore di cmd è false stampo il form a video
    if ($_POST[cmd] == FALSE)
    {
        echo "<form action=\"$REQUEST_URI\" method=\"post\">\n";
        echo "Titolo: (facoltativo)
    \n";
        echo "<input type=\"text\" name=\"titolo\">
    
    \n\n";
        echo "Nome (o nick):
    \n";
        echo "<input type=\"text\" name=\"autore\">
    
    \n\n";
        echo "Messaggio:
    \n";
        echo "<textarea name=\"testo\" cols=\"50\" rows=\"5\">";
        echo "</textarea>
    
    \n\n";
        echo "<input type=\"hidden\" name=\"cmd\" value=\"add\">\n";
        echo "<input type=\"submit\" value=\"Rispondi\">\n";
        echo "</form>\n";
    }
    
    # Se cmd è diverso da false...
    else
    {
        # Verifico che tutti i campi necessari siano stati compilati
        if ($_POST[autore] == FALSE OR $_POST[testo] == FALSE)
        {
            echo "
    
    Nome e messaggio sono obbligatori.";
        }
    
        # Se il controllo è ok salvo tutto nel DB
        else
        {
            $_POST[testo] = str_replace("\n", "
    ", $_POST[testo]);
            mysql_query("INSERT INTO forum_lite_thread
                         VALUES ('',
                                  '" . $_GET[t] . "',
                                 '" . date("d/m/Y") . "',
                                 '" . $_POST[autore] . "',
                                 '" . $_POST[titolo] . "',
                                 '" . $_POST[testo] . "')");
    
            echo "
    
    Il tuo messaggio è stato inviato con successo.";
        }
    }
    ?>
    Nei codici quindi è stata apportata la modifica che aveva chiesto softhare:
    Non hai postato tutto lo script ma solo la parte che legge il prossimo id.
    Eliminala dallo script.
    Nelle righe successive ci dovrebbe essere la query che inserisce il nuovo record, qualcosa del tipo:

    'INSERT INTO qualetabella (ID, campo1,...,campoN) VALUES ($id,"'.$campo1.....'","'.$campoN.'")';

    Sostituisci il valore della $id con la costante NULL. Così:

    'INSERT INTO qualetabella (ID, campo1,...,campoN) VALUES (NULL,"'.$campo1.....'","'.$campoN.'")';

    Se iD è autoincrementante, mysql sa già quello che deve fare: le assegnarà automaticamente il prossimo valore disponibile.
    Il problema è che adesso quando creo un nuovo topic con NEW.PHP, il file assegna in modo giusto il nuovo topic id, ma non associa il messaggio a quel topic.
    Mi spiego meglio: i database sono strutturati in questo modo.

    TABELLA: forum_lite_main
    campi: id, titolo

    TABELLA: forum_lite_thread
    campi: id, topic_id, data, autore, titolo, testo

    TABELLA: forum_lite_topics
    campi: id, forum_id, data, autore, titolo

    Cosa avviene? Quando creo un nuovo topic, esso assume il nuovo valore, ma il thread (ovvero il messaggio che dovrebbe comparire) non viene associato a quel topic_id.
    Infatti nella tabella forum_lite_thread i nuovi thread hanno come valore di topic_id sempre 0.

    Mi sapete dire come correggere questo errore?
    Grazie mille e scusate se mi sono dilungato
    Laura Pausini ♥
    Bellissima Così

  6. #16
    Non puoi usare sia $_GET che $_POST nello stesso momento.
    Se la pagina ha ricevuto input come $_POST è probabile che $_GET sia undefd, e vice versa.
    Credo che sia questo il tuo problema specifico.

    Ti darei tuttavia due altri suggerimenti.

    Se invece di usare la sintassi:
    "INSERTO INTO tabella VALUES (val1,val2,val3)"
    userai la sintassi
    "INSERTO INTO tabella (campo1,campo2,campo3) VALUES (val1,val2,val3)"
    Rendi il comando più leggibile sia a te che a mysql.

    Usare direttamnete nella formattazione del comando mysql quanto proveniente dall'input dell'utente è una seria minaccia per la sicurezza del tuo sistema.
    Sostituisci:
    ...VALUES ('','" . $_GET[f] . "','" . date("d/m/Y") . "','" . $_POST[autore] . "',...
    con perlomeno:
    ...VALUES ('','" . $_GET[f] . "','" . date("d/m/Y") . "','" . stripslashes($_POST[autore]) . "',...
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  7. #17
    Originariamente inviato da softhare
    Non puoi usare sia $_GET che $_POST nello stesso momento.
    Se la pagina ha ricevuto input come $_POST è probabile che $_GET sia undefd, e vice versa.
    Credo che sia questo il tuo problema specifico.
    Come posso correggere questo problema? In che file?
    Potresti darmi un esempio per il mio caso specifico?
    Laura Pausini ♥
    Bellissima Così

  8. #18
    nella pagina new.php aggiungi al form un campo hidden con nome "forumid" e valore preso da $_GET["f"].

    E nelle query mysql sostituisci i $_GET["f"] con $_POST["forumid"]

    Segui anche gli altri due consigli che ti ho dato...
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  9. #19
    Originariamente inviato da softhare
    nella pagina new.php aggiungi al form un campo hidden con nome "forumid" e valore preso da $_GET["f"].

    E nelle query mysql sostituisci i $_GET["f"] con $_POST["forumid"]

    Segui anche gli altri due consigli che ti ho dato...
    Vediamo cosa riesco a fare!
    Laura Pausini ♥
    Bellissima Così

  10. #20
    Originariamente inviato da sciueferrara
    Vediamo cosa riesco a fare!

    Uffa niente niente niente e assolutamente niente
    Potresti ripostarmi il mio codice con le modifiche (evidenziate)?
    Scusami se ti rompo ma vedo che sei molto disponibile

    Grazie
    Laura Pausini ♥
    Bellissima Così

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.