Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema con guida PHP/MySql pratica: righe ripetute

    Salve a tutti,
    ne approfitto per salutare la comunità considerato che è il mio primo intervento...ma passiamo al dunque!

    Ho seguito la guida php di cui parlo ad oggetto e riscontro un problema al quale non ho trovato risposta, o almeno credo, tra le pagine del forum. Dopo aver fatto dei test con gli script, ho cercato di raggiungere l'obiettivo che mi ero prefissato: quello di creare una gestione delle news all'interno della home page del mio sito (non mi passo il link perchè non è ancora online).

    Il problema fondamentale che mi blocca al termine di tutto è la ripetizione, che viene fatta in automatico, successivamente al "submit" del form: in pratica anzichè scrivere una sola riga nel database...ne scrive 2! Io sono agli inizi con php e magari sarà una sciochezza...vi posto i codici delle pagine.

    Piccola puntualizzazione...ho inserito il tutto in un <iframe> perchè non riuscivo ad inglobare come volevo la visualizzazione delle news...anche se il mio obiettivo era quello di inserirle in un <div>. Magari mi potrete consigliare voi come fare.

    pagina insert.php
    Codice PHP:
    <?
    include ("config.inc.php");




    ?>

    <form method="post" action="save.php" id="newsInsert">
    Titolo:

    <input type="text" size="40" name="titolo" />



    Data:


    <select name="giorno">
    <?
    for ($i=1$i<=31$i++)
      echo 
    "<option value=\"$i\">$i</option>";
    ?>
    </select>

    <select name="mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="anno">
    <option value="2008">2008</option>
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    <option value="2011">2011</option>
    <option value="2012">2012</option>
    </select>




    Autore:

    <input type="text" size="40" name="autore" />



    E-mail:

    <input type="text" size="40" name="mail" />



    Testo:

    <textarea cols="60" rows="40" name="testo"></textarea>



    Password:

    <input type="password" size="40" name="pass" />



    <input type="submit" value="Invia" />
    </form>

    pagina index.php
    Codice PHP:
    <? include("config.inc.php");   $go "Notizia del ";    $db mysql_connect($db_host$db_user$db_password); if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php"); mysql_select_db($db_name$db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");  $query "SELECT id, data, titolo, testo FROM news ORDER BY data DESC LIMIT 0,5";  $result mysql_query($query$db);  while ($row mysql_fetch_array($result))  {     echo /*"<a href=\"view.php?id=$row[id]\">" . */'<span style="color:888888; font-size:12px">'."[i]"."$go".date("j/n/y"$row['data'])."
    "
    ."[/i]"."</span>"'<span style="color:007000;">'.$row[titolo]</a>
    ."</span>""$row[testo]

    "
    ;     }          mysql_close($db);  ?>
    pagina save.php
    Codice PHP:
    <?
    //header ("Location: index.php");


    include("config.inc.php");



      
    $titolo=$_REQUEST['titolo'];
    $autore=$_REQUEST['autore'];
    $mail=$_REQUEST['mail'];
    $testo=$_REQUEST['testo'];
    $pass=$_REQUEST['pass'];
    $giorno=$_REQUEST['giorno'];
    $mese=$_REQUEST['mese'];
    $anno=$_REQUEST['anno'];


    if (
    $pass != $password): echo "Password errata";



    elseif (
    trim($titolo) == "" OR trim($testo) == ""):
      echo 
    "I campi Titolo e Testo devono essere riempiti!";
      
      else :
      
    $titolo addslashes(stripslashes($titolo));
      
    $autore addslashes(stripslashes($autore));
      
    $mail addslashes(stripslashes($mail));
      
    $testo addslashes(stripslashes($testo));
      
      
    $titolo str_replace("<""&lt;"$titolo);
      
    $titolo str_replace(">""&gt;"$titolo);   
      
    $autore str_replace("<""&lt;"$autore);
      
    $autore str_replace(">""&gt;"$autore);
      
    $testo str_replace("<""&lt;"$testo);
      
    $testo str_replace(">""&gt;"$testo);
      
    $testo nl2br($testo);
      
      
    $data mktime("0""0""0"$mese$giorno$anno);
      
        
    $db mysql_connect($db_host$db_user$db_password);
      if (
    $db == FALSE)
        die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");

      
    mysql_select_db($db_name$db)
        or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
        
         
    $query "INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('$titolo', '$testo', '$data', '$autore', '$mail')";
         
         
    $result mysql_query($query$db);
         
          
        if (
    mysql_query($query$db))
        echo 
    "L'articolo è stato inserito correttamente";
      else
        echo 
    "Errore durante l'inserimento";
      
      



      
    mysql_close($db);
    endif; 
    // chiude la verifica della presenza dei dati

    ?>
    questa è la parte di codice con cui inglobo il resto con l'<iframe>
    Codice PHP:
    <iframe id="newsInsert" src="index.php" width="380" height="380" allowtransparency="yes" frameborder="0" style="background-color:#eee;"/></iframe
    Ovviamente se inserisco manualmente una riga nel database il problema non si pone, ma ho difficoltà poi con la data...visto che le news vengono messe in ordine di quest'ultima voce.

    Spero di non essere stato troppo lungo e poco chiaro

  2. #2
    beh, il problema è il save.php:

    $result = mysql_query($query, $db);


    if (mysql_query($query, $db))
    echo "L'articolo è stato inserito correttamente";
    else
    echo "Errore durante l'inserimento";

    fai due volte mysql_query, quindi lanci due volte la query di insert.
    Nell'if controlla il mysql_errno($db) se è != 0 allora si è verificato un errore con la query e puoi stampare il log dello stesso con mysql_error($db)

  3. #3
    scusami ma sono proprio nabbo...come faccio questo controllo di cui parli?

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.