Originariamente inviato da dararag
Per me invece il tuo va benissimo, basta modificarlo così:
codice:
<?php
include ("config.php");
session_start();


$giornoarrivo = $_POST['giornoarrivo']; //parte della data digitata
$mesearrivo = $_POST['mesearrivo']; //parte della data digitata
$annoarrivo = $_POST['annoarrivo']; //parte della data digitata

// Trasformo in data l'intervallo di tempo scelto
$dataarrivo = $annoarrivo . $mesearrivo . $giornoarrivo;
$dataarrivo =(date($dataarrivo,"Y-m-d"));


// Seleziono la data che mi interessa confrontare nel database

$apertura = "SELECT dataapertura FROM alloggi WHERE id_hotel='$id_hotel'";

$controlloapertura = (date($apertura,"Y-m-d"));

//Cerco di confrontare le due date

if ($dataarrivo < $controlloapertura  ) {
header ("location: ../conferma_prenotazione.php?er=3");
exit;
}

?>
Scusa eh ma unendo anno mese e giorno non si ottiene un timestamp.

E poi:
codice:
$apertura = "SELECT dataapertura FROM alloggi WHERE id_hotel='$id_hotel'";
???
Le query adesso si fanno cosi'?

Inoltre se (e dico se) hai dei timestamp perche' trasformarli con date? Sono numeri interi, si possono usare direttamente in una disuguaglianza.