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

    difficoltà con option selected

    buongiorno, da poco sono passato a php ed ho questo script che mi sto componendo da diversi codici.

    fin qui tutto bene solo che vorrei che la select che indicherò in verde avesse, quale valore di default, l'id della query passata dalla prima pagina (dal form di scelta praticamente)
    e che si modifichi nel caso in cui ne volessi cambiare il valore.

    stavo pensando qualcosa del genere ma non va
    codice:
    //fai una query
    $query = mysql_query("SELECT * FROM categorie_gallery ORDER BY nome ASC");
    
    //apro il  tag select per il menu a tendina
    echo"<select name=\"categoria\">";
    
    //metto i risultati della query in un  array e poi faccio un ciclo
    while($row = mysql_fetch_array($query))
    {
        //stampo option con value uguale alla categoria e il testo è la categoria
    
        echo "<option ";
    		if(isset($_POST['categoria']) && $row['id'] == $_POST['categoria']) echo "selected=\"SELECTED\"";
    		echo "value=\"".$row['id']."\">".$row['nome']."</option>";
    }
    //finito il ciclo chiudo il tag select
    echo"</select>";
    
    ?>
                </select>
    come posso fare?

    <<<<PAGINA GALLERY.PHP>>>>>
    codice:
    <? 
    
    if (isset($_POST["del_id"])) {
    
    $id_categoria=$_POST["del_id"];
    
    $del_id="vero";
    
    }else{$del_id="falso";}
    
    
    if (isset($_POST["upimg"])) {
    
    $up="vero";
    
    $id_categoria=$_POST["upimg"];
    
    $LARGEFILE=$_FILES["largeimage"]["name"]; // CON FILES
    
    $CATEGORIA=$_FILES["categoria"]["name"];
    $SOTTOCATEGORIA=$_FILES["sottocategoria"]["name"];
    $DESCRIZIONE=$_FILES["descrizione"]["name"];
    
    }else{$up="falso";}
    
    if (isset($_GET["id"])){
    
    $id_categoria = $_GET["id"];
    
    }
    ...connessione...
    
    $connection = mysql_pconnect("$db_host","$db_user","$db_password") or die ("Impossibile connettersi al database!");
    
    mysql_select_db("$db_name", $connection) or die("Impossibile accedere al database!");
    
    ?>
    
    <? if ($login=="ko") {
    
    echo "<p class=title align=center>ACCESSO NEGATO - LOGIN NON EFFETTUATO</p>";
    
    exit;
    
    }
    
    
    
    //eliminazione dell'indirizzo delle foto dal db
    
    if ($del_id=="vero"){
    
    	$sql_foto="SELECT galleria.FOTO, galleria.ID_CONTATORE FROM galleria WHERE galleria.ID_CATEGORIA = " .$id_categoria;
    
    	$result_foto = mysql_query("$sql_foto", $connection)or die (mysql_error());
    
    	$righe_foto = mysql_num_rows($result_foto);	
    
        if ($righe_foto!=0) {
    
    		$counter=0;
    
    		for ($counter=0;$counter<$righe_foto;$counter++){
    
    			mysql_data_seek($result_foto,$counter);
    
    			$riga=mysql_fetch_assoc($result_foto);
    
    			$id=$riga["ID_CONTATORE"];
    
    			if (isset($_POST[$id])){
    
    				$sqldel="DELETE FROM galleria WHERE galleria.ID_CONTATORE='$id'";
    
    				mysql_query("$sqldel",$connection) or die (mysql_error());
    
    			}		
    
    		}
    
    		
    
    	}
    
    }
    
    
    
    //-----------------------------------------------
    
    
    ?>
    
    <table width="1024" border="0" cellpadding="0" cellspacing="0" align="center">
    
      
    
      <tr> 
    
        <td height="100" colspan="5" align="center" valign="middle" class="Admin">[img]gallery.jpg[/img]</td>
    
      </tr>
    
      <tr align="center" valign="bottom"> 
    
        <td height="40" colspan="5" class="Title">Inserimento di una Nuova Struttura -(Foto Album)</td>
    
      </tr>
    
      <tr> 
    
        <td height="23" colspan="5" valign="top"><hr color="#FF9900" size="5"></td>
    
      </tr>
    
      <tr> 
    
        <td height="43" colspan="2" align="center" valign="middle">Pagina 10/10</td>
    
        <td width="622"></td>
    
        <td colspan="2" align="right" valign="bottom"><p align="right" class="Indented">Vai all'elenco Strutture </p></td>
    
      </tr>
    
      <tr> 
    
        <td width="166" height="53"></td>
    
        <td width="22"></td>
    
        <td align="center" valign="top">
    
    ATTENZIONE!</p>
    
          
    
    Attenersi alle indicazioni riportate nel modulo. L'inserimento di 
    
            una foto troppo grande potrebbe compromettere l'operazione di upload del 
    
            file ed il layout della pagina.</p></td>
    
        <td width="25"></td>
    
        <td width="189"></td>
    
      </tr>
    
      <tr> 
    
        <td height="115"></td>
    
        <td colspan="3" valign="top"> <table width="100%" border="0" cellpadding="0" cellspacing="0">
    
            <form action="gallery.php" enctype="multipart/form-data" method="post" name="UploadFile">
    
              
    
              <tr> 
    
                <td width="378" height="40" align="right" valign="middle">
    
    
    
                    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1024000">
    
    			</td>
            
              </tr>
    
              <tr> 
    
                <td height="40" align="right" valign="middle">
    
    File Immagine (jpg, gif).</p></td>
    
                <td colspan="2" align="left" valign="middle"> <input  size="50" type="file" name="largeimage"></td>
    
              </tr>
    
              <tr> 
    
                <td height="40" align="right" valign="middle">
    
    Categoria</p></td>
    
                <td colspan="2" align="left" valign="middle">
                  <?php
    //fai una query
    $query = mysql_query("SELECT * FROM categorie_gallery ORDER BY nome ASC");
    
    //apro il  tag select per il menu a tendina
    echo"<select name=\"categoria\">";
    
    //metto i risultati della query in un  array e poi faccio un ciclo
    while($row = mysql_fetch_array($query))
    {
        //stampo option con value uguale alla regione e il testo è la regione
    
        echo "<option value=\"".$row['id']."\">".$row['nome']."</option>";
    }
    //finito il ciclo chiudo il tag select
    echo"</select>";
    
    ?>
                </select>
    anche di seguito dovrebbe avvenire la stessa cosa
    			Sottocategoria
    			              <?php
    //fai una query
    $query = mysql_query("SELECT * FROM sub_categorie_gallery");
    
    //apro il  tag select per il menu a tendina
    echo"<select name=\"sottocategoria\">";
    
    //metto i risultati della query in un  array e poi faccio un ciclo
    while($row = mysql_fetch_array($query))
    {
        //stampo option con value uguale alla regione e il testo è la regione
        echo "<option value=\"".$row['nome']."\">".$row['nome']."</option>";
    }
    //finito il ciclo chiudo il tag select
    echo"</select>";
    
    ?>
                </select>
    </td>
    
              </tr>
    
              <tr> 
    
                <td height="40" align="right" valign="middle">
    
    Descrizione breve</p></td>
    
                <td colspan="2" align="left" valign="middle"> <input  size="50" type="text" name="descrizione"></td>
    
              </tr>
    
              <tr> 
    
                <td height="35" align="right" valign="bottom"> <p class="Indented"> 
    
                    <input type="hidden" name="upimg" value="<? echo $id_categoria;?>">
    
                    <input type="reset" value="Ripristina">
    
                    </p></td>
    
                <td width="119" align="left" valign="bottom"><p class="Indented"> 
    
                    <input  type="submit" value="Esegui Upload">
    
                  </p></td>
    
                <td width="172" align="center" valign="bottom"><font size="-2">* MAX 10 FOTO</font></td>
    
              </tr>
    
            </form>
    
          </table></td>
    
        <td></td>
    
      </tr>
    
    
      <tr align="center" valign="middle"> 
    
        <td height="55" colspan="5">
    
    	<?
    
    $sql_foto="SELECT galleria.FOTO FROM galleria WHERE galleria.ID_CATEGORIA = " .$id_categoria;
    
    $result_foto = mysql_query("$sql_foto", $connection)or die (mysql_error());
    
    $righe_foto = mysql_num_rows($result_foto);	
    
    
    if ($sql_foto<10){
    
    	$foto="ok";
    
    }else{
    
    	$foto="ko";
    
    }
    
    if (($foto=="ok") && ($up=="vero")) {
    
        //upload dei file e salvataggio nel db
    
    
    
        $save="ko";
    
    	$a=$_SERVER['DOCUMENT_ROOT'];
    
    	$path = "$a/public/foto_salento";
    
    	if (($largeimage != none))	{
    
    			print("Percorso locale: $largeimage -- ");
    
    			print("Nome del file: $largeimage -- ");
    
    			print("Dimensione del file: $largeimage_size -- ");
    
    			print("Tipo di file: $largeimage_type -- 
    /n");
    			
    
    			print("<HR> 
    /");
    
    			$Filedest="Salento_" .$id_categoria ."_" .$largeimage_name;
    
    			if (copy( $largeimage , $path . "/" .$Filedest )){
    
    				print "$largeimage copiato con successo in $path/$Filedest
    ";
    
    				$POS = strrpos($LARGEFILE,"/");
    
                	$FILE = substr($LARGEFILE,$POS);
    
    				$save="ok";
    
                }else{print "Errore.. upload non riuscito
    ";$save="ko";}
    
    	unlink($largeimage);
    
    	}else{print "Errore.. nessun file.
    ";$save="ko";}
    
    // fine upload primo file
    		
    
    		if ($save="ok") {	
    
    		$stringsql = "INSERT INTO galleria (ID_CATEGORIA, FOTO, CATEGORIA, SOTTOCATEGORIA, DESCRIZIONE) VALUES ('$id_categoria','$FILE', '$categoria', '$sottocategoria', '$descrizione')";
    
    		$result_2 = mysql_query($stringsql, $connection) or die (mysql_error()); 
    
    		}
    
    }else{
    
    	if ($foto=="ko")
    
    	{echo $foto ."-" .$up ."SI E' RAGGIUNTO IL NUMERO MASSIMO DI FOTO CONSENTITE";}
    
    }
    
    	?>
    
    	
    
    	</td>
    
      </tr>
    
        <td height="130" colspan="5" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
    
            <form action="gallery.php" enctype="multipart/form-data" method="post" name="ELIMINA">
    
            <?
    
    				$sql_foto="SELECT galleria.FOTO, galleria.ID_CONTATORE FROM galleria WHERE galleria.ID_CATEGORIA = " .$id_categoria;
    
         			$result_foto = mysql_query("$sql_foto", $connection)or die (mysql_error());
    
    				$righe_foto = mysql_num_rows($result_foto);
    
    	   		    $counter = 0;
    
    				
    
    				if ($righe_foto != 0) {
    
    				    echo "<tr>";
    
    					for ($counter=0;$counter<$righe_foto;$counter++){
    
    			    		mysql_data_seek($result_foto,$counter);
    
    						$riga_foto = mysql_fetch_assoc($result_foto);
    
    						if ($counter<10){
    
    						$idfoto=$riga_foto["ID_CONTATORE"];
    
    		                echo "<td width=100 height=100 align=center valign=middle><input type=checkbox name='$idfoto' value='$idfoto'>
    <img src=/public/foto_salento/Salento_" .$id_categoria ."_" .$riga_foto["FOTO"] ." width=100 alt='foto n° " .($counter+1) ."'></td>";       
    
    					    }
    
    					}
    
    		            echo "</tr>";
    
    					echo "<tr><td colspan=5 height=25 align=right><input type=hidden name=del_id value='$id_categoria'><input type=reset value='Ripristina'></td><td colspan=5 height=25 align=left><input type=submit value='Elimina Selezionati'></td></tr>";
    
    		         }
    
    		?>
    		</form>
    ---------------------------
    danielix05

  2. #2
    Il tuo codice è corretto, a parte che generi due </select> (quello fuori dal PHP dovresti eliminarlo), ma ciò non dovrebbe inficiare la selezione di default. Inoltre aggiungerei uno spazio dopo il selected, cioè echo 'selected="SELECTED" ';, ma anche questa è una modifica stilistica più che strutturale.

    La condizione più ovvia per cui non si seleziona un default è che il confronto tra $row['id'] e $_POST['categoria'] sia sempre falso. Prova questo codice di debug:

    Codice PHP:
    $query mysql_query("SELECT * FROM categorie_gallery ORDER BY nome ASC");
    $categoria = isset($_POST['categoria']) ? $_POST['categoria'] : '';

    echo 
    '<select name="categoria">';

    while(
    $row mysql_fetch_array($query)) {
        
    $id $row['id'];
        
    $nome $row['nome'];
        
    $selezionato $categoria == $id 'selected="SELECTED" ' '';

        echo 
    "<option value=\"$id\"$selezionato>$nome ('$categoria' == '$id')</option>";
    }

    echo 
    '</select>'
    Richiama la pagina e controlla fisicamente cosa c'è nelle parentesi: potresti avere delle sorprese...

  3. #3

    niente di cambiato

    ciao Nicola.
    ho fatto la tua modifica ma non cambia niente se non che anzicché trovare nella option select un testo del genere >categoria 1< >categoria 2< eccetera

    trovo un testo di questo genere >categoria 1("=='2')< quindi si nota che l'id associato nella select non è quello che ho scelto nel form della prima pagina.

    siamo punto e accapo?

    in questo caso ricordo che nella querystring ho l'id 1 equivalente all'id della categoria
    ---------------------------
    danielix05

  4. #4

    Re: niente di cambiato

    Originariamente inviato da danielix05
    siamo punto e accapo?
    Per niente, hai trovato il problema: $_POST['categoria'] è vuoto. Un conto è sospettare, un conto è essere certo.

    Non so come sia strutturato il tuo sito, ma mi sa che sto fraintendendo. Il codice funziona perfettamente ma non sa quale è la categoria da selezionare. I $_POST vengono spediti dopo che hai inviato una form, non alla prima visualizzazione della form. Rileggendo il tuo thread:

    ... l'id della query passata dalla prima pagina (dal form di scelta praticamente) ...
    mi sorge un sospetto atroce: non è che richiami questa pagina dalla pagina iniziale usando una cosa del tipo "http://www.adsasdf.it/index.php?categoria=1"? Perché se così è devi usare $_GET['categoria'], non $_POST['categoria']...

  5. #5

    altro passo

    buona sera ormai.

    nel primo file ho una select che popolo così

    codice:
    	    	  <form name="form1"">
                    <b style="color: #FF0000;">Scegli la Categoria per la nuova Immagine[/b]
                    <select name="categoria" onChange="MM_jumpMenu('parent',this,1)">
    <?php
    $mysqlc->query("SELECT * FROM categorie_gallery ORDER BY nome;");
    while($result = mysql_fetch_array($mysqlc->result, MYSQL_ASSOC)){
    
    				echo "<option selected ";
    				if(isset($_POST['categoria']) && $result['id'] == $_POST['categoria']) echo "selected=\"SELECTED\"";
    				echo "value='pages/gallery.php?id=".$result['id']."'>".$result['nome']."</option>";
    
    	}
    ?>
    				  
                    </select>            
                    </form>

    nel secondo file ho fatto come mi dici tu, ho cambiato Post con GET ossia:

    codice:
                  <?php
    $query = mysql_query("SELECT * FROM categorie_gallery ORDER BY nome ASC"); 
    $categoria = isset($_GET['categoria']) ? $_GET['categoria'] : ''; 
    
    echo '<select name="categoria">'; 
    
    while($row = mysql_fetch_array($query)) { 
        $id = $row['id']; 
        $nome = $row['nome']; 
        $selezionato = $categoria == $id ? 'selected="SELECTED" ' : ''; 
    
        echo "<option value=\"$id\"$selezionato>$nome ('$categoria' == '$id')</option>"; 
    } 
    
    echo '</select>';
    
    ?>
                </select>
    per due ovvie ragioni:

    1. non passo la query gallery.php?categoria=id -->perchè mi dà errore
    2. ho bisogno di passare anche l'id altrimenti non funziona l'upload

    quindi, se completo la riga in grassetto in questo modo mi passa solo la variabile "categoria"
    ma a me non basta mi serve assolutamente l'id=id se no ho errore

    codice:
    echo "value='pages/gallery.php?id=".$result['id'].""&"categoria=".$result['id']."'>"
    morale in questi modi ciò che mi stampa nella select della seconda pagina non è ancora ciò che proviente dal primo form.

    ---------------------------
    danielix05

  6. #6
    Porongo, frena: io non conosco il tuo progetto. Non so cosa è $result['id'] nel primo programma PHP e soprattutto c'è una funzione JavaScript MM_jumpMenu di cui non sospettavo niente. Quello che so è che il codice PHP del select che ti ho mandato è corretto e funziona, solo che non sa cosa selezionare.

    Io posso fare solo delle ipotesi, ma sei tu che conosci il sito. Analizzando il primo file:
    codice:
    echo "value='pages/gallery.php?id=".$result['id']."'>".$result['nome']."</option>";
    Ipotizzando che MM_jumpMenu faccia un redirecting corretto con l'URL specificato come value (nel redirecting i post vanno persi!) e ipotizzando che $result['id'] sia il dannato valore che tu chiami "categoria" nel secondo file, banalmente:
    Codice PHP:
    $categoria = isset($_GET['id']) ? $_GET['id'] : ''
    Altrimenti mi devi dire cosa carajo intendi per "categoria" e da dove la puoi prendere...

  7. #7

    ovviamente profano

    buongiorno,
    ovviamente parto da conoscenze abbastanza scarse e sto, come ho anticipato, adeguando uno script.

    provo a spiegare

    1. nel primo form, ho una select con scelta categoria. questa pesca da una tabella "categorie", il $result['id'] è il risultato della query che mi restituisce l'id del record nella tabella "categorie"

    2. la select l'ho sistemata in un jump menu, quindi alla selezione di una voce l'utente dovrebbe andare alla seconda pagina con, in query, l'id della categoria ecco il perchè di
    codice:
    echo "value='pages/gallery.php?id=".$result['id']."'>".$result['nome']."</option>";
    che io vorrei fosse
    codice:
    echo "value='pages/gallery.php?id=".$result['id'].""&"categoria=".$result['id']."'>".$result['nome']."</option>";
    perchè nella seconda pagina (il codice è già postato) ho due variabili "id_categoria" e "categoria"

    3. il jump menu mi redireziona correttamente alla seconda pagina dove, in query, leggo file.php?id=2

    4. la variabile "id_categoria" nella seconda pagina recupera correttamente l'id in query

    5. praticamente queste due variabili fanno la stessa cosa ma ora risolviamo i primi 2 punti e poi vedrò/vedremo di affrontare quest'altro punto eliminando una delle due variabili.
    ---------------------------
    danielix05

  8. #8
    Allora la soluzione è questa:

    Originariamente inviato da ntd
    Ipotizzando che MM_jumpMenu faccia un redirecting corretto con l'URL specificato come value (nel redirecting i post vanno persi!) e ipotizzando che $result['id'] sia il dannato valore che tu chiami "categoria" nel secondo file, banalmente:
    Codice PHP:
    $categoria = isset($_GET['id']) ? $_GET['id'] : ''
    Quello che vuoi fare, cioè:
    Codice PHP:
    echo "value='pages/gallery.php?id=".$result['id'].""&"categoria=".$result['id']."'>".$result['nome']."</option>"
    è concettualmente sbagliato. Usare due GET (ossia 'id' e 'categoria') per spedire la stessa informazione (cioè $result['id']) genera solo confusione peggiorando le prestazioni. Una volta che redirigi con "pages/gallery?id=$result[id]", come fai adesso, in gallery.php puoi usare $_GET['id'] tutte le volte che vuoi, mica si consuma. Se la redirection è corretta, $_GET['id'] in gallery.php sarà equivalente a $result['id'].

    Quello che mi preoccupa non è che non capisco il problema, è che non lo vedo proprio...

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.