Forum Clubic

[PHP/MySQL] UPDATE, mais pas d'édition!

Bonjour!

J’ai un problème: je fais un formulaire, mais il n’édite pas, pourtant, j’ai fait la requête “UPDATE”:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<?php
// On commence par récupérer les champs

if(isset($_POST['login']))      $login=$_POST['login'];
else      $login="";


if(isset($_POST['1']))      $un=$_POST['1'];
else      $un="";

if(isset($_POST['2']))      $deux=$_POST['2'];
else      $deux="";

if(isset($_POST['3']))      $trois=$_POST['3'];
else      $trois="";

if(isset($_POST['4']))      $quatre=$_POST['4'];
else      $quatre="";

if(isset($_POST['5']))      $cinq=$_POST['5'];
else      $cinq="";

if(isset($_POST['6']))      $six=$_POST['6'];
else      $six="";



// On vérifie si les champs sont vides
if(empty($un) OR empty($deux) OR empty($trois) OR empty($quatre) OR empty($cinq) OR empty($six))
    {
    echo '<font color="red">Tous les champs sont obligatoires !<br><a href="loto.php">Rectifier</a></font>';
    }

// Aucun champ n'est vide, on peut enregistrer dans la table
else     
    {
       // connexion à la base
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  

    mysql_select_db('loto',$db)  or die('Erreur de selection '.mysql_error());
    
    // on écrit la requête sql
    $sql = "UPDATE tbl_user SET no1='$un', no2='$deux', no3='$trois', no4='$quatre', no5='$cinq', no6='$six' WHERE login='$login'";
    
    // on édite les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on affiche le résultat pour le visiteur
    echo 'Merci pour votre tirage !<br> <a href=http://www.chezfredo.com>Aller sur ChezFredo</a><br>';

    mysql_close();  // on ferme la connexion
    } 
?> 

Merci de répondre.

Je te suggère d’affiche la requête sql avant de l’exécuter, le problème devrait alors être plus facile à déceler :slight_smile:

En toute logique, si php renomme un champ :

<input name="machin-foo" … />

en machin_foo, alors il ne doit pas supporter les index numériques :

<input name="0" … />

Et donc, ils ne sont jamais définis. Essaye un truc genre f0 ça marchera mieux.

Ensuite au lieu d’utiliser empty sur des variables déjà définies, utilise == ‘’ ($un == ‘’) et tu n’as pas besoin de mettre OR, un || classique suffira et tu n’auras pas de problèmes de priorité …