Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    48

    Form per alimentare un DB con PHP: aiuto!!

    Ciao a tutti!
    Premetto che non sono esperto di PHP, ma mi trovo a dover fare per un sito una form in cui l'utente può inviare al sua prenotazione per un matrimonio: dovrà scrivere il suo nome-cognome, se parteciperà al pranzo, e se vorrà usufruire del servizio Pullman...in pratica una form con un campo di input tipo text, 2 radio button per il pranzo (sì e no) e 2 radio button per il pullman (sì e no).
    Il DB è composto semplicemente da una tabella con 4 campi: ID (numero progressivo), Nome (TEXT di 60 caratteri), Pullman (TEXT di 3 caratteri - per inserire sì o no) e Pranzo (TEXT di 3 caratteri - per inserire sì o no).
    Ho trovato qui su HTML.IT un articolo che spiega l'interazione tra php e mysql, spiegando in pratica come realizzare un blog.
    Da questo io ho ripreso le funzioni principali che riguardano la connessione al DB, la disconnessione e l'inserimento in tabella.
    Ho fatto una pagina di prova, ma mi dice quest'errore:
    "Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /membri/happeningac2010/funzioni_mysql.php on line 7"

    ora vi posto le due pagine:

    funzioni_mysql.php:
    Codice PHP:
    <?php

    class MysqlClass

    {
      
    // parametri per la connessione al database
      
    private $nomehost "localhost";
      private 
    $nomeuser "user";
      private 
    $password "password";
      private 
    $nomedb "nomeDB";


      
    // funzione per la connessione a MySQL
      
    public function connetti()
      {
        if(
    $connessione mysql_connect($this->nomehost,$this->nomeuser,$this->password) or die (mysql_error())) {
           
    // selezione del database
           
    $selezione mysql_select_db($this->nomedb,$connessione) or die (mysql_error());
        }
        return 
    true;
        }


    // funzione per la chiusura della connessione
    public function disconnetti()
    {
            if(
    $this->attiva)
            {
                    if(
    mysql_close())
                    {
             
    $this->attiva false;
                 return 
    true;
                    }else{
                            return 
    false;
                    }
            }
     }

    //funzione per l'inserimento dei dati in tabella
        
    public function inserisci($t,$v,$r null)
        {
             if(isset(
    $this->attiva))
              {
                            
    $istruzione 'INSERT INTO '.$t;
                if(
    $r != null)
                {
                    
    $istruzione .= ' ('.$r.')';
                }

                for(
    $i 0$i count($v); $i++)
                {
                    if(
    is_string($v[$i]))
                        
    $v[$i] = '"'.$v[$i].'"';
                }
                
    $v implode(',',$v);
                
    $istruzione .= ' VALUES ('.$v.')';

                
    $query mysql_query($istruzione) or die (mysql_error());

                }else{
                    return 
    false;
                }
            }
    }
    ?>
    prenota.php:
    Codice PHP:
    <?php

    // valorizzazione delle variabili con i parametri dal form
    if(isset($_POST['submit'])&&($_POST['submit']=="Scrivi")){

      if(isset(
    $_POST['nome'])){
        
    $nome $_POST['nome'];
      }
      if(isset(
    $_POST['pullman'])){
        
    $pullman $_POST['pullman'];
      }
      if(isset(
    $_POST['pranzo'])){
        
    $pranzo $_POST['pranzo'];
      }

      
    // inclusione del file della classe
    include "funzioni_mysql.php";
    // istanza della classe
    $data = new MysqlClass();
    // chiamata alla funzione di connessione
    $data->connetti();

        
    $t "prenotazioni"//nome della tabella
        
    $v = array ($nome,$pullman,$pranzo); //valori da inserire
        
    $r =  "Nome,Pullman,Pranzo"//campi da popolare

       //chiamata alla funzione per l'inserimento dei dati
        
    $data->inserisci($t,$v,$r);
        echo 
    "Prenotazione effettuata con successo.";
        
    //disconnessione
        
    $data->disconnetti();
       }else{

      
    // form per l'inserimento
      
    ?>
    <h1>Prenotazione:</h1>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Nome e Cognome:
    <input name="nome" type="text">

    Pullman:
    Sì<input type="radio" name="pullman" value="sì" />
    No<input type="radio" name="pullman" value="no" checked="checked" />

    Pranzo:
    Sì<input type="radio" name="pranzo" value="sì" />
    No<input type="radio" name="pranzo" value="no" checked="checked" />


    <input name="submit" type="submit" value="Scrivi">
    </form>
      <?
    }
    ?>
    Spero tanto che possiate aiutarmi!!!

  2. #2
    il primo aiuto te lo fornisco io consigliandoti di cancellare la password da questo script...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    48
    Thanks!!

  4. #4

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    48
    L'ho controllate anche con PHP Editor, ma le graffe sembrano apposto!

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    48
    Ecco a voi quello che ho fatto, dopo aver raccolto alcuni ottimi consigli:

    connetti.php:
    Codice PHP:
    <?php 
      
    // parametri per la connessione al database  
    $nomehost "localhost";  
    $nomeuser "nomeuser";  
    $password "password";  
    $nomedb "nomedb"
    //---connessione---------------------------------------------------- 
    $conn = @mysql_connect($nomehost,$nomeuser,$password) or die (mysql_error()); 
    $sel = @mysql_select_db($nomedb) or die (mysql_error()); 
    ?>
    prenota.php:
    Codice PHP:
    <?php

    //leggo il submit
    if(isset($_POST['submit']) && $_POST['submit']=="Prenota"){

        
    //usa il include_once oppure require_once
        
    include_once "connessione.php";

        
    //leggo i valori
        /*per il post nome devi mettere alcuni controlli, può essere
          pericoloso inserire direttamente nel db, come minimo un adslashes
          che ti serve per i nomi del tipo "D'Alba"
          poi quando lo leggerai metterai stripslashes*/

        
    $nome=addslashes(trim($_POST['nome']));
        
    //ti conviene verificare se è stato immesso nome vuoto
        
    if($nome==""){
            echo 
    "Ti sei dimenticato di scrivere il nome";
            
    //dopo 3 secondi ripulisco il tutto senza entrare nel db
            
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
        }else{
            
    //il nome non è vuoto leggo gli altri post
            //proveniendo da un radio button selzionato di default l'isset non servirebbe
            
    if(isset($_POST['pullman'])){$pullman=$_POST['pullman'];}
            if(isset(
    $_POST['pranzo'])){$pranzo=$_POST['pranzo'];}

            
    $query="INSERT INTO prenotazioni(nome,pranzo,pullman) VALUES('$nome','$pullman','$pranzo')";
            
    $result=mysql_query($query);
            if(
    $result){
                echo 
    "Prenotazione eseguita con successo";
            }else{
                echo 
    "C'è stato un errore, riprova più tardi";
            }
    //fine if-else salvataggio
            //finito il tutto ritorno al form, se ad altra pagina metti al posto di.htm....PHP_SELF']).
            //il nome della pagina a cui vuoi che l'utente sia riinviato
            
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
        }
    //fine if-else nome
    }//fine if submit
    ?>

    <h1>Prenotazione:</h1>
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
    Nome e Cognome:
    <input name="nome" type="text">

    Pullman:
    Sì<input type="radio" name="pullman" value="sì" />
    No<input type="radio" name="pullman" value="no" checked="checked" />

    Pranzo:
    Sì<input type="radio" name="pranzo" value="sì" />
    No<input type="radio" name="pranzo" value="no" checked="checked" />


    <input name="submit" type="submit" value="Prenota">

    <input type="reset" name="Submit" value="Reset">
    </form>

    Ora il problema è che si connette al DB...solo che quando provo a schiacciare il bottone "Scrivi" mi dice il messaggio "c'è stato un errore, riprova più tardi", che niente non è!
    Poi, dopo 2 o 3 volte che ho provato la form, sono andato a vedere il db con phpmyadmin, e ho notato che un record me l'ha inserito...poi però ho riprovato con un altro inserimento (con valori diversi), ma non mi inserisce più niente!

    Ah, una cosa...pensate che sia un problema tra php4 e php5? perchè volendo potrei cambiare le impostazioni e mettere a on il supporto a php5!

    Grazie mille a tutti quelli che vorranno darmi una mano...so che siamo vicini alla soluzione!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    48
    Ho risolto così, anche se magari non è molto ortodosso!
    Ho messo tutto in un'unica pagina e ho usato la funzione mysql_db_query, come di seguito riportato:

    Codice PHP:
    <?php

    //leggo il submit
    if(isset($_POST['submit']) && $_POST['submit']=="Prenota"){

        
    $nomehost "localhost";
        
    $nomeuser "nomeuser";
        
    $password "password";
        
    $nomedb "nomedb";
        
    //---connessione----------------------------------------------------
        
    $conn mysql_connect($nomehost,$nomeuser,$password) or die (mysql_error());

        
    //leggo i valori
        /*per il post nome mettere alcuni controlli, può essere
          pericoloso inserire direttamente nel db, come minimo un adslashes
          che serve per i nomi del tipo "D'Alba"*/

        
    $nome=addslashes(trim($_POST['nome']));
        
    //verifico se è stato immesso nome vuoto
        
    if($nome==""){
            echo 
    "<b style='color:red;'>Ti sei dimenticato di scrivere il nome[/b]";
            
    //dopo 3 secondi ripulisco il tutto senza entrare nel db
            
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
        }else{
            
    //il nome non è vuoto leggo gli altri post
            //proveniendo da un radio button selzionato di default l'isset non servirebbe
            
    if(isset($_POST['pullman'])){$pullman=$_POST['pullman'];}
            if(isset(
    $_POST['pranzo'])){$pranzo=$_POST['pranzo'];}

            
    $query="INSERT INTO prenotazioni(nome,pranzo,pullman) VALUES('$nome','$pullman','$pranzo')";
            
    $result=mysql_db_query($nomedb,$query,$conn);

            if(
    $result){
                echo 
    "[b]Prenotazione eseguita con successo[/b]";
            }else{
                echo 
    "[b]C'è stato un errore, riprova più tardi[/b]";
            }
    //fine if-else salvataggio

            //finito il tutto ritorno al form, se ad altra pagina metti al posto di.htm....PHP_SELF']).
            //il nome della pagina a cui vuoi che l'utente sia riinviato
            
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
        }
    //fine if-else nome

    }//fine if submit
    ?>

    <h1>Prenotazione:</h1>
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
    Nome e Cognome:
    <input name="nome" type="text">

    Pullman:
    Sì<input type="radio" name="pullman" value="sì" />
    No<input type="radio" name="pullman" value="no" checked="checked" />

    Pranzo:
    Sì<input type="radio" name="pranzo" value="sì" />
    No<input type="radio" name="pranzo" value="no" checked="checked" />


    <input name="submit" type="submit" value="Prenota">

    <input type="reset" name="Submit" value="Reset">
    </form>
    Ho visto che funziona...come primo approccio al PHP non è stato male!
    Ora devo sfuticchiare un po' col Javascript per fare in modo che questa form mi compaia in una specie di pop-up!

    Buona giornata a a tutti

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.