Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24

Discussione: Errore sospetto ';'

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266

    Errore sospetto ';'

    Salve,
    sto creando uno script gestionale di clienti, sono arrivato al punto di modificare i dati di clienti, per prima cosa mi connetto al db con un foglio esterno database.php e config.php. Per prima cosa verifco la presenza di dati inviati dall'utente:

    codice PHP:
    Codice PHP:
    if($_POST && isset($_GET['id'])) 
    Se non è presenta nessuno di quest dati mi porta direttamente alla lista con mostra_lista()

    Ora il problema sta che quando vado per modificare mi da il seguente errore:

    Parse error: syntax error, unexpected ';' sulla linea 8 che è if($_POST.....) quella sopra.

    Sapete dirmi dove sbaglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    204
    Prova a postare il codice completo della pagina, poi non mi convince molto quel $_POST...


  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266
    Codice PHP:
    <?php
    // richiamo il file di configurazione
    require 'config.php';
     
    // richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';
     
    if(
    $_POST &amp;&amp; isset($_GET['id']))

    {
      
    aggiorna_record();
    }
    elseif(isset(
    $_GET['id']))
    {
      
    mostra_record();
    }
    else
      
    mostra_lista();
     
    function 
    mostra_lista()
    {
      
    // mostro un eventuale messaggio
      
    if(isset($_GET['msg']))
        echo 
    '[b]'.htmlentities($_GET['msg']).'[/b]

    '
    ;
     
      
    // preparo la query
      
    $query "SELECT id,nome FROM clienti";
     
      
    // invio la query
      
    $result mysql_query($query);
     
      
    // controllo l'esito
      
    if (!$result) {
        die(
    "Errore nella query $query: " mysql_error());
      }
     
      echo 
    '
      <table border="1">
        <tr>
          <th>Nome</th>
          <th>&amp;nbsp;</th>
        </tr>'
    ;
     
      while (
    $row mysql_fetch_assoc($result))
      {
        
    $nome htmlspecialchars($row['nome']);
     
        
    // preparo il link per la modifica dei dati del record
        
    $link $_SERVER['PHP_SELF'] . '?id=' $row['id'];
     
        echo 
    "<tr>
            <td>
    $nome</td>
            <td><a href=\"
    $link\">modifica</a></td>
          </tr>"
    ;
      }
     
      echo 
    '</table>';
     
      
    // libero la memoria di PHP occupata dai record estratti con la SELECT
      
    mysql_free_result($result);
     
      
    // chiudo la connessione a MySQL
      
    mysql_close();
    }
     
    function 
    aggiorna_record()
    {
      
    // recupero i campi di tipo "stringa"
      
    $nome      trim($_POST['nome']);
      
    $cognome   trim($_POST['cognome']);
      
    $messaggio trim($_POST['messaggio']);
     
      
    // verifico se devo eliminare gli slash inseriti automaticamente da PHP
      
    if(get_magic_quotes_gpc())
      {
        
    $nome      stripslashes($nome);
        
    $cognome   stripslashes($cognome);
        
    $messaggio stripslashes($messaggio);
      }
     
      
    // effettuo l'escape dei caratteri speciali per inserirli all'interno della query
      
    $nome      mysql_real_escape_string($nome);
      
    $cognome   mysql_real_escape_string($cognome);
      
    $messaggio mysql_real_escape_string($messaggio);
     
      
    // recupero gli altri campi del form
      
    $sesso      = isset($_POST['sesso']) ? intval($_POST['sesso']) : 0;
      
    $newsletter = isset($_POST['newsletter']) ? 0;
      
    $attivita   intval($_POST['attivita']);
     
      
    $id intval($_GET['id']);
     
      
    // verifico la presenza dei campi obbligatori
      
    if(!$nome)
      {
        
    $messaggio urlencode("Non hai inserito il nome");
        
    header("location: $_SERVER[PHP_SELF]?id=$id&amp;msg=$messaggio");
        exit;
      }
     
      
    // preparo la query
      
    $query "UPDATE clienti SET
            nome = '
    $nome',
            cognome = '
    $cognome',
            sesso = 
    $sesso,
            newsletter = 
    $newsletter,
            attivita = 
    $attivita,
            messaggio = '
    $messaggio'
            WHERE id = 
    $id";
     
      
    // invio la query
      
    $result mysql_query($query);
     
      
    // controllo l'esito
      
    if (!$result) {
        die(
    "Errore nella query $query: " mysql_error());
      }
     
      
    // chiudo la connessione a MySQL
      
    mysql_close();
     
      
    $messaggio urlencode('Aggiornamento effettuato con successo');
      
    header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    }
     
    function 
    mostra_record()
    {
      
    // mostro un eventuale messaggio
      
    if(isset($_GET['msg']))
        echo 
    '[b]'.htmlentities($_GET['msg']).'[/b]

    '
    ;
     
      
    $id intval($_GET['id']);
     
      
    // preparo la query
      
    $query "SELECT nome,email,sesso,newsletter,attivita,messaggio FROM clienti WHERE id = $id";
     
      
    // invio la query
      
    $result mysql_query($query);
     
      
    // controllo l'esito
      
    if (!$result) {
        die(
    "Errore nella query $query: " mysql_error());
      }
     
      
    // controllo che la SELECT abbia restituito un record
      // l'id passato via GET potrebbe essere stato manipolato
      
    if(mysql_num_rows($result) != 1) {
        die(
    "l'ID passato via GET &egrave; errato");
      }
     
      list(
    $nome,$cognome,$sesso,$newsletter,$attivita,$messaggio) = mysql_fetch_row($result);
     
      
    $nome      htmlspecialchars($nome);
      
    $cognome     htmlspecialchars($cognome);
      
    $messaggio htmlspecialchars($messaggio);
     
      
    ?>
      <form name="form_registrazione" method="post" action="">
        <label>nome:
        <input name="nome" type="text" value="<?echo $nome?>" />
        </label>
        


          <label>cognome:
          <input name="cognome" type="text" value="<?echo $cognome?>" />
          </label>
        </p>
        

     Sesso:
          <label>
          <input type="radio" name="sesso" value="1" <?if($sesso==1) echo 'checked="checked"'?> />
          M</label>
          <label>
          <input type="radio" name="sesso" value="2" <?if($sesso==2) echo 'checked="checked"'?>/>
          F</label>
        </p>
        


          <label>inviami newletter:
          <input name="newsletter" type="checkbox" value="1" <?if($newsletter) echo 'checked="checked"'?> />
          </label>
        </p>
        


          <label>attività:
          <select name="attivita">
            <option value="0">:: seleziona ::</option>
            <option value="1" <?if($attivita==1) echo 'selected="selected"'?>>studente</option>
            <option value="2" <?if($attivita==2) echo 'selected="selected"'?>>lavoratore</option>
            <option value="3" <?if($attivita==3) echo 'selected="selected"'?>>disoccupato</option>
          </select>
          </label>
        </p>
        


          <label>messaggio:

          <textarea name="messaggio" cols="40" rows="5"><?echo $messaggio?></textarea>
          </label>
        </p>
        


          <input name="invia" type="submit" value="Invia" />
        </p>
      </form>
      <?
    }
    ?>

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266
    risolto grazie a ale che mi ha fatto postare il codice ^^

    invece di &amp; ho messo semplicemente &

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    204
    Figurati..!! 2 appunti:

    - non usare <? come tag di apertura ma <?php

    - cosa vuol dire $_POST e basta? Credo sia più giusto così:

    Codice PHP:
    if(isset($_POST) && isset($_GET['id']))



  6. #6
    non è esattamente così... vi spiego io cosa sò.

    $_POST è un variabile (array) globale: ciò significa che esiste SEMPRE E IN TUTTTE LE PAGINE... magari è vuota perchè non è stato inviato alcun chè... MA ESISTE CMQ.

    pertanto la condizione
    if($_POST)

    oppure

    if(isset($_POST))

    SONO SEMPRE VERE!!

    Nel caso dello script di k4osz
    Codice PHP:
    if($_POST && isset($_GET['id']))  // richiede esistenza di $_POST => vera sempre
                                                 // ed esistenza di $_GET['id']

      
    aggiorna_record(); 

    elseif(isset(
    $_GET['id']))             // esistenza di $_GET['id']

      
    mostra_record(); 

    La seconda condizione non verrà mai a verificarsi in quanto coincide con la prima condizione

    Se proprio si vuole arronzare una soluzione sbrigativa e casereccia si può fare
    if(!empty($_POST)) // cioè se $_POST non è vuoto....

  7. #7
    $_POST è un variabile (array) globale: ciò significa che esiste SEMPRE E IN TUTTTE LE PAGINE... magari è vuota perchè non è stato inviato alcun chè... MA ESISTE CMQ.
    Temo non sia corretto.

    Un array (come appunto $_POST) compara a TRUE se contiuene qualche elemento mentre compara aq FALSE se non ha nessun elemento definito.

    Nel caso di $_POST una scrittura come
    if($_POST){codice da eseguire se ci sono variabili postate}

    oppure come
    if(!$_POST){codice da eseguire se non ci sono variabili postate}

    Sono lecite e fanno ciò che ci si aspetterebbe.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    204
    Ho dimenticato di scrivere una cosa, credo che qui si intenda

    Codice PHP:
    if(isset($_POST['submit']) && isset($_GET['id'])) 
    Io non ho mai trovato la scrittura $_POST e basta, è per questo che la trovavo strana e suggerendo la soluzione ne ho dimenticato un pezzo...


  9. #9
    Ma la condizione
    Codice PHP:
    if(isset($_POST['submit']) && isset($_GET['id'])) 
    Come potra' mai essere vera? o usi POST o usi GET ...oppure mi sbaglio?
    Nella vita c'e' sempre da imparare, c'e' chi impara a fare e chi impara ad aspettare.

  10. #10
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Puoi usarli anche insieme: metti nell'action del form
    action="script.php?id=12"

    e funziona.
    Anche se qualcuno lo sconsiglia io lo utilizzo e lo trovo utile anche se spesso può essere sostituito da dei campi hidden

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.