sino ad oggi ho sempre usato form per passare valori da una pagina all'altra, ora avrei la necessità di passare un valore da una pagina php ad un'altra in php senza usare un form, magari sfruttando qualche funzone ... qc mi sa aiutare?
sino ad oggi ho sempre usato form per passare valori da una pagina all'altra, ora avrei la necessità di passare un valore da una pagina php ad un'altra in php senza usare un form, magari sfruttando qualche funzone ... qc mi sa aiutare?
Puoi usare una query string, del tipo:
<a href="pagina.php?var1=val1&var2=val2">link</a>
E recuperi il tutto con $_GET['var1'], $_GET['var2'], ecc
ciao!
puoi anche usare i cookie volendo...
pagina1:
possiamo accedere alla stringa pallino tramite l'array superglobale $_COOKIECodice PHP:
setcookie ("pinco", "pallino!");
in cui pinco diventa la chiave
pagina2:
ovviamente è necessario che il browser dell'utente accetti i cookieCodice PHP:
echo $_COOKIE['pinco'];
oppure le sessioni:
http://it.php.net/manual/it/book.session.ph
"Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix
[ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
consoliwebsite.altervista.org
ho provato con del codice un pò più complesso ma non funziona.. dove sbaglio?
<a href="pagina.php?var1=<? echo "$img1"; ?>&var2=<? echo "$img2"; ?>&var3=<? echo "$img3"; ?>&var4=<? echo "$img4"; ?>&var5=<? echo "$img5"; ?>";>link</a>
quello che voglio dire è che tutto funziona se a var1 dò come valore "valore-1" ma se do a var1 un valore dinamico qualche cosa non va!
premetto che prima del link c'è questo
<?php
$img1 = $_POST['img1'];
$img2 = $_POST['img2'];
$img3 = $_POST['img3'];
$img4 = $_POST['img4'];
?>
$img5 = $_POST['img5'];
Prendile con il GET, non con il post ;)
Inoltre devi prendere var1 e non img1 ^^
E usa i tag appositi del forum [ PHP] e [ PHP]
Codice PHP:
<?php
$img1 = $_GET['var1'];
?>
Ultima modifica di comunitavirtuali : 22-10-2008 alle ore 17.56.07
mi spiego meglio...
questo prende delle variabili dalla pagina precedente
<?php
$img1 = $_POST['img1'];
?>
quindi supponiamo che $img1 acquisisca il valore prova.jpg dalla pagina precedente
ora volgio passare alla pagina succesiva il valore/variabile prova.jpg con questo
<a href="pagina.php?var1=<? echo "$img1"; ?>";>link</a>
ma non funziona
suggerimenti?
?.? mi pare di parlare con un muro!
Sai la differanza tra GET e POST ?
Semplicisticamente: GET prende i dati nell'url (quindi nel tuo link) e POST nel caso in cui vengano inviati da un form.
Nel caso usassi php5 evita i tag ridotti (<?) che di default sono disattivati ^_^
Ultima modifica di comunitavirtuali : 23-10-2008 alle ore 16.17.49
mi spiego meglio...
questo prende delle variabili dalla pagina precedente dov'è c'è un form che passa i dati ed arrivano correttamente
<?php
$img1 = $_POST['img1'];
?>
quindi supponiamo che $img1 acquisisca il valore prova.jpg dalla pagina precedente che come ho detto arriva tramite un form
ora volgio passare alla pagina succesiva il valore/variabile prova.jpg con questo
<a href="pagina.php?var1=<?php echo "$img1"; ?>";>link</a>
ma non funziona
Cosa non funziona?
E' corretto ;)
Forse prova a togliere ; dopo la chiusura delle virgolette nel link.
in verià la questione è un pò più complessa
questa è la parte di codice per l'inserimento di un nuovo record
Codice PHP:
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO tabella (immagine1) VALUES (%s)",
GetSQLValueString($_POST['immagine1'], "text"),
mysql_select_db($database_nichelino, $nichelino);
$Result1 = mysql_query($insertSQL, $nichelino) or die(mysql_error());
$img1 = $_POST['img1']; //Questo prende una variabile dalla pagina precedene
$vai = "inseriscifase4.php?var1=$img1";
echo "$vai"; //Se provo a scriverlo il passaggio della variabile e come deve venire scritto il link funziona!
$insertGoTo = "$vai"; //Questo non funziona!!! ovvero non va al link come in verà viene scritto
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
Ultima modifica di debug : 27-10-2008 alle ore 15.06.01
Credo sia la 5/6 volta che lo dico in 3 giorni: conviene sempre concatenare le variabili alle stringhe tramite il punto:
Esempio
E nonCodice PHP:
$var="Ciao";
$var2=$var." come va?"
echo($var2);
Codice PHP:
$var="Ciao";
$var2="$var come va?";
echo($var2);
xenom89, non è quello il problema, con i doppi apici le variabili vengono interpretate correttamente.
supermix01, premettendo che devi sempre usare i tag appositi quando posti del codice (anche per aiutare a capirci qualcosa), prova a stampare tutte le variabili quando le assegni.
Ciao!
per Xenom89
dovrei quindi scrivere così?
$vai = "inseriscifase4.php?var1=".$img1;
per debug [aiutami te ne sto uscendo matto!!]
le variabili sono ok
$img1 = $_POST['img1']; //Questo prende una variabile dalla pagina precedene e se la stampo arriva corretta
$vai = "inseriscifase4.php?var1=$img1"; //Questo anche mi scrive il percorso corretto
$insertGoTo = "$vai"; //Qui il problema alla fine va alla pagina inserisci4.php?var1= ovvero nell'indirizzo compare inserisci4.php?var1= senza il valore della variabile!!
cosa assurda se scrivo
$vai = "inseriscifase4.php?var1=PROVA";
$insertGoTo = "$vai";
sai cosa compare sulla barra del browser?
inserisci4.php?var1=PROVA che sarebbe corretto
Scusa, ma a che ti serve valorizzare due variabili con lo stesso identico contenuto?
Usane una et voilà!
Ciao!
Prova a modificare questo :con questo:Codice PHP:
$insertGoTo = "$vai"; //Questo non funziona!!! ovvero non va al link come in verà viene scritto
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
Codice PHP:
//togli $insertGoTo
if (isset($_SERVER['QUERY_STRING'])) {
$vai.= (strpos($vai, '?')) ? "&" : "?";
$vai .= $_SERVER['QUERY_STRING'];
}
header("Location: ".$vai);
}
?>
ho usato due variabili per vedere se il passaggio dei dati avveniva correttamente e qui mi sono acorto che quando è un link non passa i dati, l'intenzione era appunto poi di tenerne una sola
anche così i dati non passano infatti nel browser compare sempre scritto
inseriscifase4.php?var1=& !!!!
ALTRI SUGGERIMENTI???
STO SCLERANDO!!!!!!!
Ho deciso di postarvi tutta la pagina magari capite meglio e riuscite ad aiutarmi!!!!!
Codice PHP:
<?php require_once('../Connections/prova.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO tabella_dettagli (immagine1) VALUES (%s)",
GetSQLValueString($_POST['immagine1'], "text");
mysql_select_db($database_prova, $prova);
$Result1 = mysql_query($insertSQL, $prova) or die(mysql_error());
$img1 = $_POST['img1']; // QUESTO VALORE LO OTTENGO DAL FORM DELLA PAGINA PRECEDENTE
$insertGoTo ="inseriscifase4.php?var1=<? echo "$img1"; ?>"; // QUI HO BISOGNO DI SCRIVERE IL VALORE DI img1 CHE COME HO DETTO OTTENGO DALLA PAGINA PRECEDENTE MA NEL BROWSER NON ME LO SCRIVE
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
<?php
mysql_select_db($database_prova, $prova);
$query_inserisci = "SELECT * FROM tabella_dettagli";
$inserisci = mysql_query($query_inserisci, $prova) or die(mysql_error());
$row_inserisci = mysql_fetch_assoc($inserisci);
$totalRows_inserisci = mysql_num_rows($inserisci);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html>
<head>
<title></title>
</head>
<body>
<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
<table>
<tr>
<td>Immagine1:</td>
<td><input type="text" name="immagine1" value="<?php echo "$img1"; // DEVE SCRIVERE LO STESSO VALORE CHE OTTIENE DALLA PAGINE PRECEDENTE: QUESTO FUNZIONA! ?>"></td>
</tr>
<tr valign="baseline">
<td><input type="submit" value="Inserisci record"></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>
</body>
</html>
<?php
mysql_free_result($inserisci);
?>
Ultima modifica di supermix01 : 13-11-2008 alle ore 23.42.37
So che il post è vecchio ma ci tengo che ogni risorsa che possa aiutare qualcuno a lavorare meglio o anche solo a capirci qualcosa vada completato.
Le variabili non vanno inserite tra singoli o doppi apici in quanto NON SONO DELLE STRINGHE e quindi, se inserite tra doppi o singoli apici, vengono interpretate come $var1 e non come il corrispettivo valore dinamico.
Quindi la stringa:è errata poiché ogni variabile viene interpretata come $imgN (n sta per numero).Codice PHP:
<a href="pagina.php?var1=<? echo "$img1"; ?>&var2=<? echo "$img2"; ?>&var3=<? echo "$img3"; ?>&var4=<? echo "$img4"; ?>&var5=<? echo "$img5"; ?>";>link</a>
La versione corretta è:Da qualche anno è oltretutto attivo un sistema di abbreviazione per evitare di scrivere echo ogni volta.Codice PHP:
<a href="pagina.php?var1=<? echo $img1 ?>&var2=<? echo $img2 ?>&var3=<? echo $img3 ?>&var4=<? echo $img4 ?>&var5=<? echo $img5 ?>">link</a>
Basterà scrivere al posto dicosì:Codice PHP:
<? echo $img1 ?>
e il risultato sarà lo stesso con evidente riduzione del codice.Codice PHP:
<?=$img1?>
Ultima modifica di portapipe : 19-11-2010 alle ore 18.01.43