Page 1 sur 1

méthode $_GET[avec un tableau]

Posté : 22 mai 2012, 11:53
par Dynamic
Bonjour,

mon problème va peut être paraitre simple, mais je bloque dessus...

Voilà, j'ai des données stockées dans un tableau nommé $field2[]

je souhaite récupérer $field2[0] et l'afficher dans une phrase.

Seulement je dois la récupérer avec la fonction $_GET car je ne déclare pas ce tableau dans la même page...
Je n'arrive pas à trouver la bonne formule pour récupérer cette valeur avec $_GET
Quelqu'un peut m'aider?? merci d'avance. =D>

Re: méthode $_GET[avec un tableau]

Posté : 22 mai 2012, 11:57
par Mazarini
Un truc du genre $_GET['field'][$i] ?

Ajoute $var_dump($_GET) en début de script pour en voir le contenu

Re: méthode $_GET[avec un tableau]

Posté : 22 mai 2012, 17:27
par AB
Fais voir comment tu passes ta variable $_GET (par un lien ou par un header ?)

Re: méthode $_GET[avec un tableau]

Posté : 29 mai 2012, 08:20
par Dynamic
dsl de mettre autant de temps à répondre, je n'avais plus d'ordinateur.

voici le code de ma page
<?php
include("mysql.php");

function genRandomId(){
	//retourne ch aléatoire  à utiliser pour code session

 	$randid="";
 	$taille =128;
 	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
 	srand(time());
 	for ($i=0;$i<$taille;$i++){
  		$randid.=substr($lettres,(rand()%(strlen($lettres))),1);
 	}
 	return $randid;
}

$id_connect = mysql_connect("serveur","id",pass") or die ("probleme de connexion");
mysql_select_db("cnombase de donnée") or die ("probleme de BDD");
mysql_query("SET NAMES 'utf8'");

$login= $_POST['login'];
$motdepasse= $_POST['motdepasse'];


$sql="select id_user, poste_user, classe_user, nom_user, prenom_user from utilisateur where login='$login' and motdepasse='$motdepasse'";
$req = mysql_query($sql) or die ("Erreur SQL !<br>$sql<br>mysql_error()");
$nb_ligne = mysql_num_rows($req);

if ($field = mysql_fetch_row($req))
{
if($nb_ligne == 1)
{
	
	$num_session=genRandomId();
	$field =
	$sql2="insert into session VALUES ('', '$num_session', '$field[0]')";
	//$req2 = mysql_query($sql2) or die ("Erreur SQL !<br>$sql2<br>mysql_error()");
	echo $field[1];
	$poste_user=$field[1];
	$classe_user=$field[2];
	$nom_user=$field[3];
	$prenom_user=$field[4];
	$nb2=nombreDeLignes2($sql2);
	
	
	

		 
		  if($poste_user == "admin")
		  {
		  		header("Location:espace_admin.php?num_session=$num_session&titre=administrateur&poste_user=$poste_user&nom_user=$nom_user&prenom_user=$prenom_user");
		  }
		  else if($poste_user == "professeur principal")
		  { 
		   		header("Location:pp/espace_pp.php?num_session=$num_session&titre=prof principale&classe_user=$classe_user&poste_user=$poste_user&nom_user=$nom_user&prenom_user=$prenom_user&droit=disabled");		
		  }			
}
}
else
{
	header("Location:index.php?erreur=Erreur identification");
}	

?>

Re: méthode $_GET[avec un tableau]

Posté : 29 mai 2012, 08:21
par Dynamic
le soucis est qu'il récupère bien certaines données dans la base de données. Mais dés qu'il s'agit d"un tableau, rien n'est récupéré...

J'ai pourtant essayé toute les solutions que vous m'avez donné... Mais aucun n'a fonctionné... Je ne sais plus quoi faire....


Merci d'avance :priere:

Re: méthode $_GET[avec un tableau]

Posté : 29 mai 2012, 09:46
par Spols
Je ne vois nulle part une tentative d'envoi de ton tableau par la methode GET,

Si tu dois passer une variable d'une page à l'autre, et que cette variable est un tableau tu as 2 possibilités (peut être plus mais ce sont ces 2 là qui me semble évidente)
1 tu l'envoi par la session, $°SESSION accepte les tableaux.
2 tu peux serialiser ton tableau avant de l'envoyer en GET et le déserialiser après récupération.
les fonction serialise() et unserialize() sont là pour cela.

Mais dans le cas d'un grand tableau, je ne te conseille pas de le serialiser, ton url serait trop longue

Re: méthode $_GET[avec un tableau]

Posté : 29 mai 2012, 10:15
par Dynamic
Bonjour, je ne comprends pas, cette page n'envoie pas de tableau, c'est celle qui doit justement recevoir les valeurs du tableau.

Je vous fournis le code de la page précédente pour être peut-être plus précis.
<HEAD>
<SCRIPT LANGUAGE="JavaScript">

function popup(page) {
	// ouvre une fenetre sans barre d'etat, ni d'ascenceur
	window.open(page,'popup','width=410,height=280,toolbar=false,scrollbars=false');	
}
</SCRIPT>
<title>Structure & équipes pédagogiques</title></HEAD>
<style type="text/css">

<?php /** Création de différents styles propres à la page PHP. */?>
<!--
.Style1 {
	color: #000000;
	font-weight: bold;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}
.Style2 {
	color: #FFCC00;
	font-weight: bold;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}
.Style4 {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-weight: bold;
	color: #0099FF;
}
a:link {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: medium;
	font-style: oblique;
	color: #0099FF;
}
a:visited {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: medium;
	font-style: oblique;
	color: #0099FF;
}
-->
</style>
<h1 align="center" class="Style4">STRUCTURE ET EQUIPES PEDAGOGIQUES </h1><BR><BR>

<table width='700' border='0' align='center'>
  <tr valign="top">
    <td><div align='center'>
	
<?php

/**Connexion à la base de données*/
require_once('connection_bdd.php');

$id_connect = mysql_connect(SERVEUR,LOG,MDP) or die ("probleme de connexion");
mysql_select_db(BDD) or die ("probleme de BDD");
mysql_query("SET NAMES 'utf8'"); 

/** Requête SQL*/
$sql=" select * from cycle ";

$req = mysql_query($sql) or die("Erreur SQL !<br>$sql<br>mysql_error()"); 

while($field = mysql_fetch_array($req))
{

	echo "<table border='0' width='341' cellspacing='0' cellpadding='0' align='center'>
	
		<td width='10' valign='top'><img border='0' src='CLT.gif' width='10' height='10'></td>
		<td colspan='2' valign='top' bgcolor='#DFE3EB'><img border='0' src='1px.gif' width='10' height='10'></td>
		<td width='10' valign='top'><img border='0' src='CRT.gif' width='10' height='10'></td>
	</tr>
	<tr>
		<td bgcolor='#DFE3EB' valign='top'><img border='0' src='1px.gif' width='10' height='10'></td>
			<td width='51' bgcolor='#DFE3EB' valign='top'>
				<p><a href='javascript:popup(\"info_pop.php?id_cycle=$field[0]\")'><img src='info.gif' width='51' height='51' border='0' alt='Information sur le $field[2]'></a><br>
			  </p>
        </td>
		    <td width='266' bgcolor='#DFE3EB' valign='center'><div align='center' class='Style1'>
		      <h3>$field[1]</h3>
		    </div></td>
	    <td bgcolor='#DFE3EB' valign='top'><img border='0' src='1px.gif' width='10' height='10'></td>
	</tr>
	<tr>
		<td height='10' valign='top'><img border='0' src='CLD.gif' width='10' height='10'></td>
		<td colspan='2' valign='top' bgcolor='#DFE3EB'><img border='0' src='1px.gif' width='10' height='10'></td>
		<td valign='top'><img border='0' src='CRD.gif' width='10' height='10'></td>
	</tr>
</table>";
echo "<table border='0' width='273' cellspacing='0' cellpadding='0' align='center'><tr>";

$sql2=" select * from ass_cycle_annee where id_cycle = $field[0] ";
$req2 = mysql_query($sql2) or die("Erreur SQL !<br>$sql2<br>mysql_error()"); 

while($field2 = mysql_fetch_array($req2))
{
	echo "<td><table border='0' width='50' cellspacing='0' cellpadding='0' align='center'>
  <tr>
    <td colspan='3' valign='top'><div align='center'><img src='bas.gif' width='15' height='17'></div></td>
  </tr>
  <tr>
    <td width='10' valign='top'><img border='0' src='CLT.gif' width='10' height='10'></td>
    <td width='249' valign='top' bgcolor='#DFE3EB'><img border='0' src='1px.gif' width='10' height='10'></td>
    <td width='10' valign='top'><img border='0' src='CRT.gif' width='10' height='10'></td>
  </tr>
  <tr>
    <td valign='top' bgcolor='#DFE3EB'><img border='0' src='1px.gif' width='10' height='10'></td>
    <td valign='top' bgcolor='#DFE3EB'><p align='center'><a href='index2.php?id_niveau=$field2[2]' class='Style3'> $field2[2] &deg;</a></p>      </td>
    <td valign='top' bgcolor='#DFE3EB'><img border='0' src='1px.gif' width='10' height='10'></td>
  </tr>
  <tr>
    <td height='10' valign='top'><img border='0' src='CLD.gif' width='10' height='10'></td>
    <td valign='top' bgcolor='#DFE3EB'><img border='0' src='1px.gif' width='10' height='10'></td>
    <td valign='top'><img border='0' src='CRD.gif' width='10' height='10'></td>
  </tr>
</table></td>";
}

echo "</tr></table><br><br>";

}

require ("pied.php");

 ?></div></td>
    <td><div align='center'>

<?php
$sql3=" select * from matiere ORDER BY nom_matiere ";
$req3 = mysql_query($sql3) or die("Erreur SQL !<br>$sql3<br>mysql_error()"); 

while($field3 = mysql_fetch_array($req3))
{
	echo "<table border='0' width='163' cellspacing='0' cellpadding='0' align='center'>
	<tr>
		<td width='10' valign='top'><img border='0' src='CLT.gif' width='10' height='10'></td>
		<td width='143' valign='top' bgcolor='#DFE3EB'><img border='0' src='1px.gif' width='10' height='10'></td>
		<td width='10' valign='top'><img border='0' src='CRT.gif' width='10' height='10'></td>
	</tr>
	<tr>
		<td bgcolor='#DFE3EB' valign='top'><img border='0' src='1px.gif' width='10' height='10'></td>
			<td valign='top' bgcolor='#DFE3EB'>
				<p align='center'><a href='index3.php?id_matiere=$field3[0]'>$field3[1]</a></p>              </td>
		    <td bgcolor='#DFE3EB' valign='top'><img border='0' src='1px.gif' width='10' height='10'></td>
	</tr>
	<tr>
		<td height='10' valign='top'><img border='0' src='CLD.gif' width='10' height='10'></td>
		<td valign='top' bgcolor='#DFE3EB'><img border='0' src='1px.gif' width='10' height='10'></td>
		<td valign='top'><img border='0' src='CRD.gif' width='10' height='10'></td>
	</tr>
	<tr>
	  <td height='10' colspan='3' valign='top'><div align='center'><img src='bas.gif' width='15' height='17'></div></td>
	  </tr>
</table>";
}

 ?></div></td>
  </tr>
</table>
<?php
require ("pied.php");
?>
Ce que je ne comprend pas c'est que le site marchait très bien avant le passage en PHP 5...

Merci d'avance

Re: méthode $_GET[avec un tableau]

Posté : 29 mai 2012, 14:56
par Xartrick
Je ne vois pas où est le problème, tes données sont biens transmises via la méthode GET.

Il faut savoir que l'utilisateur doit avoir le moins de liberté possible, ici, il a la possibilité de modifier beaucoup de chose, et en plus de cela, ces données ne sont pas correctement traité.
Le mieux, comme dit plus haut, est d'utiliser les sessions.

Essaye un simple et voir ce qui en ressort et travailler dessus en conséquence:

var_dump($_GET);

Re: méthode $_GET[avec un tableau]

Posté : 30 mai 2012, 11:54
par Dynamic
Merci j'ai résolu le problème finalement, il y avait des gros soucis avec les variables.

Merci à tous ceux qui m'ont aidé .