IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème requete where


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut Problème requete where
    Bonjour,
    Heu voilà j'ai un petit soucis, j'arrive à me connecter à une base de donnée Access. Donc avec la requête en commentaire ça marche et je récupère tout le contenu. Mais lorsque je veux mettre une condition ça ne marche pas. Et j'ai testé une fois avec l'étoile * et une fois avec le pourcentage %. Et à chaque fois j'ai l'erreur :
    "Warning: odbc_fetch_row() [function.odbc-fetch-row]: No tuples available at this result index in ...".
    Es ce qu'il y a un soucis dans mon code ou j'ai raté un épisode?

    Alors dans odbc.ini j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [baseGendoc]
    Description = Base Access
    Driver = MicrosoftAccessDriverODBC
    Database = /var/www/gendoc/gendoc.mdb
    Dans odbcinst.ini j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [MicrosoftAccessDriverODBC]
    Description = Microsoft Access Driver ODBC
    Driver = /usr/lib/libmdbodbc.so.0
    Setup = /usr/lib/libmdbodbc.so.0
    Et dans mon code j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $connect = odbc_pconnect("baseGendoc", "user", "password");
     
     
    $doc = "SELECT * FROM CHANTIERS where CHANTIERS.CODE_CH like '*".$num."*';";
                    // $doc = 'SELECT * FROM CHANTIERS';
                    echo $doc."<br />";
                    $doc_res = odbc_exec($connect, $doc);
     
                    while($row=odbc_fetch_row ($doc_res))
                    {
                            echo "res : ".$row->CODE_CH."<br />";
                    }
    Voilà je vénérerais tel un dieu celui qui saura me redonner la lumière
    Merci :-)

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Un peu de recherche :
    http://www.developpez.net/forums/d84...-result-index/

    Au passage tu confonds fetch_object et fetch_row.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Oui oui j'ai déjà vu ca, mais que je fasse object ou row ca ne change rien je n'ai aucune donnée qui s'affiche...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que tu as suivi le lien que je t'ai indiqué ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    oui oui bien sur j'étais déjà tombé dessus plusieurs fois.
    Je m'y remettrait dessus une fois au boulot demain matin là je suis quelque peu... éreinté ^^'

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Bon je suis au boulot là, j'ai repris mon code et j'ai bien suivi ton lien de A à Z, et je ne vois absolument aucune erreur.
    Donc je ne voit pas, voilà le code que j'ai(après avoir repris le lien)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $connect = odbc_pconnect("baseGendoc", "user", "pass");
     
    $sql = "SELECT * FROM CHANTIERS where CHANTIERS.CODE_CH like '*".$num."*';";
    //exécution de la requête:
    $requete = odbc_do($connect, $sql) or die (odbc_error());
     
    //affichage des données:
    while($result = odbc_fetch_object($requete))
    {
    	//exemple d'une donnée affichée
    	$result->CODE_CH;
    }
    et.. toujours cette fameuse erreur.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que tu as affiché ta requête ? est-ce que la requête affichée fonctionne dans Access ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    quand tu fais var_dump($sql); ca donne quoi ?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Alors oui je teste la requête qui fonctionne très bien sous Access sans aucun soucis.
    Et le var dump que je fait donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var dump : string(60) "SELECT * FROM CHANTIERS where CHANTIERS.CODE_CH like '*04*';"
    Est ce que le fait que le fichier *.mdb soit issue de office 97 ait une incidence?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Bon bah voilà j'ai trouvé. En fait le pilote ODBC que j'ai ne prend pas en charge les requêtes "évoluées" juste les requetes "select" mais dès qu'il y a un where ca ne fonctionne pas pour ma BDD créée avec Access97.

    Donc si quelqu'un a une solution pour changer le pilote ou pour se connecter et faire toute sortes de requêtes sur un fichier aussi "ancien" je suis preneur ^^

    Edit : Bon j'ai trouvé grace à ce site une "parade". Comme on peut faire la simple requete et récupérer tout le contenu d'une table, il suffit de placer ce contenu dans un tableau et l'utiliser ensuite pour ce dont on a besoin.
    Je vais donc creuser en ce sens pour voir comment je peux m'en sortir.

    Quoiqu'il en soit, je remercie les personnes qui sont venus tenter de m'aider

  11. #11
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    de mémoire dans ODBC le jocker c'est un %. Est-ce que je me trompe ou ça dépend du pilote?
    autre chose, le oode est stocké dans une chaine de caractère?
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Oui oui dans ODBC c'est bien % qui est le caractère "jocker" ^^
    Par contre le oode je connais pas j'ai jamais vu ca :s

    Sinon j'ai réussi à mettre le contenu d'une table de ma BDD dans un tableau php. Par contre je n'arrive pas à afficher une seule ligne en fonction d'une valeur.

    Voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    foreach($chantiers as $cle => $valeur) 
    {
    	$position = array_search('01020100', $valeur);
     
    	if(empty($position))
    		echo "voilà position : ".$position."<br />";
    	else
    		echo "vide";
    }
    Je m'explique. Je cherche à trouver une ligne afin de trouver toute les données de cette ligne.
    Mais pour trouver la bonne il faut saisir un numéro de devis le '01020100'.
    Donc je parcours le tableau ligne par ligne pour trouver le bon numéro de devis.

    Pour info le tableau est créé de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    while(odbc_fetch_row($doc_res))
        {
    		$var = odbc_result( $doc_res, "CODE_CH");
            $var2 = odbc_result( $doc_res, "LIB_CH");
            $var3 = odbc_result( $doc_res, "NCDE_CH");
            $var4 = odbc_result( $doc_res, "CCLI_CH");
            $var5 = odbc_result( $doc_res, "NCLI_CH");
            $var6 = odbc_result( $doc_res, "chem_imp_ch");
            $var7 = odbc_result( $doc_res, "imprime");
            $var8 = odbc_result( $doc_res, "ladate");
     
    		$chantiers[$i] = array($var, $var2, $var3, $var4, $var5, $var6, $var7, $var8);
     
    		$i++;
        }
    Mais impossible de faire une différence entre une position qui ne donne rien, et une position qui donne un chiffre.
    J'ai un affichage qui donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    voilà position :
    voilà position :
    voilà position :
    voilà position :
    voilà position :
    voilà position :
    voilà position :
    voilà position : 0
    voilà position :
    voilà position :
    voilà position :
    voilà position :
    Et j'aimerais simplement garder la ligne avec le 0 et connaitre son indice sur le tableau principal ^^ pour pouvoir ensuite récupérer toute les valeurs de la ligne

Discussions similaires

  1. [HQL] probléme requete HQL avec clause where in
    Par titawine dans le forum Hibernate
    Réponses: 3
    Dernier message: 16/05/2012, 10h02
  2. problème requete : DELETE pr0 WHERE num1 in(select ..
    Par pierre.egaud dans le forum Oracle
    Réponses: 10
    Dernier message: 21/11/2006, 11h34
  3. problème requete sql
    Par Fred- dans le forum ASP
    Réponses: 2
    Dernier message: 13/06/2004, 02h20
  4. Problème clause WHERE
    Par nesbla dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/06/2004, 15h07
  5. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo