Requete SQL qui marche pas en PHP

Résolu
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020 - 17 juin 2009 à 11:02
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020 - 19 juin 2009 à 08:48
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

6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020
17 juin 2009 à 15:47
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
3
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020
18 juin 2009 à 08:56
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();
?>
3
citt Messages postés 209 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 9 février 2012 3
17 juin 2009 à 14:16
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
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
17 juin 2009 à 18:16
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 -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
17 juin 2009 à 18:18
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 -
0
citt Messages postés 209 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 9 février 2012 3
17 juin 2009 à 20:25
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
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
18 juin 2009 à 16:18
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 -
0
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020
19 juin 2009 à 08:48
c noter merci
0
Rejoignez-nous