problema verifica radio button

antonioamabile

Utente Attivo
21 Gen 2010
150
0
16
Salve sono sempre io e per questo mi scuso ma grazie a voi le mie conoscenze aumentano!!!
Ho scritto il seguente script
Codice:
<form action="collegamenti.php" name="orario" method="GET">
<fieldset> <legend>Porto di Partenza</legend>
<input type="text" name="partenza" value="" size="2">
<input type="text" name="minuti" value="" size="2">
  Ischia<input type="radio" name="porto" value="Ischia"/><br>
  Casamicciola<input type="radio" name="porto" value="Casamicciola"/><br>
  Forio<input type="radio" name="porto" value="forio"/><br>
  Beverello<input type="radio" name="porto" value="beverello"/><br>
  Porta di Massa <input type="radio" name="porto" value="massa"/><br>
  Mergellina <input type="radio" name="porto" value="mergellina"/><br>
  Pozzuoli <input type="radio" name="porto" value="pozzuoli"/><br>
</fieldset>

<input type="submit" name="submit" value="invia">
 <input type="reset" value="cancella">
nel file .php vado a verifiacare la validità dei dati,
ma incampo in un errore di definizioene
Codice:
<?php
$hh=$_GET['partenza'];
$min=$_GET['minuti'];
$por=$_GET['porto'];

if(isset($hh)&& isset($min) && isset($por))
{
  if(($hh >0 && $hh<25) && ($min>0 && $min<60))
  {
    echo "Possiamo verificare";
  }
  else
  {
     echo "Orario sbagliato";
  }
}
else
{
  echo "Uno dei parametri è mancante";
  
}
?>
Testando il codice da me scritto mi trovo un notice in caso in cui utilizzo il tasto invia senza aver passato alcun valore!!

Notice: Undefined index: porto in C:\Programmi\EasyPHP 3.0\www\web\capitolo 5\collegamenti.php on line 4
Uno dei parametri è mancante
Spero che mi possiate aiutare inoltre vi chiedo ma può impostare un radio button attivo di defaut???
Grazie mille!!!
 
ciao
metti dei bei var dump per vedere cosa trasmetti

PHP:
var_dump($_GET['partenza']);
var_dump($_GET['minuti']);
var_dump($_GET['porto']);

$hh=$_GET['partenza'];
$min=$_GET['minuti'];
$por=$_GET['porto'];
//....
poi perchè usi il metodo get?
 
Ok ti ringrazio, ma xkè non va bene il metodo GET dovrei usare il metodo Post??? In effetti sono degli orari....di partenza
 
in effetti io ho risolto con una serie di if che verificano il tutto ora il mio problema è quando inserisco la query non riesco visualizzare nulla non me ne viene nessuna buona oggi.....
Codice:
if(($hh >0 && $hh<25) && ($min>0 && $min<60))
    {
	
    $sql = "Select * "
    . "From collegamenti_marittimi, collegamenti_marittimi_porti, porti\n"
    . "where collegamenti_marittimi.id_collegamento=collegamenti_marittimi_porti.id_collegamento\n"
    . "And porti.id=collegamenti_marittimi_porti.id_porto And collegamenti_marittimi.orario_di_partenza=\"$hh $min \"";
          $ris=mysql_query($sql,$mysql);  
		  
          if (!$ris)
                {
                  echo "DB ERRORE, QUERY NON CONNESSA AL DATABASE\N";
                  echo 'MYSQL Error:'.mysql_error();
                  exit;
                }
                  while ($row=mysql_fetch_assoc($ris))
                  { ?> 
                   
                   <p>
                   <?php 
				      echo $row['orari_di_partenza']; 
					  echo $row['collegametni.marittimi.tipologia']; 
				  }
Ho provato la query inserndo un orario con mysql e il tutto funziona, ma se voglio far funzionare con l'operatore Like è possibile perchè non ci riesco?
Ciao Grazie
 
ciao
subito prima di
$ris=mysql_query($sql,$mysql);
metti il solito var_dump


var_dump($sql);

poi, secondo me, devi togliere /n e poi nel punto
collegamenti_marittimi.orario_di_partenza=\"$hh $min \"" tra la n e \ c'è uno spazio quindi
la query non trovera mai un orario es. 12[spazio]23[spazio] se nel db l'orario è 12[spazio]23
 
scusa dimenticavo:
prima della query io farei
$orario=$hh." ".$min;//se tra ore e minuti c'è uno spazio
anzi per essere sicuro
$orario=trim($hh." ".$min);
anzi meglio
$orario=trim($hh)." ".trim($min);
poi
....collegamenti_marittimi.orario_di_partenza='$orario'";
 
Effettuando le modifiche mi esce il seguente errore
DB ERRORE, QUERY NON CONNESSA AL DATABASE\NMYSQL Error:Tabella/alias non unico: 'collegamenti_marittimi'
 
ciao
prima controlla i dati di connessione poi prova a scrivere la query così

PHP:
$sql="SELECT * FROM collegamenti_marittimi AS cm, collegamenti_marittimi_porti AS cmp, porti AS po
WHERE cm.id_collegamento= cmp.id_collegamento AND po.id=cmp.id_porto AND cm.orario_di_partenza='$orario'";
 
Ho risolto parzialmente cosi

Codice:
include ('config.php');
include ('condb.php');
$hh=$_GET['partenza'];
$min=$_GET['minuti'];
$por=$_GET['porto'];
$sec=00;
if(isset($hh)&& isset($min) && isset($por))
{
  if(($hh >0 && $hh<25) && ($min>=-1 && $min<60))
    {
	$orario=(trim($hh).":".trim($min).":".trim($sec));
	$fine=($hh+2);
	//echo "$fine";
	$orario_fine=(trim($fine).":".trim($min).":".trim($sec));
      $sql = "Select *\n"
    . "From collegamenti_marittimi,collegamenti_marittimi_porti, porti\n"
    . " where collegamenti_marittimi.id_collegamento=collegamenti_marittimi_porti.id_collegamento\n"
    . " And porti.id=collegamenti_marittimi_porti.id_porto \n"
    . " And collegamenti_marittimi.orario_di_partenza>\"$orario\" And collegamenti_marittimi.orario_di_partenza <\"$orario_fine\"Order By orario_di_partenza";
        //var_dump($sql);
		$ris=mysql_query($sql,$mysql);  
		  
          if (!$ris)
                {
                  echo "DB ERRORE, QUERY NON CONNESSA AL DATABASE\N";
                  echo 'MYSQL Error:'.mysql_error();
                  exit;
                }
                  while ($row=mysql_fetch_assoc($ris))
                  {  
				      echo $row['orario_di_partenza']; 
					  echo $row['tipologia']; 
					  echo $row['compagnia'];
					  echo $row ?><br>
					  
					  <?php
				  }  
				  
				  
    }
      elseif ($hh==NULL && $min==NULL)
       {
         echo "Attenzione non hai inserito le ore e i minuti";
       }
      elseif ($hh==NULL)
      {
         echo "Mancano le ore";
      }
       elseif($min==NULL)
       {
         echo "Mancano i minuti";
       }
	  else
	  {
	    echo" Attenzione l'orario non esite";
	  }
}
else
{
  echo "ATTENZIONE DATO ERRATO";
}
?>
il problema e che se inserisco una partenza alle ore 07:00 non me la da nel db invece esiste!!!
Ho verificato anche richiamando l'orario 06.59.
L'errore dove avviene su $min??? Grazie mille per la vostra disponibilità!!!
 
ciao
prova in questa maniera, verificando come l'orario viene inserito nel db e che il formato che tu immetti sia uguale

PHP:
<?php
include ('config.php');
include ('condb.php');
$hh=$_GET['partenza'];
$min=$_GET['minuti'];
$por=$_GET['porto'];
//comunque fai un var dump dei get e vedi cosa ti risulta, poi se al posto del metodo get usi il post è meglio
//riduco tutto a stringa, non numero perchè il numero 00 risulta 0
$sec="00";
if(strlen($hh)<2){$hh="0".$hh;}else{$hh="".$hh;}// se h da 0 a 9 divente da 00 a 09
if($hh=="24"){$hh="00";}
if(strlen($min)<2){$min="0".$min;}else{$min="".$min;}//c.s.

if(isset($hh)&& isset($min) && isset($por)){
	if(($hh >="00" && $hh<"24") && ($min >="00" && $min<"60")){
		$orario=(trim($hh).":".trim($min).":".trim($sec));
		$fine=(int)$hh+2;//forzo ad intero
		if($fine >= 24){$fine=$fine-24;}//riporto al valore da 0 a 23, le ore 25 non sono giuste
		if(strlen($fine)<2){$fine="0".$fine;}else{$fine="".$fine;}//c.s.
	//echo "$fine";
		$orario_fine=(trim($fine).":".trim($min).":".trim($sec));
		//a che cavolo ti serve fare tutti i concatenamenti, scrivi la query più semplicemente stando attento agli spazi
		$sql = "SELECT * FROM collegamenti_marittimi AS cm,collegamenti_marittimi_porti AS cmo, porti AS po
 WHERE cm.id_collegamento=cmp.id_collegamento
 AND po.id=collegamenti_marittimi_porti.id_porto
 AND cm.orario_di_partenza >= '$orario' AND cm.orario_di_partenza <= '$fine' ORDR BY cm.orario_di_partenza";
        //var_dump($sql);
		//ecc. ec..........
?>
p.s.
un cosiglio
per essere sicuro che l'utente inserisca l'orario giusto nella forma che vuoi tu (e che ti serve) fai nel form due select

HTML:
<select name="partenza">
  <option>--seleziona ora--</option>
  <option value="00">00</option>
  <option value="01">01</option>
  <!-- eccetera... sino a -->
    <option value="23">23</option>
</select>
<select name="minuti">
  <option>--seleziona minuti--</option>
  <option value="00">00</option>
  <option value="01">01</option>
  <!-- eccetera... sino a -->
    <option value="59">59</option>
</select>
in questo modo devi verificare solo se selezionati e non la loro forma

p.s.
ti allego una parte di manuale sull'uso delle JOIN
 

Allegati

cm verifico il risultato della query

Scusate la mia ignoranza ma come posso verificare se una query è vuota io ho postato il codice, ho inserito una if la quale dovrebbe controllare se $row è uguale a Null ma non funziona, il problema di ieri riefito al orario l'ho risoloto diminuendo di 1 minuto l'orario che invio al sistema....Vi ringrazio per quanto fatto fin ora

Codice:
include ('config.php');
include ('condb.php');
$hh=$_GET['partenza'];
$min=$_GET['minuti'];
$por=$_GET['porto'];
$sec=00;
if(isset($hh)&& isset($min) && isset($por))
{
  if(($hh >0 && $hh<25) && ($min>=0 && $min<60))
    {
	$orario=(trim($hh).":".trim($min-1).":".trim($sec));
	$fine=($hh+2);
	//echo "$fine";
	$orario_fine=(trim($fine).":".trim($min).":".trim($sec));
      $sql = "Select *\n"
    . "From collegamenti_marittimi,collegamenti_marittimi_porti, porti\n"
    . " where collegamenti_marittimi.id_collegamento=collegamenti_marittimi_porti.id_collegamento\n"
    . " And porti.id=collegamenti_marittimi_porti.id_porto \n"
    . " And collegamenti_marittimi.orario_di_partenza>\"$orario\" And collegamenti_marittimi.orario_di_partenza <\"$orario_fine\"Order By orario_di_partenza";
        //var_dump($sql);
		$ris=mysql_query($sql,$mysql);  
		  
          if (!$ris)
                {
                  echo "DB ERRORE, QUERY NON CONNESSA AL DATABASE\N";
                  echo 'MYSQL Error:'.mysql_error();
                  exit;
                }
                  while ($row=mysql_fetch_assoc($ris))
                  {  
				      echo $row['orario_di_partenza']; 
					  echo $row['tipologia']; 
					  echo $row['compagnia'];
					  echo $row ?><br>
					  
					  <?php
				  }  
                            if($row==NULL)
                           echo "Impossibile continuare";
				  
				  
    }
      elseif ($hh==NULL && $min==NULL)
       {
         echo "Attenzione non hai inserito le ore e i minuti";
       }
      elseif ($hh==NULL)
      {
         echo "Mancano le ore";
      }
       elseif($min==NULL)
       {
         echo "Mancano i minuti";
       }
	  else
	  {
	    echo" Attenzione l'orario non esite";
	  }
}
else
{
  echo "ATTENZIONE DATO ERRATO";
}
?>
 
Ciao sicuramente sbaglio io faccio la verifica dopo il ciclo, tuttavia mi produce il seguente errore in fase di visualizzazione.....

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Programmi\EasyPHP 3.0\www\web\capitolo 5\collegamenti.php on line 53
Impossibile continuare

Verificare è fondamentale anche perchè da alcuni porti non puoi puoi andare esempio se vuoi partire da forio, non esiste un aliscafo che va ad ischia.....oppure non vi è un collegamento tra forio e pozzuoli...
 
ciao
prova così

PHP:
<?php
//quello che c'è prima....
if(mysql_num_rows($ris) >0){//o il contrario come ha detto alex
	while ($row=mysql_fetch_assoc($ris)){  
		echo $row['orario_di_partenza']; 
		echo $row['tipologia']; 
		echo $row['compagnia'];
	}  
 }else{
 	echo "non ci sono orari richiesti<br>";
 }                   
//quello che viene dopo....
?>

p.s.
non complicarti inutilmente la vita
non scrivere
PHP:
<?php echo "qualcosa";?><br>
<?php //eccetera...?>
puoi scrivere semlicemente
PHP:
<?php
echo "qualcosa<br>";
//eccetera...
?>
analogo se al posto di "qualcosa" c'è una variabile

p.s. al p.s.
usa al posto del tag codice: racchiudi tra tag php
 
come al solito siete dei GRANDI!!! Ti ringrazio ancora una volta per il vostro impegno e la vostra disponibilità a nome di tutti gli utenti di mrwebmaster.it
 

Discussioni simili