PDA

View Full Version : inserimento


Fede83
05-10-2004, 08:46
Ciao a tuti ecco il mio problema: Sto facendo la parte amministratore di un sito web

Io ho fatto una tabella categoria con: idcategoria, categoria, collegamento (che sarebbe il link della categoria);

Poi ho una tabella prodotti con: idprodotto, nome, marca ....tutti i dati per il prodotto, e idcategoria.

Quello che non capisco è:io inserisco i dati del prodotto e la categoria, e l'inserimento nel database prodotti lo fa, (solo che nel campo categoria ce sempre scritto il numero zero) ma quando clicco su una categoria esempio accessori, non mi visualizza il prodotto.

Esempio, la categoria accessori è linkata a accessori.php Se io a questa pagina gli dico di leggere la tabella prodotti, mi visualizza tutti i prodotti, io invece voglio che nella categoria accessori mi visualizza gli accessori, nei case i case e cosi via, ma come si fa con un solo database?

Sto diventando matta..... :muro:

Questo è il codice che ho scritto:




<html>
<head>
<title>ComputerGratis.it</title>
</head>

<body bgcolor="#F7FBA4">
<br><br>
<center><h1>Inserisci un nuovo Prodotto</h1></center>
<br><br><br><br><br>
<?php
error_reporting (0);
if(!isset($_POST)) $_POST=$HTTP_POST_VARS;

else{
$nome=addslashes($_POST['nome']);
$marca=addslashes($_POST['marca']);
$descrizione=addslashes($_POST['descrizione']);
$codice=addslashes($_POST['codice']);
$prezzo=addslashes($_POST['prezzo']);
$conn = @mysql_connect("localhost","root","") or die("connessione fallita");
@mysql_select_db("computergratis") or die ("connessione fallita");

$sql = "INSERT INTO prodotti(nome, marca, descrizione, codice, prezzo) VALUES ('$nome','$marca','$descrizione','$codice','$prezzo')";
$risultato = @mysql_query($sql) or die ("query fallita");
print "<font size=3 face=terminal>Inserimento effettuato correttamente.</font><a href=scheda.php>SCHEDA PRODOTTI</a>";


}
?>
<form action="prodotti.php" method="post">
<table border="1" bordercolor="black" align="center">
<tr>
<td colspan="2" bgcolor="white"><font align="center" size="5" face="Courier"><b>Dati del Prodotto</b></font></td>
</tr>
<tr>
<td bgcolor="white"><font size="3" face="arial">Nome Prodotto</font></td>
<td><input type="text" name="nome"></td>
</tr>
<tr>
<td bgcolor="white"><font size="3" face="arial">Categoria</font></td>
<td><select name="categoria">
<?
$sql="SELECT * FROM categorie;";
$result=mysql_query($sql) or die($sql);
while($line=mysql_fetch_array($result)){
print "<option value=".$line['idcategoria'].">".$line['categoria'];
}

?>

</select>
</td>
</tr>
<tr>
<td bgcolor="white"><font size="3" face="arial">Marca</font></td>
<td><input type="text" name="marca"></td>
</tr>
<tr>
<td bgcolor="white"><font size="3" face="arial">Descrizione</font></td>
<td><input type="text" name="descrizione"></td>
</tr>
<tr>
<td bgcolor="white"><font size="3" face="arial">Codice</font></td>
<td><input type="text" name="codice"></td>
</tr>
<tr>
<td bgcolor="white"><font size="3" face="arial">Prezzo</font></td>
<td><input type="text" name="prezzo"></td>
</tr>
<tr>
<td bgcolor="white"><font size="3" face="arial">Indirizzo scheda</font></td>
<td><input type="text" name="indirizzo"></td>
</tr>
<tr>
<td colspan="2" align="center" bgcolor="white"><input type="submit" name="inserisci" value="inserisci"></td>
</tr>
</table>
</form>

<br><br><br><br><br><br><br><br>
<a href="catalogo.php"><img border="0" src="logo/indietro.gif"></a>
<a href="index.php"><img align="right" border="0" src="logo/home.gif"></a>
</body>
</html>

Ciao e grazie :mc:

maxnaldo
05-10-2004, 10:03
la categoria cioè "idcategoria" devi metterla anche nella tabella "Prodotti"

ogni prodotto deve avere anche l'id categoria a cui è associato

poi quando vuoi selezionare tutti i prodotti di una categoria ti basterà fare una select con idcategoria = valore che ti interessa.

potrai fare una JOIN fra le due tabelle:

select p.*,c.* from prodotti as p LEFT JOIN categorie as c ON p.IDCATEGORIA=c.IDCATEGORIA WHERE c.IDCATEGORIA=xxx

in questo modo tiri su dalle due tabelle tutti i dati che ti servono per i prodotti associati ad una categoria.

in un database relazionale devi avere appunto una "relazione" tra le due tabelle.

questa relazione è appunto il campo "IDCATEGORIA" ripetuto in tutte e due le tabelle

a questo punto per ogni record inserito nella tabella categorie avrai N records inseriti nella tabella prodotti.

la relazione è 1 a molti

la chiave primaria della tabella categorie è IDCATEGORIA

la chiave primaria della tabella prodotti è IDCATEGORIA+CODICEPRODOTTO

:D :D :D

Fede83
05-10-2004, 10:25
Ti ringrazio per l'aiuto, ma mi hanno detto di utilizzare questo:


http:\\...\categoria.php?id=1

invece di fare i link, cioè nella tabella categoria ci sono i seguenti campi: idcategoria, categoria, collegamento (che sarebbe il link di ogni categoria)

Prodotti contiene, idprodotto (chiaveprimaria), idcategoria(non ho capito se devo mettere anche qui chiave primaria) e poi nomeprodotto, masca, prezzo, descrizione, codice.

cosi devo unilrle lo stesso le due tabelle?


non mi odiare :muro:

maxnaldo
05-10-2004, 10:36
la tabella prodotti contiene anche l'idcategoria, puoi anche non definirlo come chiave primaria, se lo fai significa che non possono esistere due prodotti con lo stesso codice anche se su categorie diverse, va anche bene così.

la chiamata "categoria.php?id=1" serve a passare un parametro alla pagina categoria...il parametro lo troverai nella variabile $id

quel parametro ti servirà per richiamare con la select tutti i prodotti per quell'$id e quindi visualizzarne l'elenco.

in pratica nella pagina "categoria.php" farai una select:

SELECT * from Prodotti WHERE IDCATEGORIA=$id

in realtà non ho capito a cosa ti serva il campo "collegamento" nella tabella categorie.

il collegamento , se intendi il "link" alla pagina categoria te lo costruisci passando semplicemente l'ID alla pagina.

per passare uno o più paremetri ad una pagina si usa:

nomepagina.php?parametro1=valore1&parametro2=valore2&parametro3=valore3

nella pagina ti ritroverai dunque tre variabili definite così:
$parametro1='valore1';
$parametro2='valore2';
$parametro3='valore3';


:D :D

maxnaldo
05-10-2004, 10:48
ah, scusa, non avevo notato che usi le variabili HTTP_POST_VARS

if(!isset($_POST)) $_POST=$HTTP_POST_VARS;

nel caso di parametri passati direttamente attraverso il link significa che stai usando il metodo GET

quindi per beccarti l'ID non dovrai fare altro che:

if(!isset($_GET)) $_GET=$HTTP_GET_VARS;

a quel punto hai il tuo parametro ID come:

$_GET['id']