Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Switch che non funziona

    Salve. Uso uno switch per detrminare alcuni eventi in una pagina. All'interno di uno di questi switch ho un if. Lo posso usare? Non mi dà errori però non funziona. O forse è un problema di variabili?

    Il codice è questo:

    codice:
    switch ($_GET['step'])
          {
    	 case 'view':
    	 $action = "op=edit&step=save&id=$_GET[id]";
    	 $title = 'Modifica marca';
    	 $value = 'Modifica';
    	 $query = "SELECT nome,web,descrizione FROM
                       catalogo_marche WHERE id = '$_GET[id]'";
             $result = mysql_query($query,$db);
    	 $row = mysql_fetch_array($result);
    	 $nome = "$row[nome]";
    	 $web = "$row[web]";
    	 $descrizione = "$row[descrizione]";
    	 break;
    						 
    	 case 'save':
    	 if (isset($edit) && $edit == 'ok')
    	   {
    	      $action = 'op=save';
    	      $title = 'Inserisci marca';
    	      $value = 'Inserisci';
    	   }
    	 else
    	   {
    	      $action = "op=edit&step=save&id=$_GET[id]";
    	      $title = 'Modifica marca';
    	      $value = 'Modifica';
    	      $nome = "$HTTP_POST_VARS[nome]";
    	      $web = "$HTTP_POST_VARS[web]";
    	      $descrizione = "$HTTP_POST_VARS[descrizione]";
    	      include_once ("edit.inc.php");
    	   }
    	 break;
          }
    Se la variabile $edit è settata ed impostata su ok mi mostra le variabili che permettono di inserire qualcosa nel db altrimenti mi rimostra i le variabili che mi permettono di modificare. La variabile arriva da una pagina inclusa nel file dove è presente lo switch. L'errore è dello switch, dell'if o del modo con cui richiamo la variale?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  2. #2
    $HTTP_POST_VARS[nome]

    Questa forma era utilizzata con php < 4.1, poi sono venute le versioni con register_globals=OFF

    Qui ti metto il link alla pillola di Chris dove spiega il perche' ed il percome....

    http://forum.html.it/forum/showthrea...hreadid=245215

    Per quanto riguarda il tuo SWITCH se ti serve una if (dubito funzioni, ma non ho mai provato farlo) fai che usare il costrutto if/elseif/else che risulta piu' chiaro nel tuo caso.

    Per il passaggio di valori da un array ad una variabile, non usare le apici, servono a nulla e il parser deve comunque risolverle.

    $nome = $row['nome'];

    invece di:

    $nome = "$row[nome]";


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Il problema è questo. Praticamente la if mi serve per vedere se la modifica è andata a buon fine. Ora, se è andata a buon fine mi deve far vedere il modulo impostato per un nuovo inserimento. Se invece non è anadata a buon fine me lo deve far vedere impostato per una nuova modifica. PEr fare questo nella pagina che modifica ho inserito, quando la query risulta essere stata eseguita correttamente, una variabile che se impostata viene verificata dall'if che imposta quindi il modulo in modo che si possa inserire e non modificare. Il fatto è che l'if sembra dare come risultato valido sempre l'else.
    Poi per ciò che riguarda elseif a me non serve. Perchè io assegno il valore ok alla variabile solo per valorizzarla: non può avere nessun altro valore. Solo che virifico che sia == 'ok' solo come ulteriore forma di sicurezza. Per la pillola grazie mille! (anche se devo capire ancora bene qualcosa)
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  4. #4
    Allora verifica da dove arriva $edit.

    Stampa la variabile prima dello switch.

    editato....

    Risulta incongruente l'uso contemporaneo di $_GET e quello di HTTP_POST_VARS ... penso debba essere $_POST ....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Infatti, ho fatto così e praticamente è come se la variabile non venisse proprio passata!
    Ora ti posto i sorgenti per farti capire

    il sorgente della pagina di default sta in cima alla pagina

    questo è il sorgente della pagina edit.php

    codice:
    // Inserisco il testo nel DB
    if (isset($ctrl) && $ctrl == 'ok')
      {
         include ('catalogo/functions/function_edit.inc.php');
         $values = "`nome` = '$nome',`web` = '$web',`descrizione` = '$descrizione'";
         if (edit($_GET['id'],$values,'catalogo_marche'))
           {
    	  $message = 'Marca modificata correttamente';
              unset($ctrl);
    	  $ctrl = 'ok';
              if (isset($nome))
                {
           	       unset($nome);
    	    }
    	  if (isset($web))
    	    {
    	       unset($web);
    	    }
    	  if (isset($descrizione))
    	    {
    	       unset($descrizione);
    	    }
           }
         else
           {
    	  $message = 'Non è stato possibile modificare la marca';
           }
      }
    Con la variabile $message faccio si che lo script invii un messaggio alla pagina default.php per informare l'utente sull'esito dell'operazione e questa variabile viene passata!
    Ma come vedi definisco anche la variabile $ctrl che mi serve per l'if dello switch ma l'if è come se non ne tenesse conto! E' come se isset($ctrl) restituisse sempre falso!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  6. #6
    Se quella variabile la definisci all'interno di una funzione, ha visibilita' locale esclusivamente. Cosi' non si capisce....

    Se non entri nella if non farai mai l'aggiornamento di $ctrl. E se $ctrl non e' settato devi andare sulla parte dello script che lo valorizza, che non e' certamente questo che hai postato. In pratica serve vedere la partenza dalla var piu' che l'arrivo...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Ma io nell'if ci entro! Infatti quando entro nell'if significa che tutto è andato bene! Nella pagina default.php quindi mi mostra un messaggio che dice "Marca modificata correttamente" (come ho impostato io nell'if). Dopo aver valorizzato la variabile $message cancello la variabile $ctrl ( unset($ctrl) ) e la reimposto su ok ($ctrl = 'ok').

    Ora l'if presente nello switch verifica che la variabile $ctrl sia settata. Se la variabile è settata significa che tutto è andato bene e quindi deve impostare il form in modo da permettere un inserimento e non una modifica.
    Viceversa se qualcosa è andatao storto la variabile $ctrl non sarà valorizzata e quindi di fatto non esiste. L'if dovrebbe accorgersene e quindi dovrebbe impostare il modulo in modo da permettere una modificva e non un inserimento.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  8. #8
    Cmq è l'if che non funziona. Ho provato ad utilizzare la variabile $message che sono sicuro venga impostata e comunque non funziona. A questo punto non so che fare! Come posso fare in modo che il modulo venga ricaricato impostato per una modifica fin quando la modifica non viene eseguita?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  9. #9
    Originariamente inviato da mircov
    Cmq è l'if che non funziona. Ho provato ad utilizzare la variabile $message che sono sicuro venga impostata e comunque non funziona. A questo punto non so che fare! Come posso fare in modo che il modulo venga ricaricato impostato per una modifica fin quando la modifica non viene eseguita?
    Se hai quaesto dubbio, valorizza la tua variabile da controllare subito prima dello switch. A questo punto la if "deve" risultare vera.

    Ho dubbi sul fatto che usi $HTTP_POST_VARS. Perche' mai? quale versione usi di php? Stampando con echo prima dello switch dici che la variabile e' vuota.....


    Ma mi sono perso nei via vai.... cioe' non capisco in pieno i significati delle tue considerazioni.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Per $HTTP_POST_VARS la uso per rendere lo script universale (ma dopo aver letto la pillola credo che dovrei usare altri metodi per farlo)

    Per il fatto di valorizzare la variabile se la valorizzo poi lo script non funziona più come dovrebbe! Il fatto è che facendo alcune prove mi sono accorto che è come se all'interno dell'if presente nello switch è come se le variabili non esistessero!

    Infatti, come ti ho detto, ho provato ad utilizzare la variabile $message (questa variabile mostyra un messaggio che può essere "marca modificata correttamente" oppure "Non è stato possibile modificare la marca" e quindi sono sicuro che venga valorizzata). Il fatto è che questa variabile viene richiamata all'interno della pagina default.php per mostrare il messaggio ed il messaggio viene mostrato! Se il messaggio viene mostrato vuol dire che che la variabile esiste ma questo non è valido per l'if all'interno dello switch!
    Ora a me era venuto il dubbio che un if all'interno di uno switch non si potesse usare e sono andato a controllare su php.net e negli esempi riportati ce n'è uno che utilizza un if nello switch setesso: quindi l'if si può usare nello switch.
    Quindi proprio non capisco perchè a me dia tutti questi problemi!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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.