petite aide pour recuperer des variables

Eléphant du PHP | 138 Messages

07 mars 2011, 20:27

Salut,

Je finalise un site et je ne sais pas trop comment recuperer une liste de variable je m'explique
sur une 1ere page j'ai

dans un formulaire
$cat_liste3=mysql_query("SELECT id, name, type_champs FROM caracteristiques_technique WHERE valide='Y' and id_cat='3' order by name ASC");
while($rs3 = mysql_fetch_row($cat_liste3))
{
echo "<td width='265'><input type='checkbox' name='carac_$rs3[0]' id='carac_$rs3[0]' value='Y'/></td>";
}
je voudrais recuperer ces valeurs pour les mettre dans des sessions
j'avais penser a mettre
$carac_tech30 = $_POST['carac_30'];
$carac_tech31 = $_POST['carac_31'];
$carac_tech32 = $_POST['carac_32'];
$carac_tech33 = $_POST['carac_33'];
puis mettre ces variables dans des variables de sessions


Mais je me suis aperçu que ce n'etais pas jouable je pense que ca ne doit pas etre tres difficile mais j'avoue que je seche un peu.

Merci pour votre aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 mars 2011, 20:43

salut,

le plus simple est de nommer les checkbox avec la notation tableau (name="check[]" par exemple) tu récupère ainsi un tableau dans $_POST ($_POST['check'] est un tableau dans mon exemple).

Ensuite une simple copie pour mettre le tout en session $_SESSION['check'] = $_POST['check'];

N'oublie pas le session_start() sur toute les pages.


pour plus d'aide si cela ne suffit pas il nous faut le code de validation du formulaire et le code du formulaire (complet ;) )

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 138 Messages

07 mars 2011, 20:48

En faite je veux recuperer chaque ligne independament pour ensuite pouvoir les remettre dans une table du genre
id valeur
id valeur

ViPHP
AB
ViPHP | 5818 Messages

07 mars 2011, 20:56

A la place de mysql_fetch_row, utilises mysql_fetch_assoc ce sera plus simple :
while($rs3 = mysql_fetch_assoc($cat_liste3))
Ensuite pour tes checkbox utilises les tableaux si besoin à deux dimensions.

Peut-être
name="carac[$rs3['name']][]" 
Mais je n'en sais pas assez pour t'aider plus précisément. Quels champs de ta table exactement veux tu récupérer et mettre dans tes checkbox et avec quelle valeurs...

En phase de développement, pour visualiser le tableau récupéré, faits en haut de ta page
echo '<pre>';
print_r($_POST);
echo '</pre>';

Eléphant du PHP | 138 Messages

07 mars 2011, 21:02

En faite je veux recuperer l'id de ma requete et la valeur du checkbox et la remettre dans une table.

Eléphant du PHP | 138 Messages

07 mars 2011, 21:07

Bon j'ai essayé mais ca me semble ne rien donner

ViPHP
AB
ViPHP | 5818 Messages

07 mars 2011, 21:20

Si id est unique (et en considérant que tu utilise mysql_fetch_assoc) :
<input type='checkbox' name="carac[$rs3['id']]" ...
seuls les checkbox cochés seront retournés dans le tableau $_POST['carac'].

Eléphant du PHP | 138 Messages

07 mars 2011, 21:27

ok je vais essayer ca tout a l'heure

J'ai oublié de rajouter ca tout a l'heure
if ($rs3[2]=="coche"){
echo "<td width='265'><input type='checkbox' name='carac_$rs3[0]' id='carac_$rs3[0]' value='Y'/></td>";
echo "carac_$rs3[0]";
//name='carac_$rs3[0]'
}
if ($rs3[2]=="texte"){
echo "<td width='265'><input name='carac_$rs3[0]' type='text' class='bleu_petit' id='carac_$rs3[0]' size='20' /></td>";
echo "carac_$rs3[0]";
}
Mes données peuvent etre soit des cases a cocher soit des valeurs de champs texte mais je pense que ca devrait aussi fonctionner

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 mars 2011, 22:00

Heu pour les cases a cocher il faut mettre en value la valeur de l'id sinon c'est le brin a utiliser ;)


Quand au reste tu n'est pas super clair quand a ce que tu veux au final :/

@+
Modifié en dernier par moogli le 08 mars 2011, 04:14, modifié 1 fois.
Il en faut peu pour être heureux ......

Eléphant du PHP | 138 Messages

07 mars 2011, 22:11

Bon je vais essayer d'eclaircir
$cat_liste3=mysql_query("SELECT id, name, type_champs FROM caracteristiques_technique WHERE valide='Y' and id_cat='3' order by name ASC");
while($rs3 = mysql_fetch_assoc($cat_liste3))
{
echo "<table width='400' border='1'>
                    <tr>";
echo "<td width='125'>$rs3[1]</td>";
if ($rs3[2]=="coche"){
echo "<td width='265'><input type='checkbox' name='carac_$rs3[0]' id='carac_$rs3[0]' value='Y'/></td>";
echo "carac_$rs3[0]";
//name='carac_$rs3[0]'
}
if ($rs3[2]=="texte"){
echo "<td width='265'><input name='carac_$rs3[0]' type='text' class='bleu_petit' id='carac_$rs3[0]' size='20' /></td>";
echo "carac_$rs3[0]";
}

Je veux recuperer dans la seconde page id + valeur et pouvoir le mettre dans une variable de session

J'espere que c'est plus clair

ViPHP
AB
ViPHP | 5818 Messages

07 mars 2011, 23:39

C'est pas un formulaire que tu veux construire ? Je vois pas de balise form ?

Et si tu n'as pas besoin de formulaire, alors pourquoi les checkbox ?

Par ailleurs je te disais d'utiliser mysql_fetch_assoc pour que ce soit plus clair, et donc la syntaxe avec mysql_fetch_assoc pour récupérer les valeurs est $rs3['id'] si tu veux récupérer l'id.

Pour le reste ce n'est pas plus clair pour nous puisque nous n'avons toujours pas eu d'explications avec des phrases (et pas avec du code qui ne correspond à rien). Donc on attend toujours une suite de phrases qui nous indiquent le fonctionnement détaillé de ce que doit faire ton code de manière à ce que quelqu'un n'ayant aucune notion de programmation puisse comprendre.
Quand on a bien formulé un problème, la moitié du travail est déjà fait. Et puis ça nous éviterait de répondre à côté.

Eléphant du PHP | 138 Messages

08 mars 2011, 11:46

Bon je vais essayer d'expliquer plus en detail

ma base de données est constituée comme ceci

id id_cat name type_champs valide
1 2 Anti germinatif traité coche Y
2 2 Anti germinatif, traité (non) coche Y
3 2 Déchet (tare) texte Y
form action="add_prod4.php" method="Post" name="form1" id="form1">
          //grains on recherche dans la table les elements qui correspondent a id_cat = 2  

$cat_liste1=mysql_query("SELECT id, name, type_champs, count(id) FROM caracteristiques_technique WHERE valide='Y' and id_cat='2' order by name ASC");
while($rs1 = mysql_fetch_row($cat_liste1))
{
echo "<table width='400' border='1'>
                    <tr>";
echo "<td width='125'>$rs1[1]</td>";
if ($rs1[0]==""){
	echo "Il n'y a aucune caractéristique technique disponible";
//Si vide on affiche ceci
}else{
if ($rs1[2]=="coche"){

//si le type de champs est coche c'est une case a cocher
echo "<td width='265'><input type='checkbox' name='carac_$rs1[0]' id='carac_$rs1[0]' value='Y'/></td>";
}
if ($rs1[2]=="texte"){

//si le type de champs est texte c'est une zone de texte
echo "<td width='265'><input name='carac_$rs1[0]' type='text' class='bleu_petit' id='carac_$rs1[0]' size='20' /></td>";
}
}
                    echo "</tr>
                  </table>

<br>";	
}
</form>
Avec ceci je devrais avoir comme variable carac_1 carac_2 et carac_3 accompagnes de leur valeurs le probleme c'est que cela peut aussi etre carac_44 carac_34 etc etc...
J'avais pensé a recuperer les variable sur mon autre page en dur mais vu que l'i peut etre variable ca ne fonctionnera pas

J'espere que c'est un peu plus clair

Merci de votre aide

Eléphant du PHP | 138 Messages

08 mars 2011, 14:27

Bon je cherche depuis ce matin une solution, je pense que le mieux pour moi serait de stoker dans un tableau le nom du champs et sa valeur j'ai fais des tests avec ceci
if ($rs1[2]=="texte"){
echo "<td width='265'><input name='carac_tech' type='text' class='bleu_petit' size='20' /></td>";
echo "<input type='hidden' name='carac_tech' value='carac_$rs1[0]'/>";
//echo "carac_$rs1[0]";
}
$caddie[]= array($carac_tech); 
$_SESSION["caddie"] = $caddie;
}
Mais le tableau est vide

ViPHP
AB
ViPHP | 5818 Messages

08 mars 2011, 16:37

id id_cat name type_champs valide
1 2 Anti germinatif traité coche Y
2 2 Anti germinatif, traité (non) coche Y
3 2 Déchet (tare) texte Y
Il y a quoi dans ton id ?
Pourquoi les lignes 1 et 2 ? ne pourrais-tu pas faire une seule colonne ?
A quoi correspond "Y", "coche Y", "texte Y" ?

Le mieux ce serait de nous donner un exemple avec 2 ou 3 lignes remplies.

Ensuite que veux tu récupérer ? Et encore une fois utilise des phrases pour expliquer ce que tu veux récupérer.

Eléphant du PHP | 138 Messages

08 mars 2011, 16:57

Ok désole si je m'exprime pas tres bien voici la signification de la table

id = un id auto incrementé
id_cat = l'id de la categorie de produit que j'ai (j'ai 4 produits donc suivant le produit j'ai un id associé)
name = le nom
type de champs = c'est ici ou je decide si c'est uen case a coche ou un champs de texte (les valeurs peuvent etre soit coche, soit texte
valide = me sert a savoir si cette donné est toujours valide ou pas

donc par rapport a mon code j'ai ceci
$cat_liste1=mysql_query("SELECT id, name, type_champs FROM caracteristiques_technique WHERE valide='Y' and id_cat='2' order by name ASC");
while($rs1 = mysql_fetch_row($cat_liste1))
{
echo "<table width='400' border='1'>
                    <tr>";
echo "<td width='125'>$rs1[1]</td>";
if ($rs1[0]==""){
        echo "Il n'y a aucune caractéristique technique disponible";
//Si vide on affiche ceci
}else{
if ($rs1[2]=="coche"){

//si le type de champs est coche c'est une case a cocher
echo "<td width='265'><input type='checkbox' name='carac_$rs1[0]' id='carac_$rs1[0]' value='Y'/></td>";
}
if ($rs1[2]=="texte"){

//si le type de champs est texte c'est une zone de texte
echo "<td width='265'><input name='carac_$rs1[0]' type='text' class='bleu_petit' id='carac_$rs1[0]' size='20' /></td>";
}
}
                    echo "</tr>
                  </table>

<br>";  
}
Ensuite je voudrais recuperer tous ces resultats dans un tableau avec nom du champs et sa valeur soit pour les cases a cocher Y soit pour les champs de texte le contenu de ce dernier.

J'espere que c'est un peu plus clair, merci pour ton aide et ta patience