Mise à jour PHP SQL

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 : Mise à jour PHP SQL

Re: Mise à jour PHP SQL

par fabrice88250 » 23 déc. 2011, 13:36

Merci sa fonctionne
j'avais un soucis avec la récupération via tableau.
j'ai donc modifié mon code en fonction et du coup je récupère bien les infos du formulaire.
Bonnes fêtes de fin d'années a tous !

Re: Mise à jour PHP SQL

par fabrice88250 » 23 déc. 2011, 13:02

j'ai modifié à nouveau le code afin d'inclure la réception dans la boucle for mais toujours rien.
<?php
$count = mysql_real_escape_string($_POST['count']);


for($i=0;$i<$count;$i++){
	
		$nbrpers = mysql_real_escape_string($_POST['nbrpers']);
		$unenuit = mysql_real_escape_string($_POST['unenuit']);
		$nuitplus = mysql_real_escape_string($_POST['nuitplus']);
		$Id = mysql_real_escape_string($_POST['Id']);

		echo 'nbrpers : '.$nbrpers[$i];
		echo 'unenuit : '.$unenuit[$i];
		echo 'nuitplus : '.$nuitplus[$i];
		echo 'Id : '.$Id[$i]. '<br/>';

		$sql1="UPDATE IWtarifsloca SET nbrpers='$nbrpers[$i]', unenuit='$unenuit[$i]', nuitplus='$nuitplus[$i]' WHERE id='$Id[$i]'";
		$result1=mysql_query($sql1);
		if (mysql_errno() <> 0) echo mysql_error(),'<br>',$sql1,'<br>';
}

mysql_close();
?>

Re: Mise à jour PHP SQL

par moogli » 23 déc. 2011, 12:53

Se que je ne comprend pas c'est pourquoi d'une version php a un autre sa ne fonctionne plus.
Suppression de register globals et c'est une bonne chose, cela t'oblige a contrôler tes données et peux éviter failles de sécurités.

réfléchie bien a l'ordre des choses et tu devrais trouver une solution !


@+

Re: Mise à jour PHP SQL

par fabrice88250 » 23 déc. 2011, 12:43

je ne connait pas PDO.
Se que je ne comprend pas c'est pourquoi d'une version php a un autre sa ne fonctionne plus.
j'ai essayé avec et sans les ''
je ne récupère rien ! je ne comprend vraiment pas pourquoi sa ne fonctionne pas...
j'ai mis des echo et je n’obtient rien c'est le vide. comme si les infos du formulaire n'arrivaient pas dans la page de validation
<?php
include("../connexion-sql.php");
		$nbrpers = mysql_real_escape_string($_POST['nbrpers']);
		$unenuit = mysql_real_escape_string($_POST['unenuit']);
		$nuitplus = mysql_real_escape_string($_POST['nuitplus']);
		$count = mysql_real_escape_string($_POST['count']);
		$Id = mysql_real_escape_string($_POST['Id']);

// Check if button name "Submit" is active, do this
	for($i=0;$i<$count;$i++){
		echo 'nbrpers : '.$nbrpers;
		echo 'unenuit : '.$unenuit;
		echo 'nuitplus : '.$nuitplus;
		echo 'Id : '.$Id. '<br/>';

		$sql1="UPDATE IWtarifsloca SET nbrpers='$nbrpers[$i]', unenuit='$unenuit[$i]', nuitplus='$nuitplus[$i]' WHERE id='$Id[$i]'";
		$result1=mysql_query($sql1);
		if (mysql_errno() <> 0) echo mysql_error(),'<br>',$sql1,'<br>';
}

mysql_close();
?>

Re: Mise à jour PHP SQL

par moogli » 23 déc. 2011, 12:32

au pif : les variables ne sont pas des tableaux et les [$i] servent a rien.

les variables sont des tableaux et les mysql_real_escape_string sont a faire dans la boucle for.

Pour une telle chose tu peux utiliser PDO et les requêtes préparées ça e simplifiais un peu la tache ;)

@+

Re: Mise à jour PHP SQL

par fabrice88250 » 23 déc. 2011, 12:14

je viens de faire cette modification :
<?php
		include("bdd.php");
		
		$nbrpers = mysql_real_escape_string($_POST['nbrpers']);
		$unenuit = mysql_real_escape_string($_POST['unenuit']);
		$nuitplus = mysql_real_escape_string($_POST['nuitplus']);
		$count = mysql_real_escape_string($_POST['count']);
		$Id = mysql_real_escape_string($_POST['Id']);

// Check if button name "Submit" is active, do this
	for($i=0;$i<$count;$i++){
		$sql1="UPDATE IWtarifsloca SET nbrpers='$nbrpers[$i]', unenuit='$unenuit[$i]', nuitplus='$nuitplus[$i]' WHERE id=$Id[$i]";
		$result1=mysql_query($sql1);
		if (mysql_errno() <> 0) echo mysql_error(),'<br>',$sql1,'<br>';
}

mysql_close();
?>

et j'ai comme erreur :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
UPDATE IWtarifsloca SET nbrpers='', unenuit='', nuitplus='' WHERE id=

Re: Mise à jour PHP SQL

par Mazarini » 23 déc. 2011, 12:06

Il y a une incohérence entre :
$Id = mysql_real_escape_string($_POST['Id']);
et
$sql1="UPDATE IWtarifsloca SET nbrpers='$nbrpers[$i]', unenuit='$unenuit[$i]', nuitplus='$nuitplus[$i]' WHERE id='$Id[$i]'";

Il ne faut pas de ' autour des nombres
$sql1="UPDATE IWtarifsloca SET nbrpers='$nbrpers[$i]', unenuit='$unenuit[$i]', nuitplus='$nuitplus[$i]' WHERE id='$Id[$i]'";

Après un mysql_query(), il faut ajouter :
If (mysql_errno() <> 0) echo mysql_error(),'<br>',$sql1,'<br>';
(pour avoir des info sur l'erreur)

Mise à jour PHP SQL

par fabrice88250 » 23 déc. 2011, 11:15

Bonjour,
j'ai des tarifs dans ma base de données.
Je souhaite modifier ces tarifs en une seule fois et j'ai donc créé 2 pages.
une première qui contient u formulaire avec les tarifs et une deuxième qui valide la modification.

La problème que je rencontre est que les modifications sur un version de php PHP Version 5.2.17 fonctionnent mais sur un autre hébergement avec une version PHP Version 5.3.2-1ubuntu4.9 ne se font pas et je n'arrive pas à trouver d’où est le problème.

voici la page avec formulaire :
<?php
$sql="SELECT * FROM IWtarifschbr ORDER BY id ASC";
$result=mysql_query($sql);
// On compte le nombre de lignes dans la table
$count=mysql_num_rows($result);
echo 'Count = '.$count;

// On fait une boucle pour lister tout ce que contient la table :
while($rows=mysql_fetch_array($result) )
{
?>
<input type="hidden" name="Id[]" id="Id" value="<?php echo $rows['id'] ;?>">
<input type="hidden" name="count" id="count" value="<?php echo $count;?>">
<input name="nbrpers[]" type="text" id="nbrpers" class="nbrpers" value="<?php echo $rows['nbrpers']; ?>" size="20">
<input name="unenuit[]" type="text" id="unenuit" class="miniinput" value="<?php echo $rows['unenuit']; ?>" size="20">
<input name="nuitplus[]" type="text" id="nuitplus" class="miniinput" value="<?php echo $rows['nuitplus']; ?>" size="10" />
 <?php
}
?>
<input type="submit" name="Submit" value="Modifier">
</form>
et le page de traitement :
<?php
		$nbrpers = mysql_real_escape_string($_POST['nbrpers']);
		$unenuit = mysql_real_escape_string($_POST['unenuit']);
		$nuitplus = mysql_real_escape_string($_POST['nuitplus']);
		$count = mysql_real_escape_string($_POST['count']);
		$Id = mysql_real_escape_string($_POST['Id']);

echo $count;
// Check if button name "Submit" is active, do this
	for($i=0;$i<$count;$i++){
		$sql1="UPDATE IWtarifsloca SET nbrpers='$nbrpers[$i]', unenuit='$unenuit[$i]', nuitplus='$nuitplus[$i]' WHERE id='$Id[$i]'";
		$result1=mysql_query($sql1);
}

mysql_close();
?>