Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Loop infinito da evitare

    Ho questo codice:

    codice:
    <?
      session_start();
      include ("config.inc.php");
      include ("funzioni.php");
    
      $nome_sist=clear($_POST['nome_sist']); 
      $tipo=$_POST['tipo']; 
      $anno=(int)($_POST['anno']);
      $bit=clear($_POST['bit']);
      $versione=clear($_POST['versione']);
      $cpu=clear($_POST['cpu']);
      $chip_sound=clear($_POST['chip_sound']);
      $altri_chip=clear($_POST['altri_chip']);
      $ram=clear($_POST['ram']);
      $logo=$_POST['logo'];
      $testo=$_POST['testo'];
      $type="sistema";
      $inseritore=$_SESSION['utente'];
      $data=date("Y-m-d g:i:s");
    
      if ($anno<1958){
        $_SESSION['anno_controllo']="Anno non valido";
        header ("Location:sistema.php");
      }
    
      elseif ($_SESSION['update']=="ok")  {
        $db= mysql_connect($db_host,$db_user,$db_password) or die("Errore connessione a MySQL: ". mysql_error());
        mysql_select_db($db_name,$db) or die("Errore  selezione del database, verificare i parametri in config.inc.php"); 
        $query="UPDATE sistemi SET nome_sist='$nome_sist', tipo='$tipo', anno='$anno',bit='$bit', versione='$versione', cpu='$cpu',chip_sound= '$chip_sound', altri_chip='$altri_chip', ram='$ram', testo='$testo' where nome_sist='$nome_sist'";
        $result=mysql_query($query) or die("impossibile eseguire l'update".mysql_error());
        $_SESSION['update']="";
        header ("Location:effettuato.php");
       } 
       elseif ($tipo!="computer" || $tipo!="console" || $tipo!="arcade" || $tipo!="portatile" || $tipo!="prototipo"){    
        $_SESSION['tipologia']="vuoto";
        header ("Location:sistema.php");
       }    
       else{
       $query="SELECT nome_sist FROM sistemi WHERE nome_sist='$nome_sist'";
       $db= mysql_connect($db_host,$db_user,$db_password) or die("Errore connessione a MySQL: ". mysql_error());
       mysql_select_db($db_name,$db) or die("Errore  selezione del database, verificare i parametri in config.inc.php");
       $result=mysql_query($query);
       if(mysql_num_rows($result)==1) {    
        $_SESSION['inserito']="inserito";
        header ("Location:produttore.php");
       }    
       
        else{
        $db= mysql_connect($db_host,$db_user,$db_password) or die("Errore connessione a MySQL: ". mysql_error());
        mysql_select_db($db_name,$db) or die("Errore  selezione del database, verificare i parametri in config.inc.php");     
        $query= "INSERT INTO sistemi (nome_sist,tipo,anno,bit,versione,cpu,chip_sound,altri_chip,ram,logo,testo) VALUES ('$nome_sist','$tipo','$anno','$bit','$versione','$cpu','$chip_sound','$altri_chip','$ram','$logo','$testo')";
        $result=mysql_query($query) or die(mysql_error()); 
        $query2="INSERT INTO articoli (tipo,nome,data,inseritore) VALUES ('$type','$nome_sist','$data','$inseritore')";
        $result=mysql_query($query2) or die("Errore nell'inserimento della tabella articoli".mysql_error());
        header ("Location:effettuato.php");    
        }
       }
    ?>
    La parte segnata in neretto controlla che la variabile $tipo ( che viene passata attraverso $_POST['tipo']) non contenga dei valori diversi da quelli inseriti nell'IF. Se li contiene , il codice rimanda alla pagina di inserimento dove questo codice visualizza l'errore:

    if ($_SESSION['tipologia']=="vuoto")
    echo " Tipo non valido ";
    $_SESSION['tipologia']="";

    Il problema è che la pagina continua a segnalarmi errore anche quando inserisco i valori giusti nell'apposito campo (ovvero 'compute','arcade' eccc....

    Non capisco dove sta l'errore, magari è una baggianata.
    qvantvm potem tantvm avde

  2. #2
    Utente bannato
    Registrato dal
    Aug 2001
    Messaggi
    696
    perchè
    elseif ($tipo!="computer" || $tipo!="console" || $tipo!="arcade" || $tipo!="portatile" || $tipo!="prototipo"){

    è una condizione sempre vera

    usa
    elseif ($tipo=="computer" || $tipo=="console" || $tipo=="arcade" || $tipo=="portatile" || $tipo=="prototipo"){

    questa è vera solo in uno dei 4 casi


  3. #3
    Originariamente inviato da bubu sette sette
    perchè
    elseif ($tipo!="computer" || $tipo!="console" || $tipo!="arcade" || $tipo!="portatile" || $tipo!="prototipo"){

    è una condizione sempre vera
    mmm, davvero???

    Ok, farò come dici tu, il porblema è che dovrei comunque creare una struttura per cui se

    if ($tipo=="computer")
    allora => vai avanti con il codice successivo
    else torna alla pagina precedente.

    e non mi viene in mente niente per risolvere la faccenda (per questo avevo usato quel metodo). Avevo pensato di metterci un continue, ma funge solo per le iterazioni (for, while, ecc). Hai qualche consiglio da darmi su come fare?
    qvantvm potem tantvm avde

  4. #4
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119
    usa diverso != e metti and && invece di or ||

  5. #5
    Ok , ora funziona, grazie mille.

    Ora devo solo capire cosa non funzionava nell'esempio precedente.
    qvantvm potem tantvm avde

  6. #6
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119
    quale il tuo o quello di bubu?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.