PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 07-07-2013 05:49:23

WeezyF
Membre
Inscription : 07-07-2013
Messages : 4

Requête UPDATE aucun résultat

Bonjour,
Je poste dans le forum car je bloque sur quelque chose de stupide où je ne trouve pas l'erreur.
Dans la page php que je suis en train de créer on peut modifier les champs d'une table dans une BDD MySQL hébergée sous free. Rien de bien extraordinaire.
Le principe est le suivant, une page qui afficher les données de la table dans un tableau html avec un bouton "modifier" pour chaque ligne si jamais on veut modifier un enregistrement de la table. Bref. Quand on clique sur le bouton, l'ID de la ligne à modifier en envoyer en GET.
Quand on appelle la page de modification, je récupère le paramètre URL en GET et je remplis préalablement les champs du formulaire avec les données dans la table.
J'ai déjà procédé de cette manière pour modifier d'autres tables et ça marche très bien.
Donc j'ai refait un copier/coller du code en adaptant les requêtes et tout ce qu'il fallait modifier.
Seulement cette fois-ci ça ne marche pas
Les champs sont bien remplis avec les données de la table donc le paramètre GET est bien récupéré. Mais quand on modifie un champs et qu'on clique sur le bouton, les données ne sont pas enregistrées dans la BDD et le header location ne fonctionne pas
J'en déduis donc que c'est ma requête UPDATE qui ne passe pas alors qu'elle est toute bête...
Vous trouverez sûrement très rapidement où ça bloque car ça ne doit pas être un gros problème...
Je vous poste le code de la page qui modifie:


<?php session_start();
if (!isset($_SESSION['email'])) {
   header ('Location: index.php');
   exit();
}
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
error_reporting(E_ALL);
 
    $id_tournee = (isset($_GET['tournee'])) ? (int)$_GET['tournee'] : 0;
 
    $base = mysql_connect ('sql.free.fr', '*******', '******');
    mysql_select_db ('*******', $base);
    $sql = 'SELECT Numero, Nb_pt_liv, Pickup, Nb_km, Chauffeur, Date_liv FROM tournee_tnt WHERE ID_TNT="'.$id_tournee.'"';
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data = mysql_fetch_array($req);          
    $numero = htmlentities($data['Numero'], ENT_QUOTES, 'UTF-8');
    $nbp = htmlentities($data['Nb_pt_liv'], ENT_QUOTES, 'UTF-8');
    $nbr = htmlentities($data['Pickup'], ENT_QUOTES, 'UTF-8');
    $nbk = htmlentities($data['Nb_km'], ENT_QUOTES, 'UTF-8');
    $chauffeur = htmlentities($data['Chauffeur'], ENT_QUOTES, 'UTF-8');
    $date_liv = htmlentities($data['Date_liv'], ENT_QUOTES, 'UTF-8');
echo "je suis au début ";
if (isset($_POST['modifier']) && $_POST['modifier'] == 'Modifier') {      
echo "je suis dans le modifier";      
    $new_numero = mysql_real_escape_string($_POST['numero']);
    $new_nbp = mysql_real_escape_string($_POST['nbp']);
    $new_nbr = mysql_real_escape_string($_POST['nbr']);
    $new_nbk = mysql_real_escape_string($_POST['nbk']);
    $new_chauffeur = mysql_real_escape_string($_POST['chauffeur']);
    $new_date_liv = mysql_real_escape_string($_POST['date_liv']);
     
echo "je suis à la fin de modifier";  
if (isset($_POST['numero']) AND $_POST['numero'] !== "")
    {
    echo "je suis dans numero";
     if (isset($_POST['nbp']) AND $_POST['nbp'] !== "")
       {
       echo "je suis dans nbp";
         if (isset($_POST['nbr']) AND $_POST['nbr'] !== "")
            {
            echo "je suis dans nbr";
             if (isset($_POST['nbk']) AND $_POST['nbk'] !== "")
                {
                echo "je suis dans nbk";
                 if (isset($_POST['chauffeur']) AND $_POST['chauffeur'] !== "")
                    {
                    echo "je suis dans chauffeur";
                     if (isset($_POST['date_liv']) AND $_POST['date_liv'] !== "")
                        {
                            echo "je suis dans date_liv ";
                            $base = mysql_connect ('sql.free.fr', '*******', '******');
                            mysql_select_db ('********', $base);
                            $sql ='UPDATE tournee_tnt SET
                            Numero ="'.$new_numero.'",
                            Nb_pt_liv ="'.$new_nbp.'",
                            Pickup ="'.$new_nbr.'",
                            Nb_km ="'.$new_nbk.'",
                            Chauffeur ="'.$new_chauffeur.'",
                            Date_liv ="'.$new_date_liv.'",
                            WHERE ID_TNT ="'.$id_tournee.'"';
                            $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());            
                        }
                    }
                }
            }
        }
header('Location: tnt.php');exit();
    }
}
?>
<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
        <title>Gestion des feuilles de route</title>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
    </head>
    <body>
        <div data-role="page">
            <div data-role="header">
                <a href="tnt.php" data-icon="back">Retour</a>
                <h1>Gestion des feuilles de route</h1>
            </div><!-- /Entete de la page -->
            <div data-role="content">
                <form action="modifier_tnt.php" method="post" id="modif_tnt">
                    <ul data-role="listview">
                        <li data-role="list-divider">Numéro de la tournée</li>
                            <li><input type="text" name="numero" id="numero" value="<?php echo $numero; ?>" /></li>
                        <li data-role="list-divider">Nombre de points</li>
                            <li><input type="text" name="nbp" id="nbp" value="<?php echo $nbp; ?>" /></li>
                        <li data-role="list-divider">Nombre de ramasses</li>
                            <li><input type="text" name="nbr" id="nbr" value="<?php echo $nbr; ?>" /></li>
                        <li data-role="list-divider">Nombre de kilomètres</li>
                            <li><input type="text" name="nbk" id="nbk" value="<?php echo $nbk; ?>" /></li>
                        <li data-role="list-divider">Chauffeur</li>
                            <li><input type="text" name="chauffeur" id="chauffeur" value="<?php echo $chauffeur; ?>" /></li>                          
                        <li data-role="list-divider">Date</li>
                            <li><input type="text" name="date_liv" id="date_liv" value="<?php echo $date_liv; ?>" /></li>
                        <p><label for="modifier"></label><input type="submit" name="modifier" id="modifier" value="Modifier" data-theme="b" /></p>                      
                    </ul>
                </form>
            </div>
            <div data-role="footer">
                <h4>&copy; Antony 2013</h4>
            </div><!-- /Pied de page -->
        </div>
        <?php
            if (isset($erreur)) echo '<br /><br />',$erreur;
        ?>
    </body>
</html>
 

J'ai placé des "écho" un peu partout entre mes "if" et en fait je ne rentre même pas dans le "if" qui détermine si j'ai bien appuyé sur le bouton modifier.

Donc j'ai regardé la syntaxe de mes noms et l'orthographe mais tout est identique. Donc je ne comprends pas pourquoi je ne rentre pas dans ce "if".

Merci beaucoup pour votre aide

Hors ligne

#2 08-07-2013 15:00:16

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Requête UPDATE aucun résultat

y a pas un problème de casse ??

AND ou and ???

essayes çà : &&


a++

Hors ligne

#3 15-07-2013 13:06:29

WeezyF
Membre
Inscription : 07-07-2013
Messages : 4

Re : Requête UPDATE aucun résultat

Bonjour,

je suis désolé de ne répondre que maintenant mais j'étais en vacance pendant une semaine, donc je ne pouvais donner suite à mon post.

J'ai essayé de remplacer les "AND" par "&&" mais ça ne change rien au problème.

Je n'arrive toujours pas à modifier mes champs.

Merci.

Hors ligne

#4 15-07-2013 18:01:16

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Requête UPDATE aucun résultat

Bonjour,

Vous devriez faire les choses dans l'ordre niveau vérification
1) test existence
2) test type
3) test contenu
4) si tout ok => affectation paramètres à des variables locales
5) filtrage/mise en forme des valeurs des variables locales.
6) traitement données à partir des variables locales précédemment créées et formatées.

++

Dernière modification par Jc (15-07-2013 18:02:18)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 16-07-2013 09:01:33

WeezyF
Membre
Inscription : 07-07-2013
Messages : 4

Re : Requête UPDATE aucun résultat

Bonjour,

Pour être honnête je n'ai pas la moindre idée de comment effectuer ces tests. Ce que je peux vous dire, c'est que mes variables contiennent les bonnes valeurs que ce soit les POST ou le GET.
La valeur du bouton Modifier est bien transmises et les données sont bien récupérées de la BDD.
Seulement je n'arrive pas à rentrer dans mes conditions.

Peut-être pourriez-vous m'éclairer sur les procédures à suivre avec un jargon moins formel ?:D

Hors ligne

#6 16-07-2013 17:58:44

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Requête UPDATE aucun résultat

Bonjour

WeezyF a écrit :

Peut-être pourriez-vous m'éclairer sur les procédures à suivre avec un jargon moins formel ?:D

Il n'y a aucun jargon là dedans, c'est juste exprimé en Français. Par contre je vous concède que c'est méthodique.

Donc pour vous mettre sur la voie

1) test existence => exemple : if (isset($_POST['email'])){ // traitement }
2) test type        => exemple :  if (isset($_POST['email']) && $_POST['email'] !=='' ){ // traitement }
3) test contenu   => exemple : if ($_POST['email']=='prenom@gmail.com'){ // traitement }
4) si tout ok => affectation paramètres à des variables locales  => exemple : $email=$_POST['email'];
5) filtrage/mise en forme des valeurs des variables locales. 
6) traitement données à partir des variables locales précédemment créées et formatées  => exemple : if ($email==='nom.prenom@gmail.com'){ // traitement }

Voilà pour l'essentiel.

++

Dernière modification par Jc (16-07-2013 17:59:27)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 19-07-2013 13:21:32

WeezyF
Membre
Inscription : 07-07-2013
Messages : 4

Re : Requête UPDATE aucun résultat

En regardant dans la doc' de jQueryMobile j'ai remarqué qu'il y avait un traitement différent pour les formulaires. Il semblerait que la méthode post ne fonctionne pas avec le chargement en AJAX des pages. Il faut que je désactive l'ajax.
Pour cela j'ai rajouté data-ajax="false".

Cela me permet maintenant d'avoir une page avec tous les echo et les messages d'erreur affichés.
J'ai eu une erreur affichée et j'ai pu la corriger. Donc maintenant tout fonctionne.

Merci à tous pour votre aide et votre temps passé à m'aider !

Hors ligne

#8 31-07-2013 20:10:57

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Requête UPDATE aucun résultat

Bonjour,

Pour information la directive E_ALL n'affiche pas toutes les erreurs, donc pas besoin de désactiver l'ajax pour les avoir toutes.
Quand à la question du chargement des pages sur jquery mobile qui ne fonctionne pas en POST, au premier abord, je trouve cela étonnant.

Bonne journée.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums