Requete SQL qui marche pas en PHP [Résolu]

Signaler
Messages postés
51
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
7 février 2020
-
Messages postés
51
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
7 février 2020
-
Bonjour,

Alors j'ai un problème avec une requête SQL,
au premier chargement de ma page la requête est exécuter correctement mais quand je la recharge,
la requête n'est pas bien exécuter.

Ce que dois faire ma page :
- se connecter a la database et afficher sous forme de tableau les informations lu.
- devant chaque ligne, il y a un boutton qui permet de recharger la meme page en supprimant la ligne.

Il y a 2 requete SQL distincte :
une requete pour laffichage executer au deux chargement de la page
une requete de suppression appeler uniquementy si l'utilisateur a cliquer sur le bouton
 
Problème rencontré
apres avoir fait une suppression, la requete d'affichage ne marche pas, mon programme me retourne "ERREUR REQUETE : SELECT * FROM matable;"

Merci de votre aide
Xavier

Code de la page
<?php
    session_start();
    include_once('admin.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <link rel="stylesheet" href="style.css" type="text/css">
        <title>ADMINISTRATION</title>
    </head>
   
   
        <?php
            if(isset($_SESSION['pass']))
            {
                if($_SESSION['pass'] == $mdp)
                {
        ?>           
                   

                       
                            <li>[affichage.php Afficher]</li>
                            <li>[ajout.php Ajouter]</li>
                            <li>[modification.php Modifier]</li>
                           
                       
                   

                   

                       
                   

                   

        <?php
                        if(isset($_POST['supress']))
                        {
                            include_once('open_database.php');                            $query1 'DELETE FROM '.$NomTable.' WHERE rang '.$_POST['supress'].';';
                            $result1 = mysql_query($query1);
                            if (!$result1)
                            {
                                echo "ERREUR REQUETE : ".$query1;
                            }
                            else
                            {   
                                echo'ENTREGISTREMENT N° '.$_POST['supress'].' SUPPRIME';
                            }
                            mysql_free_result($result1);
                            include_once('close_database.php');   
                        }
        ?>
                   

                   

                                <?php
                            include_once('open_database.php');
                            $query = 'SELECT * FROM '.$NomTable.';';
                            $result = mysql_query($query);
                            if (!$result)
                            {
                                echo \"ERREUR REQUETE : \".$query;
                            }
                            else
                            {   
                                while ($row = mysql_fetch_assoc($result))
                                {
                                    echo'----
';
                                       
                                        echo'<form method="post" action="supression.php">

</form>, ';
                                        echo''.$row["id"].', ';
                                        echo''.$row["zip"].', ';
                                        echo''.$row["ville"].', ';
                                        echo''.$row["enseigne"].', ';
                                        echo''.$row["adresse"].', ';
                                        echo''.$row["tel"].', ';
                                        echo''.$row["swim_center"].', ';
                                        echo', ';
                                    echo'';
                                }           
                            }
                            mysql_free_result($result);
                            include_once('close_database.php');           
        ?>
                       

                   

        <?php       
                }
                else
                {
                    echo'SESSION INCORRECTE
';
                    echo'IDENTIFIEZ-VOUS [index.php ICI]
';
                }
            }
            else
            {
        ?>
               

                   
                    <form method="post" action="index.php">
                       
                       

                       
                    </form>
               

        <?php
            }
        ?>
   
</html>

8 réponses

Messages postés
51
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
7 février 2020

L'erreur provient du "include_once" qui comme son nom l'indique n'inclue qu'une seule fois.

Le second "include_once('open_database.php');" n'est pas appeler
donc la database n'est pas ouverte au moment de la requete
d'où l'erreur
Messages postés
51
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
7 février 2020

Alors, pour être puriste,
la vraie réponse au problème est :
il faut sortir les include_once des conditions et les laisser unitaire.
Soit "include_once('open_database.php');" en début de code et "include_once('close_database.php');" en fin de code.

Ce qui me fait dire que la database est pas ouverte ? j'ai changer mon code comme cité ci-dessus et tout fonctionne comme je le voulais.

Merci pour cette partie de code en tout cas
"echo "ERREUR REQUETE : ".$query."
".mysql_error();"
Je la trouve plus parlante quand l'erreur aparait.

Merci pour vos reponses

Xavier

OPEN_DATABASE
<?php
    $serveur = mysql_connect($Host, $User, $PassWord);
    if ($serveur)
    {
        $db = mysql_select_db($NomBase, $serveur);
        if (!$db)
        {
            die ('Impossible d\'utiliser la base : ' . mysql_error());
        }
    }
    else
    {
        die('Non connecté : ' . mysql_error());
    }
?>

CLOSE_DATABASE
<?php
    mysql_close();
?>
Messages postés
209
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
9 février 2012
3
Remarque 1 :
n'utilise qu'une fois tes includes dans tous les cas tu va faire du SQL donc ca ne sert à rien des les loader deux fois lors de la suppression

D'ou viens $NomTable ??
a tu essayé de passer plutot en GET l'id à del ?

Citt_jr
Bats toi avec les meilleurs, crève avec le reste

http://www.tsubara.net
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

Tout d'abord ne valide pas une réponse si elle ne résous pas ton pb. Dans le cas contraire peu de personnes vont lire ton post.
Peut on connaitre le contenu de close_database.php et open_database.php ?

L'erreur provient du "include_once" qui comme son nom l'indique n'inclue qu'une seule fois.
=>
Ca n'empêche que Cltt a raison, ça ne sert à rien de les mettre

Bon, je n'ai que parcouru le code, commence par remplacer :
echo "ERREUR REQUETE : ".$query;
=>
echo "ERREUR REQUETE : ".$query."
".mysql_error();

Quel est le message d'erreur affiché ?

Cordialement,

Kohntark -
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Le second "include_once('open_database.php');" n'est pas appeler
donc la database n'est pas ouverte au moment de la requete
d'où l'erreur

=>
qu'est ce qui te fait dire ça ?

Kohntark -
Messages postés
209
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
9 février 2012
3
Il est vrai que sans le code des includes on ne peut pas trop se pronostiquer !!

Citt_jr
Bats toi avec les meilleurs, crève avec le reste

http://www.tsubara.net
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
A voir le contenu des 2 fichiers c'est bien normal.
en réalité ton deuxième open_database ainsi que le deuxième close_database ne sont jamais appelé lorsque $_POST['supress'] existe. Ainsi la requête $query = 'SELECT * FROM '.$NomTable.';'; ne peut être exécutée.

2 petites remarques :
Sauf à travailler avec plusieurs serveurs de base de données mysql_close, et donc close_database, ne sert à rien, la connexion étant fermée automatiquement à la fin du script.
mysql_error() ne doit être présent que pour le débogguage sinon gard aux problèmes de sécurité !! En parlant de sécurité renseigne toi également sur mysql_real_escape_string, car en l'état actuel il est très simple de faire de l'injection et effacer totalement ta base de données.

Cordialement,

Kohntark -
Messages postés
51
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
7 février 2020

c noter merci