The Best Geek Forum

perdita contenuto variabili php

Hai bisogno di aiuto per il tuo codice?? Posta qui il tuo problema! Degli utenti specializzati provvederanno subito ad assisterti!

Moderatore: Moderatore in prova

buongiorno,

ho un problema con i due if quando legge if(isset(Submit)) ok, poi se va dentro if(isset(submit2)) perde i valori dentro $nome_sezione[$j] e $museum...mi chiedo come sia possibile visto che dovrebbero essere dentro $_POST
:(
qualcuno mi puo aiutare??

Codice: Seleziona tutto

<html>
 <head>
  <?php


?>
</head>
</html>


<h1>Popolamento Museal Database-RDF</h1></br>
<h2>Gestione Museo</h2>
<h3>Vuoi inserire uno o piu musei nuovi? si/no</h3>

<form method="post" action="">
<?php
if(isset($_POST['num_musei'])){

 //$num = $_POST['num_musei'];//
for ($j = 1; $j <= $_POST['num_musei']; ++$j) {
 
?>
    <table>
  <td><input maxlength="30" name="museum[]" size="30" type="text" value= 'museum' <?php echo "value=\"$museum\""; ?>/></td></tr>
  <td><input maxlength="30" name="indirizzo[]" size="30" type="text" value= 'indirizzo del museo' <?php echo "value=\"$indirizzo\""; ?>/></td></tr>

  <td><label>Numero sezioni</label><input maxlength="30" name="sezione[]" size="30" type="number" value= 'sezione' <?php echo "value=\"$sezione\""; ?>/></td></tr>
  <td><label>Numero sale</label><input maxlength="30" name="sala[]" size="30" type="number" value= 'sala' <?php echo "value=\"$sala\""; ?>/></td></tr>

<p>/****/</p></tr>

<?php }


echo  "<table id=\"tastiTable\">";
echo "<tr><td id=\"modifyleftbutton\"><a href=AAAbuonissima.php class=\"redbutton\">Annulla</a></div></td>";
echo "<td id=\"modifyrightbutton\"><input type=\"submit\" name=\"Submit\" value=\"Salva\" class=\"yellowbutton\"/></div></td></tr>";
echo "</table>";
echo "</form>";
}
 


  if(isset($_POST['Submit'])){echo "	BABOM	";
   
  print_r($sezione);
  echo $sezione[0];
  echo $sezione[1];
  echo sizeof($sezione);
  
  echo "<br />";
  if(isset($sezione)){
   
   for($j=0; $j<= sizeof($sezione)-1; ++$j){
       echo "/*-------------------------------------------------------------*/";
echo "<br /><br />";
echo "<br />";
       echo "Nome Sezione $j: ";
   for($y=0; $y<= $sezione[$j]-1; ++$y){
    echo "<br /><input maxlength=\"30\" name=\"nome_sezione[]\" size=\"30\" type=\"text\" value= 'nome sezione' value=$nome_sezione/></td></tr><br />";

 

   ?> <form method="post" action="">
    <table>
  <!--<td><input maxlength="30" name="nome_sezione[]" size="30" type="text" value= 'nome sezione' <?php echo "value=\"$nome_sezione\""; ?>/></td></tr>
-->
  <?php  }
   }?>
      </table>
    
    	 <table id=\"tastiTable\">
      
		 <td id="modifyrightbutton"><input type="submit" name="Submit2" value="Salva" class="yellowbutton"/></td>
		 <td id="modifyleftbutton"><a href=AAAbuonissimacopia7.php class="redbutton">Annulla</a></div></td>
		 </td></tr>
		 </table>
		</form>
  
   
 
   
  <?php  echo "<br />";

  }
  
  global
  
}


  if(isset($_POST['Submit2'])){
   
   print_r($nome_sezione);
    
   echo "<br />CONTROLLO : <br />";
echo "\$section[\$j]--> ";echo sizeof($sezione);
echo "<br />";
echo "\$nome_sezione[\$j]--> ";echo sizeof($nome_sezione);
echo "<br />";
   
   touch("file.txt"); // creazione file ausiliario
   
$open = fopen ("file.txt", 'a+');
if($open){echo "OK 1"; $content = "<?xml version=\"1.0\"?>
<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdaGr2=\"http://RDVocab.info/ElementsGr2/\" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:edm=\"http://www.europeana.eu/schemas/edm/\" xmlns:ore=\"http://www.openarchives.org/ore/terms/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\">

";}
if(fwrite($open, $content)){echo "<br />OK SCRITTA INTESTAZIONE : <br />";};


 for ($i = 0; $i <= sizeof($museum)-1; ++$i){  /*ATTENZIONE NON MODIFICARE ASSOLUTAMENTE QUESTA RIGA*/
  echo "<br />OK QUI : <br />";
  $museo=$_POST['museum'][$i];
echo $museo;

  $section=$_POST['sezione'][$i];
echo $section;echo "sezione0--> ";echo $section;echo "<--okSEZIONE";

  $room=$_POST['sala'][$i];
echo $room;

  $address=$_POST['indirizzo'][$i];
echo $address;


  
$open = fopen ("file.txt", 'a+');

if($open){


  $content1 = "
	<edm:Place rdf:about= \"http://dbxml/museum/4 \">
		<rdaGr2:addressOfTheCorporateBody>$address</rdaGr2:addressOfTheCorporateBody>
		<skos:prefLabel>$museo</skos:prefLabel>
	       
		
	";
/*echo "      OK 4: ";echo $_POST['sezione'][$j];echo "       e: ";echo $j;echo "        ";
for($h=0 ; $h <= ($_POST['sezione'][$j])-1; ++$h){
 $open = fopen ("file.txt", 'a+');

if($open){
 echo "NUM ";
   $content =  "   /*-------INSERIMENTO SEZIONE-------- ";}
}
 
echo $num; echo "<----5";
 // ++$i;*/

if(fwrite($open, $content1))
{
  echo "good";
  
  
} else{
  echo "cant write";
}
}else {
  echo  "cant open";
}

/* }*/
 
 
 
 
 
 
 
 
 //for ($h = 0; $h <= sizeof($sezione)-1; ++$h){ // /*ATTENZIONE NON MODIFICARE ASSOLUTAMENTE QUESTA RIGA*/
  for ($j = 0; $j <= $sezione[$i]-1; ++$j){ 
 /* $museo=$_POST['museum'][$j];
echo $museo;
  */
/*
  $section=$_POST['sezione'][$j];
  */
  echo "<br />";
echo "<br />";
echo "/*------------------------*/";
echo " \$section[\$i]--> ";echo $section[$i];
echo "<br />CONTROLLO : <br />";
echo "\$section[\$j]--> ";echo $section[$j];
echo "<br />";
echo "\$section--> ";echo $section;
echo "<br />";
echo "\$section[\$h]--> ";echo $section[$h];
echo "<br />";
echo "sizeof\(\$sezione)--> ";echo sizeof($sezione);
echo "<br />"; 
echo "/*------------------------*/"; 
echo "<br />"; 
echo "<br />";
echo "<br />";


  $room=$_POST['sala'][$j];
echo $room;

  
$open = fopen ("file.txt", 'a+');

if($open){

$content =  "   		<dcterms:hasPart>
					<edm:Place rdf:about= \"dbxml/section/8 \">
						<skos:prefLabel>$section</skos:prefLabel>
						<dcterms:isPartOf rdf:resource= \"dbxml/museum/4 \" />
							<dcterms:hasPart>
								<edm:Place rdf:about= \"dbxml/room/60 \">
									<skos:prefLabel>$room</skos:prefLabel>
									<dcterms:isPartOf rdf:resource= \"dbxml/section/8 \" />
								</edm:Place>
							</dcterms:hasPart>
					</edm:Place>
		</dcterms:hasPart>
";
echo "AAAAAAAAA $j  ";
if(fwrite($open, $content))
{
  echo "   good:";echo $j;
  
  
}
}
echo "<br />";
echo "DIm SEZIONE--->";
echo sizeof($sezione);
echo "<br />";
echo "DIM MUSEO---->";
echo sizeof($museum);
echo "<br />";
  }
 
 //}
 }

  }
 echo "</tr>";
echo  "   ok1: "; echo sizeof($sezione); echo "</tr>";

echo  "   ok2: ";echo $_POST['num_musei'];echo "</tr>";
/*
for ($j = 1; $j <= $_POST['sezione']; ++$j){
 echo "ok 1";	
 
}*/

if(isset($_POST['select1'])){
    $select1 = $_POST['select1'];
 
    switch ($select1) {
        case 'case_si': 

echo "<h3>Selezionare il numero dei musei da inserire: </h3>";


echo "<form action=\"\" method=\"post\">";

echo "<input type=\"number\" name=\"num_musei\" value=\"Go\"/>";
echo "</form>";




break;
        case 'case_no':
            echo 'no non desidero creare un museo nuovo<br/>';
            break;
        default:
            # code...
            break;
    }
}

?>


<form action="" method="post">
    <select name="select1">
        <option value="case_si">Si</option>
        <option value="case_no">No</option>
    </select>
    <input type="submit" name="submit" value="Go"/>
</form>

<h2>Download del formato RDF ottenuto: </h2>
<a href="export_RDF.php">
  <img border="0" src="immagini/rdf.png" alt="metti un immagine" width="104" height="142">
</a>
</html>
Ciao allora non ho ben capito il problema . Che problema ti danno gli if? e sono questi?
-if(isset($_POST['Submit']))
-if(isset($_POST['Submit2']))

Ti da qualche stringa di errore nella pagina?
Intanto nel ciclo for non è ad esempio ++$x ma è $x++
Poi non ti conviene far mistaccio di html e php in un file, diventa illeggibile, devi separarli e inserire l'html tramite include, require o altro.
Come minimo devi creare due file, uno html l'altro php, perché non si capisce molto
grazie per la risposta repentina.
il problema è che quando sono nell'Submit2 perdo i valori che sono dentro $_POST
infatti perdo $museum e se $selezione

se faccio print_r($_POST) in Submit ho(appunto $museo $indirizzo $sezione e $sala):

Codice: Seleziona tutto

Array ( [museum] => Array ( [0] => museum [1] => museum ) [indirizzo] => Array ( [0] => indirizzo del museo [1] => indirizzo del museo ) [sezione] => Array ( [0] => 2 [1] => 1 ) [sala] => Array ( [0] => [1] => ) [Submit] => Salva ) 

mentre in Submit2
non ho piu $museum e $sezione ma

Codice: Seleziona tutto

Array ( [nome_sezione] => Array ( [0] => nome sezione [1] => nome sezione [2] => nome sezione ) [Submit2] => Salva ) 

invece avrei bisogno in Submit2 proprio di $sezione e $sala per far girare i loop
prendendo il codice fatto, e mettendo singolarmente if(Submit) o solo (Submit2), si comporta regolarmente: il problema è che quando sono in un altro if(){} dimentica le variabili in post e quindi non riesco a fare i cicli nell'altro if, perchè gli mancano i valori che dovrebbereo essere in $_POST. ci vorrebbe un modo per rendere le variabili globali ma ho letto che per questa versione di PHP sono state disabilitate.
:(


sostanzialmente il problema sta nel fatto che dato un if non riesco ad andare nell'altro con le variabili salvate precedentemente
Non potresti provare a dichiararle nuovamente prima dell'altro if?
ho provato a sovrascrivere

Codice: Seleziona tutto

 $museum = array($museum);
   $sezione = array ($sezione);
alla fine del primo if ma non cambia niente.
il fatto è che un if e dentro l'altro.
non c'è un modo per passare globalmente le variabili così posso usare le stesse nei due diversi if?
:(
Exor ha scritto:ho provato a sovrascrivere
$museum = array($museum);
$sezione = array ($sezione);

alla fine del primo if ma non cambia niente.
il fatto è che un if e dentro l'altro.
non c'è un modo per passare globalmente le variabili così posso usare le stesse nei due diversi if?
:(
Il Global Scope non ti serve a niente, le variabili dichiarate in un file sono "globali" in quel file.
Il Global Scope ti serve se dichiarate delle variabili in un file, vuoi usarle anche in un altro file.

Non si capisce cosa tu voglia fare..
"perdo" il valore delle variabili che non sono nello stesso if.
ho verificato che, a un certo punto del codice (entrato nel secondo if) non contiene piu effettivamente in $_POST quei valori, appunto per questo non riesco ad andare avanti.
vorrei far girare questi due cicli:

Codice: Seleziona tutto

for ($i = 0; $i <= sizeof($museum)-1; ++$i){ ......ecc ecc  codice.....}
for ($h = 0; $h <= sizeof($sezione)-1; ++$h){.........ecc ecc codice.....}
ma non riesco perchè "perde la memoria" delle variabili:
1- $museum
2- $sezione