Requête SQL

Résolu
bakalai Messages postés 61 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 18 septembre 2010 - 28 janv. 2008 à 09:13
bakalai Messages postés 61 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 18 septembre 2010 - 28 janv. 2008 à 12:59
Bonjour,








Je solicite votre aide a tous.








Depuis 3 jours je cherche mon problème.je l'ai isolé mais je n'arrive pas a le resoudre.








Petit topo:








J'ai une page php qui se connecte sur une bdd avec une table (matable choisi dans une liste deroulante (d'ou la methode POST)) et une photo (photo





choisi dans une liste deroulante (d'ou la methode POST))





.








Mon prob:








Lors de ma requéte SQL

















mysql_query("SELECT * FROM ". htmlspecialchars($_POST['base']) ." WHERE photo=". htmlspecialchars($_POST['photo']) ."");








le FROM n'est pas reconnu.








Qui peut m'aider.









Je vous met mon code au complet:









<?php

mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de la base




mabase







        // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
        $base = mysql_real_escape_string(htmlspecialchars($_POST['matable']));
        $photo = mysql_real_escape_string(htmlspecialchars($_POST['photo']));






echo 'la photo selectionnée est la numéro:' . htmlspecialchars($_POST['photo']) .'

';

echo 'la tableselectionnée est la table:' . htmlspecialchars($_POST['matable']) .'

';








//affiche les infos de la photo selectionnée

$reponse = mysql_query("SELECT * FROM ". htmlspecialchars($_POST['base']) ." WHERE photo=". htmlspecialchars($_POST['photo']) ."");

// On fait une boucle pour lister tout ce que contient la table :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
 









//test d'affichage a suppr aprés.







Numéro de la photo : <?php echo $donnees['photo']; ?>

La description est: : <?php echo $donnees['description']; ?>

Les dimensions sont : <?php echo $donnees['dimension']; ?>









//fin des test affichage








 
<?php
}

?>





Merci
Benoît
@+

11 réponses

bakalai Messages postés 61 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 18 septembre 2010
28 janv. 2008 à 09:31
Re,

Oups erreur c'est:

$reponse = mysql_query("SELECT * FROM ". htmlspecialchars($_POST['matable']) ." WHERE photo=". htmlspecialchars($_POST['photo']) ."");
. et non pas htmlspecialchars($_POST['base'])







Benoît
@+
3
cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
28 janv. 2008 à 09:50
salut !

et avec des '' autour de tes variables ?

mysql_query("
    SELECT *
        FROM '". htmlspecialchars(addcslashes($_POST['matable'])) ."'
        WHERE photo = '". htmlspecialchars(addcslashes($_POST['photo'])) ."'
");

++
3
bakalai Messages postés 61 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 18 septembre 2010
28 janv. 2008 à 10:06
Re,
Merci de répondre aussi vite j'ai modifier comme ceci:
$reponse = mysql_query("
    SELECT *
        FROM '". htmlspecialchars(addcslashes($_POST['matable'])) ."'
        WHERE photo = '". htmlspecialchars(addcslashes($_POST['photo'])) ."'

");






// On fait une boucle pour lister tout ce que contient la table :
while ($donnees = mysql_fetch_array($reponse) )



Lors de l'affichage de ma page, il y a  trois ligne disant :
      -Wrong parameter count for addcslashes() pour les lignes en rouge
      -mysql_fetch_array(): supplied argument is not a valid MySQL result resource  pour la ligne  bleue

Merci
Benoît
@+
3
bakalai Messages postés 61 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 18 septembre 2010
28 janv. 2008 à 10:17
Re,
quand je fixe le FROM avec le nom d'une de mes tables comme ci dessous et en ecrivant le WHERE comme ci dessous le resultat obtenu est celui souhaité. seul pb: le FROM que je fixe hors celui ci dépend d'une variable

$reponse = mysql_query("
    SELECT *
        FROM collectioncs
        WHERE photo=". htmlspecialchars($_POST['photo']) .""
        );

// On fait une boucle pour lister tout ce que contient la table :
while ($donnees = mysql_fetch_array($reponse) )

Benoît
@+
3

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

Posez votre question
cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
28 janv. 2008 à 10:39
^^ faute de frappe

addslashes() et non addcslashes()

la doc : http://fr3.php.net/manual/fr/function.addslashes.php
3
bakalai Messages postés 61 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 18 septembre 2010
28 janv. 2008 à 10:52
Non non il n'y a pas de faute de frappe l'erreur retourenée est bien
addcslashes.pourtant je n'ai pas antislashe ni de slashedans mais chaine de carac ????




Benoît
@+
3
cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
28 janv. 2008 à 11:10
non,
la fonction a appliqué est addslshes() !

et ajoute error_reporting(E_ALL); pour afficher toutes les erreurs et print_r($_POST); pour voir les variables POST que tu recois

bref, faut débugger petit a petit :)

++
3
MasterCent Messages postés 83 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 14 décembre 2011 1
28 janv. 2008 à 11:21
Petite piste :

// travaille avec des variables du style
    $wherePhoto =

htmlspecialchars($_POST['photo']) ;
    $fromTable =

htmlspecialchars(addcslashes($_POST['matable'])) ;

//  controle debug
    echo ("mes variables valent 

$fromTable et

$wherePhoto" );





    $strSql =


" SELECT *
        FROM '


$fromTable'






        WHERE photo='

$wherePhoto'



);" ;

   echo ($sql ) ;
// ici : faire un copier coller du sql, et le tester en direct (phpmyadmin,...)

//si tout est en ordre : passer à la suite .



enjoy!
3
bakalai Messages postés 61 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 18 septembre 2010
28 janv. 2008 à 12:39
Merci à masterCent,

Ta proposition fonctionne: la requête SQL affichée est la bonne.mais j'ai toujours une erreur sur :

mysql_fetch_array($reponse).





La voici:






Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource



Je remet le code modifier:






        // On utilise les fonctions htmlspecialchars
        $fromTable = (htmlspecialchars($_POST['base']));
        $wherePhoto = (htmlspecialchars($_POST['photo']));
//  controle debug
    echo ("mes variables valent  $fromTable et $wherePhoto" );

    $strSql =    " SELECT *
        FROM ' $fromTable'
        WHERE photo='$wherePhoto';" ;
        ?>
       

        <?php
   echo "ma var strSql vaut:$strSql";

                                    //stock les infos de la photo selectionnée
                                    $reponse = mysql_query ($strSql);
                                   
                                    // On fait une boucle pour lister tout ce que contient la table :
                                    while ($donnees = mysql_fetch_array($reponse) )
{
?>
 

Numéro de la photo : <?php echo $donnees['photo']; ?>

La description est: : <?php echo $donnees['description']; ?>

Les dimensions sont : <?php echo $donnees['dimension']; ?>







 
<?php
}

?>





Merci





Benoît
3
bakalai Messages postés 61 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 18 septembre 2010
28 janv. 2008 à 12:43
Re,
Je n'avais pas compris comme ceci désolé je suis debutant en php et en Sql tous juste un mois d'essai perso sans aucune formation chaud time et je me suis embarqué dans un truc....





Mais je n'aime pas abandonner.
Je vais tester

Benoît
@+
3
bakalai Messages postés 61 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 18 septembre 2010
28 janv. 2008 à 12:59
C'est bon pour tout,




Merci a tous les deux aprés avoir debugeé le tout ; ilrester une erreur sur la construction de la requête dans le FROM pas besoins des quotes: '




Un grand merci a vous deux et peut être @+



Benoît
@+
3
Rejoignez-nous