Page 1 sur 2
soucis avec =+ et cherche une fonction
Posté : 03 nov. 2007, 14:57
par Snipy
Bonjour à tous,
Tout d'abord j'ai un problème avec ceci
if(isset($_POST['personnels']) && isset($_POST['nombre']) && !empty($_POST['personnels'])&& !empty($_POST['nombre']))
{
$personnels = mysql_real_escape_string($_POST['personnels']);
$nombre = (int)$_POST['nombre'];
echo $personnels;
echo $nombre;
mysql_query('UPDATE equipes SET '.$personnels.' =+'.$nombre.' WHERE id_equipe='.$_SESSION['id_equipe']);
}
$personnels contient le nom du champ que je dois incrementé de
$nombre,
malheureusement cela ne marche pas
Sinon ma seconde question est : y a t'il une fonction qui existe afind e vérifier si un nombre est positif ?
Merci d'avance et bon week end à tous
Posté : 03 nov. 2007, 15:09
par h0_noMan
mysql_query('UPDATE equipes SET '.$personnels.' = '.$personnels.'+'.$nombre.' WHERE id_equipe='.$_SESSION['id_equipe']);
Sinon pour ta 2eme question.
Une fonction pour cela est inutile.
Tu testes si la variables est supérieur à 0.
if($variable>0)
// TU peux aussi selectionne que les lignes ayant un champ positif
SELECT * FROM matable WHERE monchamp>0
Posté : 03 nov. 2007, 15:21
par Snipy
Concernant la 2eme question, c'est que je vais avoir besoin de vérifier cela constament, donc je pensais qu'une fonciton pouvait être plus approprié
Posté : 03 nov. 2007, 15:46
par h0_noMan
En creant une fonction, tu devras tout aussi bien tester sa valeur de retour.
if($valeur>0)
// ou
if(est_positif($valeur))
Posté : 03 nov. 2007, 16:10
par Truc
Il faut écrire "+=" et non "=+"
Pour la fonction... hmm... elle doit servir à quoi ? Plus tu donnes de détails plus tu as de chances d'avoir de bonnes réponses

Re: soucis avec =+ et cherche une fonction
Posté : 03 nov. 2007, 17:16
par Tracker
Bonjour à tous,
Tout d'abord j'ai un problème avec ceci
if(isset($_POST['personnels']) && isset($_POST['nombre']) && !empty($_POST['personnels'])&& !empty($_POST['nombre']))
{
$personnels = mysql_real_escape_string($_POST['personnels']);
$nombre = (int)$_POST['nombre'];
echo $personnels;
echo $nombre;
mysql_query('UPDATE equipes SET '.$personnels.' =+'.$nombre.' WHERE id_equipe='.$_SESSION['id_equipe']);
}
$personnels contient le nom du champ que je dois incrementé de
$nombre,
malheureusement cela ne marche pas
Sinon ma seconde question est : y a t'il une fonction qui existe afind e vérifier si un nombre est positif ?
Merci d'avance et bon week end à tous
Salut,
Ton but est-il de faire un script
spécial injection ???
Imaginons que colx soit le nom d'une colonne de ta table, dans ton formulaire pour le champs "personnels" tape:
colx=0 --
Et regarde l'état de tes infos.
nb: remplace colx par le nom d'un des champs visible par le client dans le formulaire.
Tracker.
Posté : 03 nov. 2007, 17:41
par Snipy
Justement j'allais en venir au problème de sécurité voici donc la partie formulaire afin que vous voyez les variables qui en sortiront
<p><select name="choix">
<option value="recruter">Recruter</option>
<option value="licencier">Licencier</option>
</select></p>
<p><select name="personnels">
<option value="adjoints">Entraineurs adjoints</option>
<option value="specialises">Entraineurs spécialistes</option>
<option value="medecins">Médecins</option>
<option value="kines">Kinésithérapeutes</option>
<option value="attaches">Attachés de presse</option>
<option value="chasseurs">Chasseurs de tête</option>
</select></p>
<p> <input type="text" name="nombre" size ="5" /></p>
Donc 3 variables
$choix $personnels et
$nombre
Et voici ou j'ne suis niveau protection
if(isset($_POST['personnels']) && isset($_POST['nombre']) && !empty($_POST['personnels']) && !empty($_POST['nombre']) && isset($_POST['choix']) && !empty($_POST['choix']))
{
$choix = mysql_real_escape_string($_POST['choix']);
$personnels = mysql_real_escape_string($_POST['personnels']);
$nombre = (int)$_POST['nombre'];
if($nombre>=0)
{
if()
if( $choix == "recruter")
{
mysql_query('UPDATE equipes SET '.$personnels.' = '.$personnels.'+'.$nombre.' WHERE id_equipe='.$_SESSION['id_equipe']);
}
elseif($choix == "licencier")
{
mysql_query('UPDATE equipes SET '.$personnels.' = '.$personnels.'-'.$nombre.' WHERE id_equipe='.$_SESSION['id_equipe']);
}
else
{
echo '<p class="erreur"> Une erreur est survenue</p>';
}
}
else
{
echo '<p class="erreur"> Une erreur est survenue</p>';
}
}
Il me reste donc a vérifier la variable $personnels, mais sachant qu'elle peut prendre plusieurs valeurs possibles quelle est la meilleur solution pour la vérifier ?
Posté : 03 nov. 2007, 18:49
par h0_noMan
Tu peux creer un tableau avec les valeurs possible que peux prendre $personnels et tester si $spersonnel est dans ce tableau avec in_array()
Tu peux aussi afin d'eviter des erreurs :
$nombre = (isset($_POST['nombre']))?intval($_POST['nombre']):0;
Posté : 03 nov. 2007, 19:07
par Snipy
ok je pensais effectivement à l'utilisation d'una rray.
D'autres suggestions?
QUel erreur ton intval m'éviterait ?
Car avec le (int) si un nombre n'est pas rentré alors ça me le transforme en un nombre (0 pour une chaine non?)
Posté : 03 nov. 2007, 19:20
par h0_noMan
Si jamais $_POST['nombre'] n'est pas défini alors tu auras une erreur en l'affectant.
Apres tu peux tout autant garder ton transtypage.
Posté : 03 nov. 2007, 19:54
par Snipy
La premiere condition vérifie que toutes mes variables superglobales sont bien définies donc je pense qu'il n'y a pas de problème

Posté : 03 nov. 2007, 20:03
par h0_noMan
En effet.
Je n'avais pas vu cela.
Satanée molette.
Posté : 05 nov. 2007, 03:29
par Power Web
Pour le truc négatif/positif je connais abs() qui renvoie la valeur aboslue (ex abs(-2) = 2) mais c'est pas sur que c'est ce que tu veux...
Au passage : (int) ?
La fonction c'est intval() ou is_int() ou encore is_numeric() mais (int) non

Posté : 05 nov. 2007, 03:49
par h0_noMan
Il s'agit de transtypage.
Une petite explication ici :
http://fr.php.net/manual/en/language.ty ... ggling.php
Posté : 05 nov. 2007, 04:17
par AB
Au passage : (int) ?
La fonction c'est intval() ou is_int() ou encore is_numeric() mais (int) non

Attention, si c'est pour tester des valeurs provenant de formulaires is_int() n'est pas approprié
Note: Pour tester si une variable est un nombre ou une chaîne numérique (comme les entrées de formulaire, qui sont toujours des chaînes), vous devez utiliser la fonction is_numeric().
Si l'on s'attend à récupérer un entier, on peut faire
$nombre = (isset($_POST['nombre']) && is_numeric($_POST['nombre']))? intval($_POST['nombre']) : 0;