plusieurs variables dans un "print"

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : plusieurs variables dans un "print"

Re: plusieurs variables dans un "print"

par lebad » 14 juin 2010, 16:45

Merci beaucoup à tous.
J'ai fini ce que je voulais faire.
Je tiens une auto-école, et il me fallait une base de données pour noter et conserver les résultats des élèves aux code. Mais, je voulais également pouvoir noter les élèves présents et savoir quel DVD je peux mettre. A savoir une série que personne dans les présents n'a encore fait.
Tout marche nickel.
Merci encore.
Et si j'ai une autre question, je n'hésiterais pas.
@+

Lebad.

Re: plusieurs variables dans un "print"

par stealth35 » 22 avr. 2010, 14:20

tu t'embête un peu avec ton substr (et ducoup le is_numeric et autre), pourquoi ne pas utiliser le match
preg_match('#nb_fts(\d+)#',$cle, $val) //comme c'est "\d" ca sera forcement numerique
echo $val[1]

Re: plusieurs variables dans un "print"

par Aureusms » 22 avr. 2010, 12:05

Bien tu parles de nombre de fautes. Aussi je suppose que tu avs vouloir que $nb_fts soit que un chiffre. Il faudra alors le tester.
Tu peux vérifier ceci par la fonction is_numeric() et je te conseille de regarder aussi vers intval() (sauf si ton nombre de fautes n'est pas un entier).

Une vérification de la sorte est possible :
if (preg_match('#nb_fts#',$cle))
        {
                $numero_clef = substr($cle,6);
                if (is_numeric($valeur))
                    $valeur = intval($valeur); //met la valeur rentrée en entier 
                else
                    $valeur = "pas un nombre";
                $tab_nb_fts[$numero_clef] = $valeur;
        }

Re: plusieurs variables dans un "print"

par lebad » 22 avr. 2010, 11:39

Merci beaucoup. C'est tout à fait ce que je voulais.
Aureusms, tu voulais parler de quoi quand tu dis que tu n'as rien mis pour la sécurité ?

Je continue ma programmation et je vous tiens au courant.
Merci.

Lebad.

Re: plusieurs variables dans un "print"

par Aureusms » 21 avr. 2010, 15:42

Ok cela simplifie le problème !!!

D'abord tu boucles sur la variable POST pour identifier "nb_fts" et "nom_eleve"
Ensuite tu vérifie le nombre de nom_eleve et tu fais ton affichage :
$tab_nb_fts = array();
$tab_nom_eleve = array();
foreach ($_POST as $cle => $valeur)
{
	if (preg_match('#nb_fts#',$cle))
	{
		$numero_clef = substr($cle,6);
		$tab_nb_fts[$numero_clef] = $valeur;
	}
	if (preg_match('#nom_eleve#',$cle))	
	{	
		$numero_clef = substr($cle,9);
		$tab_nom_eleve[$numero_clef] = $valeur;
	}
}
//on tri le tableau nom_eleve en fonction des clef
ksort($tab_nom_eleve);

//on affiche le tableau
foreach ($tab_nom_eleve as $cle => $valeur)
{
	if (array_key_exists($cle,$tab_nb_fts))
		echo "Elève : ".$tab_nom_eleve[$cle]." - Nombre de fautes : ".$tab_nb_fts[$cle]."<br />";
	else
		echo "Elève : ".$tab_nom_eleve[$cle]." - Nombre de fautes : ERREUR<br />";
}
Attention j'ai rien mis pour la sécurité...

Re: plusieurs variables dans un "print"

par lebad » 21 avr. 2010, 12:07

Ok, tout d'abord, merci pour vos réponses.
Mes variables 'eleves1' nb_fts1' 'eleve2' nb_fts2'... Viennent d'un formaulaire de la page précédente dont voici le code :
<?php
// Affichage du champ de saisie du résultat des élèves présents
$sql = 'SELECT * FROM liste_eleves_presents_aeg';
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
print ('<form action="enregistrement_resultats.php" method="post">');
$i=1;
while($data = mysql_fetch_array($req))
{
print ('<input type="text" name="nb_fts'.$i.'">');
print ('<input type="hidden" name="nom_eleve'.$i.'" value ="'.$data[nom].'">');
print ("<br>");
$i = $i+1;
};
print ("<br>");
print('<input type="submit" value="enregistrer les résultats">');
print("</form>");

mysql_close();
?>
Tout ça se passe bien. Ce formulaire me transmet bien toutes les informations dont j'ai besoin.
J'ai bien compris notamment la première réponse.
Petite parenthèse, j'ai mis un 'print' pour que mes données apparaissent et aussi pour un essai, mais dans mon code final, ça ne sera pas un 'print', mais plutôt un 'update' pour mettre à jour une base de données.
Mon problème actuel est le suivant :
je vais avoir environs 30 élèves et leur nombre de faute :
eleve1 ; nb_fts1
eleve2 ; nb_fts2
eleve3 ; nb_fts3
eleve4 ; nb_fts4
eleve5 ; nb_fts5
...

Ce que je voudrais faire, c'est pouvoir traiter mes données dans une boucle ('for' ou 'while'...).
J'ai essayé ceci :
$y = 1;
while ($y < 31)
{
print ($nom_eleve.$y);
print ($nb_fts.$y);
print ("<br>);
$y = $y+1;
};
Ceci pour avoir, à la première itération 'eleve1', à la deuxième 'eleve2 et ainsi de suite, mais ça ne fonctionne pas... J'ai essayé de mettre de guillemets, mais sans plus de succès...
Merci beaucoup pour l'intérêt que vous prêtez à mon problème.

Lebad

Re: plusieurs variables dans un "print"

par Aureusms » 21 avr. 2010, 09:04

Pour bien l'automatiser il faudrait stocker les valeurs : $nom_eleve1, $nom_eleve2, $nom_eleve3, ... dans un tableau que tu testeras.

Ex.
$tableau_eleve = array ("MARTIN", "DUPONT", "DURAND");

//tu parcours tous le tableau :
foreach ($tableau_eleve as $nom)
{
   //si pas vide
   if (!empty($nom))
       echo ou print...
}
Tes variables $nom_eleve1 et $nb_fts1,... elles viennent d'où ?

Re: plusieurs variables dans un "print"

par visualight » 20 avr. 2010, 23:09

Ooups, j'ai pas lu ton message correctement.

Pour l'automatisation et si tu récupère tes résultats à partir d'une base de donnée, tu peux utiliser while, sinon, utilises for ou si tes données sont dans un array (tableau) utilise foreach.

Il y a des exemples d'utilisation dans les liens que je t'envoie (exemple vers le bas de page) :

http://php.net/manual/fr/function.mysql-fetch-assoc.php (voir l'exemple pour récupérer tes données via une table + exemple de while)
http://php.net/manual/fr/control-structures.for.php (exemple n° 1)
http://www.manuelphp.com/php/control-st ... oreach.php

Essaye de faire quelque chose par toi même, même si ça ne marche pas mais reviens nous voir pour que l'on puisse t'aider à comprendre et t'aider à réussir ;)

A+ :)

Re: plusieurs variables dans un "print"

par visualight » 20 avr. 2010, 22:59

Salut,

Tout d'abord, pour vérifier si une variable est vide ou n'existe pas, tu dois utiliser les fonctions : isset et empty.
http://www.manuelphp.com/php/function.isset.php
http://php.net/manual/fr/function.empty.php

La négation de ses fonctions s'utilise en applicant un ! devant la fonction... exemple: !isset (n'existe pas) - !empty (n'est pas vide)

Et puis, il y a cet article qui parle de la différence entre print et echo : http://www.learnphponline.com/php-basic ... o-vs-print
Conclusion : ... So what do we use? Echo of course! ...

Ainsi tu devrais avoir un code qui commence comme ceci :
if (isset($nom_eleve1) AND !empty($nom_eleve1)) {
echo $nom_eleve1.'-'.$nb_fts1.'<br />';
}

...
Voilà ;)

A+

plusieurs variables dans un "print"

par lebad » 20 avr. 2010, 21:43

Bonjour à tous, je suis débutant et j'ai un problème avec 'print'
J'aimerais automatiser (avec on 'for' ou un 'while')ce code, pour aller jusqu'à 30...
Mais je n'y arrive pas...
Quelqu'un pourrait-il m'aider s'il vous plait.
Merci et bonne soiré.

Lebad.

if ($nom_eleve1 != "")
{
print ($nom_eleve1);
print(" - ");
print($nb_fts1);
print("<br>");
}
if ($nom_eleve2 != "")
{
print ($nom_eleve2);
print(" - ");
print($nb_fts2);
print("<br>");
}
if ($nom_eleve3 != "")
{
print ($nom_eleve3);
print(" - ");
print($nb_fts3);
print("<br>");
}
...