problema con la funzione header!!! AIUTO!

lorenzoFRS

Nuovo Utente
4 Apr 2014
15
0
0
Salve a tutti ho iniziato una guida per imparare il php "missing manual di breett McLaunghlin sono arrivato al capitolo 6 fin qui tutto bene, nel libro ci sono degli esempi di codice uno per la registrazione del utente uno per la pagina del profilo del utente con biografia nome cognome ecc allora il problema sostanzialmente è questo nel ultima parte di questo capitolo viene riportato un codice d esempio che quando un utente si iscrive al "sito"tramite un form viene reindirizzato automaticamente alla pagina del suo profilo, e si vede tutto quello che ha scritto nel form il codice d esempio che mi fa scrivere il libro è e questo: header("Location: show_user.php?user_id=" . mysql_insert_id()); ovviamente aggiunto ad altro codice che sarebbe questo:

PHP:
<?php
require("database_connection.php");
$first_name = trim($_REQUEST['first_name']);
$last_name = trim($_REQUEST['last_name']);
$email = trim($_REQUEST['email']);
$bio = trim($_REQUEST['bio']);
$facebook_url = str_replace("facebook.org", "facebook.com", trim($_REQUEST['facebook_url']));
$position = strpos($facebook_url, "facebook.com");
if ($position === false) {
$facebook_url = "http://www.facebook.com/" . $facebook_url;
}
$twitter_handle = trim($_REQUEST['twitter_handle']);
$twitter_url = "http://www.twitter.com/";
$position = strpos($twitter_handle, "@");
if ($position === false) {
$twitter_url = $twitter_url . $twitter_handle;
} else {
$twitter_url = $twitter_url . substr($twitter_handle, $position + 1);
}
header("Location: show_user.php?user_id=" . mysql_insert_id());


$insert_sql = "INSERT INTO users (first_name, last_name, email, bio, facebook_url, twitter_handle) " .
"VALUES ('{$first_name}', '{$last_name}', '{$email}', '{$bio}', " .
"'{$facebook_url}', '{$twitter_handle}');";
// Insert the user into the database
mysql_query($insert_sql);
il problema è che aggiungendo questo codice che dovrebbe riportare automaticamente l utente nella sua pagina del profilo questo non viene fatto e visualizzo soltanto che sono connesso al database e non vengo riportato nella pagina del profilo tramite questo codice:header("Location: show_user.php?user_id=" . mysql_insert_id()); da come dice il libro dovrei essere riporta nella pagina del profilo ma questo non accade anche se metto questa stringa per prima come mi è stato detto vi prego datemi una mano non riesco più a uscirne fuori!
 
Ultima modifica di un moderatore:
ciao,
non ho conoscenza di mysql, ma da come scrivi mysql_insert_id() è il richiamo ad una funzione,
che scrive le info nel db,

la tabella del db dovrebbe avere un campo "user_id" o nome simile, che si autoincrementa e che assegna di conseguenza un codice univoco allo user,

quando inserisci l'elemento nella tabella, dovrebbe esserti restituito il codice univoco che con la "return" dalla funzione, attacchi al link

spero di aver capito e di averti dato un suggerimento valido,
ciao
Marino

PHP:
header("Location: show_user.php?user_id=" . mysql_insert_id());

function  mysql_insert_id($first_name, $last_name, ........) {
  $insert_sql = "INSERT INTO users (first_name, last_name, email, bio, facebook_url, twitter_handle) " .
  "VALUES ('{$first_name}', '{$last_name}', '{$email}', '{$bio}', " .
  "'{$facebook_url}', '{$twitter_handle}');";
  // Insert the user into the database
return mysql_query($insert_sql);
}
 
Ultima modifica:
Grazie del post anche se non sono riuscito a risolvere forse non mi sono spiegato bene io allora: secondo questo manuale la prima operazione che devo fare è questa
dice:
la prima operazione è facile:
PHP:
<?php
//tutto il resto del codice già scritto//
//inserisce l' utente nel database//
mysql_query($insert_sql);
//poi mi viene detto di aggiungere questo codice sotto a quello che ho scritto adesso
//e devo scrivere questo!
header("Location: show_user.php");
exit();
poi sotto ci sono delle spiegazioni relative a come usare questa funzione alla pagina successiva C'é questo cambia tutto...e il codice che ho appena scritto cioè
PHP:
header("location:show_user.php");
sparisce e viene cambiato con questo:
PHP:
header("Location: show_user.php?user_id=" . mysql_insert_id());
e dopo di questo mi viene detto dal manuale di fare questo " ecco tutto. dopo aver aggiunto questo a CREATE_USER.PHP si è pronti per provare il tutto pero non funziona niente! il bello è che nella pagina successiva lui mostra che a lui funziona ma ti posso assicurare che ho scritto tutto come andava scritto! non ho idea del perché non funzioni! spero che magari con questa risposta più chiara che ti ho dato mi riesci a comprendere visto che forse nel post principale non mi sono spiegato benissimo! e dato che non è neanche facile spiegarlo comunque ti ringrazio ho provato a copiare il tuo codice ma l editor DW mi dice che ci sono degli errori! comunque ti ringrazio!
 
Ultima modifica di un moderatore:
Ciao, mysql_insert_id() è una funzione php che restituisce l'id dell'ultimo record inserito
quindi va messo dopo aver fatto la query
ps:
racchiudi il codice che posti tra i tag presenti sulla barra di formattazione (ultime 3 icone seconda linea)
 
Ciao scusa sono alle prime armi non è che potresti dirmi scrivendo il codice come posso risolvere il problema?grazie mille.
 
prova cosi
PHP:
$insert_sql = "INSERT INTO users (first_name, last_name, email, bio, facebook_url, twitter_handle) " .
        "VALUES ('{$first_name}', '{$last_name}', '{$email}', '{$bio}', " .
        "'{$facebook_url}', '{$twitter_handle}');";

// Insert the user into the database
if (!mysql_query($insert_sql)) {
    echo "Errore query : " . $insert_sql . " " . mysql_error();
    die();
}

header("Location: show_user.php?user_id=" . mysql_insert_id());
 
Ultima modifica:
Spiega cosa non funziona e dove si blocca lo script
la insert la fa?
ti stampa qualcosa a video?
 
Ciao intanto grazie per le tue risposte,quello che non funziona è la funzione header perché mi dovrebbe portare alla pagina del profilo del utente appena registrato automaticamente nel database viene inserito tutto perfettamente è solo quella funzione che non va..
 
ciao
nella pagina show_user.php metti come prima istruzione un var_dump
PHP:
<?php
var_dump($_GET['user_id']);
//.......
?>

e posta cosa ti riporta
 
Ciao l ho provato proprio adesso ma niente mi da le solite scritte:NULL
Connesso a mysql!

Connesso al database FRSTNCC.

Error locating user with ID
 
ti posto anche il codice della pagina show_user.php<?php

PHP:
var_dump($_GET['user_id']);
//.......
require("database_connection.php");


// Get the user ID of the user to show
$user_id = $_REQUEST['user_id'];

// Build the SELECT statement
$select_query = "SELECT * FROM users WHERE user_id = " . $user_id;

// Run the query
$result = mysql_query($select_query);

if ($result) {
  $row = mysql_fetch_array($result);
  $first_name     = $row['first_name'];
  $last_name      = $row['last_name'];
  $bio            = preg_replace("/[\r\n]+/", "</p><p>", $row['bio']);
  $email          = $row['email'];
  $facebook_url   = $row['facebook_url'];
  $twitter_handle = $row['twitter_handle'];

  // Turn $twitter_handle into a URL
  $twitter_url = "http://www.twitter.com/" . substr($twitter_handle, $position + 1);

  // To be added later
  $user_image = "../../images/missing_user.png";
} else {
  die("Error locating user with ID {$user_id}");
}
?>

<html>
 <head>
  <link href="../../css/phpMM.css" rel="stylesheet" type="text/css" />
 </head>

 <body>
  <div id="header"><h1>PHP & MySQL: The Missing Manual</h1></div>
  <div id="example">User Profile</div>

  <div id="content">
    <div class="user_profile">
      <h1><?php echo "{$first_name} {$last_name}"; ?></h1>
      <p><img src="<?php echo $user_image; ?>" class="user_pic" />
        <?php echo $bio; ?></p>
      <p class="contact_info">Get in touch with <?php echo $first_name; ?>:</p>
      <ul>
        <li>...by emailing them at 
          <a href="<?php echo $email; ?>"><?php echo $email; ?></a></li>
        <li>...by 
          <a href="<?php echo $facebook_url; ?>">checking them out on Facebook</a></li>
        <li>...by <a href="<?php echo $twitter_url; ?>">following them on Twitter</a></li>
      </ul>
    </div>
  </div>
  <div id="footer"></div>
 </body>
</html>
 
Ultima modifica di un moderatore:
per favore, posta la versione che stai usando del codice che contiene header,
altrimenti, si è un po' al buio
ciao
Marino
 
ciao
se ti da NULL viol dire non ch l'header non funzioni, ma che non tramette la querystringo o che la query stringa ha valore null.
ora guardando il tuo codice, mi sembra di capire il perchè
PHP:
<?php
//......
header("Location: show_user.php?user_id=" . mysql_insert_id());
$insert_sql = "INSERT INTO users (first_name, last_name, email, bio, facebook_url, twitter_handle) " .
"VALUES ('{$first_name}', '{$last_name}', '{$email}', '{$bio}', " .
"'{$facebook_url}', '{$twitter_handle}');";
// Insert the user into the database
mysql_query($insert_sql);
?>
le istruzioni che seguono l'header non vengono eseguite perrchè prima hai il reindirizzamento (esci dalla pagina) e non avendo fatto l'insert mysql_insert_id() e NULL
inverti il tutto
PHP:
<?php
//.....
$insert_sql = "INSERT INTO users (first_name, last_name, email, bio, facebook_url, twitter_handle) " .
"VALUES ('{$first_name}', '{$last_name}', '{$email}', '{$bio}', " .
"'{$facebook_url}', '{$twitter_handle}');";
// Insert the user into the database
mysql_query($insert_sql);
header("Location: show_user.php?user_id=" . mysql_insert_id());
?>
 
ecco la foto Schermata-2014-04-07-alle-14.22.57.jpg
 

Discussioni simili