Scelta delle categorie tramite un'interrogazione del database

  • Creatore Discussione Creatore Discussione Athene
  • Data di inizio Data di inizio

Athene

Utente Attivo
16 Mar 2012
45
0
0
twitter.com
Ciao ^^ .... ho un dubbio per quanto riguarda uno script php. Quello che volevo realizzare è una form Html per l'inserimento di messaggi in n blog ( ovviamente questi messaggi devono essere insseriti nel database creato appositamente ) che trai vari vari campi abbiamo "categoria" dove tali categorie vengono prese dal database ( fino a qui fatto ) ma il problema sorge quando andando ad effettuare il submit d questa form mi provoca un errore :"Notice: Undefined index: Categoria in line 6 " e nella pagina del codice ( d seguito riportato ) vorrei mettere un'ancora per mandarli alla pagina di conferma per l'inserimento e non so come fare

Codice della form :

PHP:
<?php // creare una tabella categorie e far in modo che nella form la scelta della categoria si presa direttamente dal database

require_once 'config.php';
$conn=new PDO (DSN,USERNAME,PASSWORD);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it-IT">

<head> 
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

  <meta name="robots" content="noindex" />
  <meta name="googlebot" content="index" />
  <meta name="robots" content="nofollow" />

  <title>Titolo</title>

</head>
<body>
<div class="corpo">
<h1>Studente</h1>

<form name="categoria" action="inserimento.php" method="POST">

<p>Codice</p>
<input type="text" name="Codice"/><br>
<p>Titolo del messaggio</p>
<input type="text" name="Titolo"/><br>
<p> Messaggio</p>
<input type="text" name="messaggio"/><br>
<p> Data</p>
<input type="text" name="data"/><br>
<p> Categoria </p>
<select name="categorie">
<?php 
$categorie=$conn->query("SELECT * FROM categorie");
while ($riga=$categorie->fetch()){
echo "<option value='{$riga["codice"]}'>{$riga["Nome"]}</option>";
}
?>
</select><br>
<input type="submit" value="Upload">

</form>
</div>
</body>
</html>

Codice della pagina d'inserimento dove mi genera l'errore descritto sopra :

PHP:
<?php

require 'config.php';
$conn=new PDO (DSN,USERNAME,PASSWORD);
$stmt=$conn->prepare("INSERT INTO messaggi_blog (Codice,Titolo,messaggi,data,Categoria)VALUES (?,?,?,?,?)");
$stmt->execute(array($_POST['Codice'],$_POST['Titolo'],$_POST['messaggio'],$_POST['data'],$_POST['Categoria']));
$id=$conn->LastInsertId();
?>

Codice della pagina di conferma a cui vorrei ancorare la pagina dell'inserimento :

PHP:
<?php 

require 'config.php';

$conn=new PDO (DSN,USERNAME,PASSWORD);
$stmt=$conn->prepare("SELECT * FROM messaggi_blog.*, categorie.Nome as nome_categoria FROM messaggio_blog,categorie WHERE Categoria=categorie.Codice and messaggio_blog.Codice=?");
$stmt->execute (array($_GET['Codice']));
$ogg=$stmt->fetch();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it-IT">

<head> 
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

  <meta name="robots" content="noindex" />
  <meta name="googlebot" content="index" />
  <meta name="robots" content="nofollow" />

  <title>Titolo</title>

</head>
<body>
<div class="corpo">
<h1>Conferma</h1>
<p><strong>Inserimento avvenuto</strong></p>
<p>Codice :
<?php echo $ogg['Codice'] ?></p><br>
<p>Titolo del messaggio :
<?php echo $ogg['Titolo'] ?></p><br>
<p> Messaggio :
<?php echo $ogg['messaggio'] ?></p><br>
<p> Data : 
<?php echo $ogg['data'] ?></p><br>

<p>Categoria: <?php echo $ogg['nome_categoria'] ?>
</p>

</form>
</div>
</body>
</html>

Please help me :(
 
ciao
così a lume di naso
la select l'hai chiamata "categorie" e il $_POST['Categorie']
ricordati che php è casesensitive, accortezza è quella di scrivere i nomi delle variabile sempre tutti minuscoli si evitano diversi errori
poi cosa intendo per "ancora"? l'ancoraggio ad un punto di una pagina o un link ad una pag?
 
ciao
così a lume di naso
la select l'hai chiamata "categorie" e il $_POST['Categorie']
ricordati che php è casesensitive, accortezza è quella di scrivere i nomi delle variabile sempre tutti minuscoli si evitano diversi errori
poi cosa intendo per "ancora"? l'ancoraggio ad un punto di una pagina o un link ad una pag?

Ancoraggio ad una pagina php .. in questo caso la pagina d conferma
 
ciao
quindi, se non ho capito male, vorresti che dalla pag inserimento (dopo l'inserimento) che l'utente fosse riinviato alla pag di conferma?
se è cosi potresti usare il tag meta

PHP:
<?php 
require 'config.php'; 
$conn=new PDO (DSN,USERNAME,PASSWORD); 
$stmt=$conn->prepare("INSERT INTO messaggi_blog (Codice,Titolo,messaggi,data,Categoria)VALUES (?,?,?,?,?)"); 
$stmt->execute(array($_POST['Codice'],$_POST['Titolo'],$_POST['messaggio'],$_POST['data'],$_POST['Categoria'])); 
$id=$conn->LastInsertId();

echo "<meta http-equiv='Refresh' content='0; URL=nome_pag_conferma.php?id=$id'>";
?>
nel content ='0;... lo zero sono i secondi di attesa prima di essere riinviato e puoi variarlo a piacere
dimenticavo al posto del meta refresc potresti usare

PHP:
echo "<meta http-equiv='location' content='URL=nome_pag_conferma.php?id=$id' />";
p.s.
era quello l'errore?
 
Ultima modifica:
ciao
quindi, se non ho capito male, vorresti che dalla pag inserimento (dopo l'inserimento) che l'utente fosse riinviato alla pag di conferma?
se è cosi potresti usare il tag meta

PHP:
<?php 
require 'config.php'; 
$conn=new PDO (DSN,USERNAME,PASSWORD); 
$stmt=$conn->prepare("INSERT INTO messaggi_blog (Codice,Titolo,messaggi,data,Categoria)VALUES (?,?,?,?,?)"); 
$stmt->execute(array($_POST['Codice'],$_POST['Titolo'],$_POST['messaggio'],$_POST['data'],$_POST['Categoria'])); 
$id=$conn->LastInsertId();

echo "<meta http-equiv='Refresh' content='0; URL=nome_pag_conferma.php?id=$id'>";
?>
nel content ='0;... lo zero sono i secondi di attesa prima di essere riinviato e puoi variarlo a piacere

p.s.
era quello l'errore?

l'errore iniziale era quello della diversa scrittura della varibile categoria e poi la funzione header x il reiderizzamento .. adesso funziona però ho un problema
 
problema che riguarda la pagina d conferma ... m dà un errore di notice e quando vado ad inserire i dati nè nella pagina d conferma ne nel database compaiono i dati inseriti nella form
 
Perchè mi da questi errori d Notice x la pagina dell'inserimento ??

"Notice: Undefined index: codice in inserimento.php on line 6 Notice: Undefined index: categoria in inserimento.php on line 6 Notice: Undefined index: codice in /inserimento.php on line 8 "
 
Vi posto i nuovi codici :

Codice della form:

PHP:
<?php // creare una tabella categorie e far in modo che nella form la scelta della categoria si presa direttamente dal database

require_once 'config.php';
$conn=new PDO (DSN,USERNAME,PASSWORD);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it-IT">

<head> 
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

  <meta name="robots" content="noindex" />
  <meta name="googlebot" content="index" />
  <meta name="robots" content="nofollow" />

  <title>Titolo</title>

</head>
<body>
<div class="corpo">
<h1>Gestione messaggi</h1>

<form name="messaggi" action="inserimento.php" method="POST">

<p>Codice</p>
<input type="text" name="CODICE"/><br>
<p>Titolo del messaggio</p>
<input type="text" name="Titolo"/><br>
<p> Messaggio</p>
<input type="text" name="messaggio"/><br>
<p> Data</p>
<input type="text" name="data"/><br>
<p> Categoria </p>
<select name="categorie">
<?php 
$categorie=$conn->query("SELECT * FROM categorie");
while ($riga=$categorie->fetch()){
echo "<option value='{$riga["Codice"]}'>{$riga["Nome"]}</option>";
}
?>
</select><br>
<input type="submit" value="Upload">

</form>
</div>
</body>
</html>

Codice dell'inserimento :

PHP:
<?php

require 'config.php';
$conn=new PDO (DSN,USERNAME,PASSWORD);
$stmt=$conn->prepare("INSERT INTO messaggi_blog (CODICE,Titolo,messaggi,data,categorie)VALUES (?,?,?,?,?)");
$stmt->execute(array($_POST["CODICE"],$_POST["Titolo"],$_POST["messaggio"],$_POST["data"],$_POST["categorie"]));
$id=$conn->LastInsertId();
echo "<meta http-equiv='Refresh' content='0; URL=conferma.php?id=$id'>"; // content senve per decidere i secondi d attesa prima d essere rinviato alla pagina prescelta
?>


Codice della conferma :

PHP:
<?php 

require 'config.php';

$conn=new PDO (DSN,USERNAME,PASSWORD);
$stmt=$conn->prepare("SELECT messaggi_blog.*, categorie.Nome as nome_categoria FROM messaggi_blog,categorie WHERE categorie=categorie.Nome and messaggi_blog.CODICE =?");
$stmt->execute (array($_GET['CODICE']));
$ogg=$stmt->fetch();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it-IT">

<head> 
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

  <meta name="robots" content="noindex" />
  <meta name="googlebot" content="index" />
  <meta name="robots" content="nofollow" />

  <title>Titolo</title>

</head>
<body>
<div class="corpo">
<h1>Conferma</h1>
<p><strong>Inserimento avvenuto</strong></p>
<p>Codice :
<?php echo $ogg['Codice'] ?></p><br>
<p>Titolo del messaggio :
<?php echo $ogg['Titolo'] ?></p><br>
<p> Messaggio :
<?php echo $ogg['messaggio'] ?></p><br>
<p> Data : 
<?php echo $ogg['data'] ?></p><br>

<p>Categoria: <?php echo $ogg['nome_categoria'] ?>
</p>

</form>
</div>
</body>
</html>


Il problema che ho ancora si trova nella visualizzazione di questa pagina ( conferma ) mi dà un notice "Undefine index CODICE at line 7 "... e nn mi visualizza la relativa form riempita .. e quando vado nel terminale per verificare se immetto la select della pagina d conferma mi dice vuoto invece quando digito la select sul database messaggi_blog c'è ... come mai ?
 
Ultima modifica:

Discussioni simili