Ti consiglio di usare BOOL come datatype per la colonna attiva: sostanzialmente se attiva segni TRUE altrimenti FALSE.
Se idcategoria è INT allora non usare gli apici per inserire il numero, altrimenti rischi che si generi un errore di MySQL.
Per collegare le due tabelle ti basta aggiungere una clausola di WHERE con la relazione ID.CATEGORIA e GALLERIA.IDCATEGORIA.
Codice PHP:
$sql = "
SELECT
categorie.nomecategoria AS nome_cat,
gallerie.nomegalleria AS nome_gal
FROM
categorie, gallerie
WHERE
categorie.attiva = TRUE AND
gallerie.attiva = TRUE AND
categorie.id = gallerie.idcategoria AND
gallerie.idcategoria = ".$catgall_scom['id'];
In questo modo ottieni un array di dati di due colonne, in cui la prima colonna si chiama nome_cat e la seconda nome_gal.
Il tuo problema però è un altro: quello che non ti arrivano alla pagina PHP i giusti valori passati dalla form.
Ergo, bisogna fare un po' di debug.
Riduci all'osso la form, come prima cosa:
codice:
<form id="form2" name="form2" enctype="multipart/form-data" name="form2" method="post" action="addgall.php">
<input id="nomegalleria" name="nomegalleria" type="text" id="nomegalleria" size="15" maxlength="15" />
<select id="idcategoria" name="idcategoria" size="1" id="idcategoria">
<option> - Scegli una Categoria - </option>
<option value = 1>Prova 1</option>
<option value = 2>Prova 2</option>
<option value = 3>Prova 3</option>
<option value = 4>Prova 4</option>
</select>
<input type="submit" name="submit2" id="submit2" value="Invia" />
</form>
Non so se hai notato, ma ho aggiunto l'entype alla form, perché sono convinto che i dati non arrivino per quel motivo!
Ad ogni modo.... nel file addgall.php, invece, scrivi quanto segue:
Codice PHP:
<?php
$nomegalleria = $_POST['nomegalleria'];
$id_cat = $_POST['idcategoria'];
echo "
Nome Galleria: $nomegalleria
ID Galleria: idcategoria
";
exit;
session_start();
require("conn.php");
$query_catgall="SELECT * FROM tabcategoriegall WHERE attiva='1' ORDER BY nomecategoria DESC";
$catgall=mysql_query($query_catgall,$conn) or die(mysql_error());
$catgall_rows=mysql_num_rows($catgall);
$catgall_scom=mysql_fetch_assoc($catgall);
$query_newgall="SELECT * FROM tabgallerie WHERE idcategoria='".$catgall_scom['id']."'";
$newgall=mysql_query($query_newgall,$conn) or die(mysql_error());
$newgall_rows=mysql_num_rows($newgall);
$newgall_scom=mysql_fetch_assoc($newgall);
if (empty($_POST['nomegalleria'])) {
header("Location: modulo_inserimento_dati.php?errore=1");
} else {
$query_innewgall="INSERT INTO tabgallerie (nomegalleria,idcategoria) VALUES ('".$_POST['nomegalleria']."','".$catgall_scom['id']."')";
$innewgall=mysql_query($query_innewgall,$conn) or die(mysql_error());
header("Location: admin.php");
}
?>
In questo modo cerchiamo di capire se le variabili arrivano tutte allo script che le processa.
Fai le prove con valori diversi, sia nel campo di testo, sia nella select.
Fammi risapere!