• User

    Aiuto!! Errore nello script php

    Ciao a tutti, ho un problema con questo script, la funzione principale di modifica è perfetta, ma quando ha concluso l'operazione non mi torna aggiornando la pagina, e non mi scrive "Aggiornamento effettuato con successo" devo farlo io aggiornando dal browser.
    Chi mi può indicare l'errore?
    Grazie.

    <?PHP

    include('./global.php');

    if($_POST && isset($_GET['domain_id']))
    {
    aggiorna_record();
    }
    elseif(isset($_GET['domain_id']))
    {
    mostra_record();
    }
    else
    mostra_lista();

    function mostra_lista()
    {
    // mostro un eventuale domain_descrizione
    if(isset($_GET['msg']))
    echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

    // preparo la query
    $query = "SELECT * FROM domains WHERE domain_id  ORDER by domain_id DESC";
        $conta=0;
    // invio la query
    $result = mysql_query($query);
    
    // controllo l'esito
    if (!$result) {
    	die("Errore nella query $query: " . mysql_error());
    }
    
    
    
    while ($row = mysql_fetch_assoc($result))
    {
    	$domain_url = htmlspecialchars($row['domain_url']);
                $domain_count = htmlspecialchars($row['domain_count']);
                $domain_status = htmlspecialchars($row['domain_status']);
    
    	// preparo il link per la modifica dei dati del record
    	$link = $_SERVER['PHP_SELF'] . '?domain_id=' . $row['domain_id'];
                $number=$conta+1;
    	echo "<tr>
    

    <td><font color=0000ff>$number</td>
    <td><font color=0000ff><a href="http://www.$domain_url">$domain_url</a></td>
    <td><font color=0000ff> $domain_count</td>

    <td><font color=0000ff> $domain_status</td>			
    			<td><a href=\"$link\">modifica</a></td>
    		</tr>";
        $conta++;
    }
    
    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"
    $domain_url = trim($_POST['domain_url']);
    $domain_email = trim($_POST['domain_email']);
    $domain_descrizione = trim($_POST['domain_descrizione']);

    // verifico se devo eliminare gli slash inseriti automaticamente da PHP
    if(get_magic_quotes_gpc())
    {
    	$domain_url      = stripslashes($domain_url);
    	$domain_email     = stripslashes($domain_email);
    	$domain_descrizione = stripslashes($domain_descrizione);
    }
    
    // effettuo l'escape dei caratteri speciali per inserirli all'interno della query
    $domain_url      = mysql_real_escape_string($domain_url);
    $domain_email     = mysql_real_escape_string($domain_email);
    $domain_descrizione = mysql_real_escape_string($domain_descrizione);
    
    // recupero gli altri campi del form
        $domain_count   = intval($_POST['domain_count']);
        $domain_pr   = intval($_POST['domain_pr']);
    $domain_status   = intval($_POST['domain_status']);
    
    $domain_id = intval($_GET['domain_id']);
    
    // verifico la presenza dei campi obbligatori
    if(!$domain_url)
    {
    	$domain_descrizione = urlencode("Non hai inserito il domain_url");
    	header("location: $_SERVER[PHP_SELF]?domain_id=$domain_id&msg=$domain_descrizione");
    	exit;
    }
    
    // preparo la query
    $query = "UPDATE domains SET
    			domain_url = '$domain_url',
    			domain_email = '$domain_email',
    			domain_count = $domain_count,
    			domain_pr = $domain_pr,
                                domain_status = $domain_status,
    			domain_descrizione = '$domain_descrizione'                                                           WHERE domain_id = $domain_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();
    
    $domain_descrizione = urlencode('Aggiornamento effettuato con successo');
    header("location: $_SERVER[PHP_SELF]?msg=$domain_descrizione");
    

    }

    function mostra_record()
    {
    // mostro un eventuale domain_descrizione
    if(isset($_GET['msg']))
    echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

    $domain_id = intval($_GET['domain_id']);
    
    // preparo la query
    $query = "SELECT domain_url,domain_count,domain_pr,domain_descrizione,domain_email,domain_status FROM domains WHERE domain_id = $domain_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 è errato");
    }
    
    list($domain_url,$domain_count,$domain_pr,$domain_descrizione,$domain_email,$domain_status) = mysql_fetch_row($result);
    
    $domain_url      = htmlspecialchars($domain_url);
    $domain_email     = htmlspecialchars($domain_email);
    $domain_descrizione = htmlspecialchars($domain_descrizione);
    
    ?>
    <form name="form_registrazione" method="post" action="">
      <label>url:
      <input name="domain_url" type="text" value="<?echo $domain_url?>" />
      </label>
    

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

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

      <p>
        <label>descrizione:<br />
        <textarea name="domain_descrizione" cols="40" rows="5"><?echo $domain_descrizione?></textarea>
        </label>
      </p>
    

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

    <p>
    <label>Condizione dominio:
    <select name="domain_status">
    <option value="00">:: seleziona ::</option>
    <option value="0" <?if($domain_status==0) echo 'selected="selected"'?>>Disattivato 0</option>
    <option value="1" <?if($domain_status==1) echo 'selected="selected"'?>>Attivo 1</option>
    <option value="2" <?if($domain_status==2) echo 'selected="selected"'?>>Bannato 2</option>
    </select>
    </label>
    </p>

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

    }
    ?>


  • User Attivo

    Prova a mettere:

    [php]
    //...
    $domain_descrizione = urlencode('Aggiornamento effettuato con successo');
    header("location: $_SERVER[PHP_SELF]?msg=$domain_descrizione");
    exit();
    }
    [/php]Ciao!


  • User

    Ma c'è già, è quello il problema, c'è un errore che non capisco dove può essere.


  • User Attivo

    Nello script ci sono due header("location: $_SERVER[PHP_SELF]?msg=$domain_descrizione");
    Il secondo non ha EXIT() mentre i primo si.
    Controlla bene, il problema puo' essere li.

    Ciao!