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 :

Passage en Mysqli [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Par défaut Passage en Mysqli
    Bonjour,

    J'ai un site ( site sportif) développé sous Joomla 2.5 je décide de le migrer en 3.4 et du même coup utilisé MySQLi
    tout fonctionne bien en local sous Wamp : php 5.5.12 et Mysql 5.6.17

    Je viens de migrer chez mon hébergeur (Infomaniak) patatras cela ne fonctionne plus
    PHP 5.3 et Mysql 5.0

    Ma requête concerne les compétions dans une année donnée
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
    print " <!-- affichage du fond et de l'encadrement --><div class='cadre'>
    <!--cadre avec bords arrondis --><div class='hautdroit'></div><div class='hautgauche'></div>";
     
    $anneecompet1 = $_GET['annee1'];
    $anneecompet2 = $_GET['annee2'];
    $anneecompet = "$anneecompet1 - $anneecompet2";
    $rien = "";
     
    #affichage de l'en tête
    print "
    <div class='resultats'>Résultats des Championnats et des Matchs</div>
    <div class='resultats'>à la Ligue de Tir de Picardie</div>
    <div class='resultats'>pour la saison $anneecompet</div><br><div class='interligne'></div>";
     
    $bdd = mysqli_connect("xxxxxxx", "xxxxxx", "xxxxxx", "xxxxxxxx");
    /* Vérification de la connexion */
    if (mysqli_connect_errno()) {
        printf("Échec de la connexion : %s\n", mysqli_connect_error());
        exit();
    }
     if (!$bdd->set_charset("utf8")) {} else {}
     
    print " <div class='championnat'>Championnats</div>";
    $typecompetition="SELECT DISTINCT
        info_championnats.nom_type as nom_type,
        info_championnats.id_type_chpt as id_type_chpt,
        info_compet.id_type as id_type
        FROM info_championnats,info_compet
        WHERE annee = $anneecompet1
        AND info_championnats.id_type_chpt=info_compet.id_type";
     
    #recherche et affichage des annees
        $resultcompet=mysqli_query($bdd,'$typecompetition AND info_championnats.id_type_chpt != 21
        AND info_championnats.id_type_chpt != 22
        AND info_championnats.id_type_chpt != 23
        AND info_championnats.id_type_chpt != 24
        AND info_championnats.id_type_chpt != 25
        AND info_championnats.id_type_chpt != 26
        AND info_championnats.id_type_chpt != 27
        AND info_championnats.id_type_chpt != 28
        AND info_championnats.id_type_chpt != 40
        AND info_championnats.id_type_chpt != 41
        AND info_championnats.id_type_chpt != 42
        AND info_championnats.id_type_chpt != 43
        ORDER BY id_type=17,id_type=18,id_type=14,id_type=13,id_type=10,id_type=9,id_type=8,id_type=16,id_type=15,id_type=12,id_type=19,id_type=11,id_type=7,id_type=6,id_type=3,id_type=2,id_type=1,id_type=20') or die("Erreur dans l'extraction des informations<br>");
            while ($row = mysqli_fetch_array($resultcompet)) {
                $anneetypecompet=$row["nom_type"];
                $idanneetypecompet=$row["id_type_chpt"];           
     
    print " <div class='archivesnavigation'>
        <a href='index.php?option=com_content&amp;view=article&amp;id=25&amp;catid=11&amp;nom_type=$anneetypecompet&amp;id_type_chpt=$idanneetypecompet&amp;annee1=$anneecompet1&amp;annee2=$anneecompet2' class='annee'>$anneetypecompet</a>
        </div>";
            }
    print "
    <!-- Fin cadre avec bords arrondis et du fond --><div class='basdroit'></div><div class='basgauche'></div></div>";
    ?>
    Si je mets ce code chez mon hébergeur en modifiant bien sur les codes d'accès, je n'ai aucun résultat qui s'affiche
    et comme erreur j'ai maintenant
    Erreur dans l'extraction des informations
    Je précise que je me connecte bien à la Base de données

    Je ne vois pas ce qui se passe tout fonctionne bien en local et là plus rien - La version de Mysql en 5.0 est trop faible, en fait mon script initial est faux ?????

    D'avance merci pour votre aide

    Jean-Michel

  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
    Par défaut
    Ca me parait assez evident mais affiche la vraie erreur mysqli au lieu de ton message à toi.

    Sinon je ne sais pas si tu concours pour la requête la plus longue du monde mais au moins :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    AND info_championnats.id_type_chpt NOT IN (21,22,23,24,25,26,27,28,40,41,42,43)
    Et pour ton order by
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY id_type=17,id_type=18,id_type=14,id_type=13,id_type=10,id_type=9,id_type=8
    ça fonctionne vraiment ?

    Ces deux aspects devraient de toute façon être traités dans la base de données avec une colonne d'ordre et de colonne de catégorie pour tes types.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Ca me parait assez evident mais affiche la vraie erreur mysqli au lieu de ton message à toi.
    Merci beaucoup pour ta réponse
    Oui effectivement cela allège considérablement la requête

    j'ai donc modifié le script :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    $typecompetition="SELECT DISTINCT
        info_championnats.nom_type as nom_type,
        info_championnats.id_type_chpt as id_type_chpt,
        info_compet.id_type as id_type
        FROM info_championnats,info_compet
        WHERE annee = $anneecompet1
        AND info_championnats.id_type_chpt=info_compet.id_type";
     
     #recherche et affichage des annees
        $resultcompet=mysqli_query($bdd, "$typecompetition AND info_championnats.id_type_chpt NOT IN (21,22,23,24,25,26,27,28,40,41,42,43)
       ORDER BY id_type=17,id_type=18,id_type=14,id_type=13,id_type=10,id_type=9,id_type=8" ) or die("Erreur dans l'extraction des informations<br>");
     
    print("<pre>");
        print_r($resultcompet);
        print("</pre>");
     
         while ($row = mysqli_fetch_array($resultcompet)) {
                $anneetypecompet=$row["nom_type"];
                $idanneetypecompet=$row["id_type_chpt"];       
     
    print " <div class='archivesnavigation'>
        <a href='index.php?option=com_content&amp;view=article&amp;id=25&amp;catid=11&amp;nom_type=$anneetypecompet&amp;id_type_chpt=$idanneetypecompet&amp;annee1=$anneecompet1&amp;annee2=$anneecompet2' class='annee'>$anneetypecompet</a>
        </div>";
            }
    Cela ne fonctionne pas encore mais avec l'affichage de $resultcompet, j'ai ce retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mysqli_result Object
    (
        [current_field] => 0
        [field_count] => 3
        [lengths] => 
        [num_rows] => 0
        [type] => 0
    avec [num_rows] => 0 il devrait être à 4

    Je ne comprends pas quand tu dis
    affiche la vraie erreur mysqli au lieu de ton message à toi
    Merci pour ton aide

    Jean-Michel

  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
    Par défaut
    Surprise :
    http://php.net/manual/fr/mysqli.error.php

    Et pour le order by, il fonctionne vraiment ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Par défaut
    [QUOTE=Et pour le order by, il fonctionne vraiment ?[/QUOTE]

    En tous cas en local cela fonctionne

    J'ai été faire un petit tour sur http://php.net/manual/fr/mysqli.error.php
    j'ai donc inclus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ($result = mysqli_query($bdd, "SELECT DISTINCT info_championnats.nom_type as nom_type, info_championnats.id_type_chpt as id_type_chpt, info_compet.id_type as id_type FROM info_championnats,info_compet  WHERE annee = $anneecompet1 AND info_championnats.id_type_chpt=info_compet.id_type")) {
     
    /* Détermine le nombre de lignes du jeu de résultats */  $row_cnt = mysqli_num_rows($result);
     
    printf("Le jeu de résultats a %d lignes.\n", $row_cnt);
     
     /* Ferme le jeu de résultats */    mysqli_free_result($result);}
    et la réponse est : "Le jeu de résultats a 0 lignes. "
    Cela veut donc dire que ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $typecompetition="SELECT DISTINCT
        info_championnats.nom_type as nom_type,
        info_championnats.id_type_chpt as id_type_chpt,
        info_compet.id_type as id_type
        FROM info_championnats,info_compet
        WHERE annee = $anneecompet1
        AND info_championnats.id_type_chpt=info_compet.id_type";
    n'est pas bonne

    En tout cas merci pour ton aide, je suis là dessus depuis ce matin, je reprendrais demain mais si tu as une idée je suis preneur.

    Jean-Michel

  6. #6
    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
    Par défaut
    En allant sur la doc de mysql_error() tu as trouvé du code avec mysqli_num_rows() toi ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passage mysql vers mysqli - mysqli_result
    Par Fredo8 dans le forum MySQL
    Réponses: 0
    Dernier message: 23/04/2015, 09h38
  2. [PHP 5.4] passage entre mysqli et mysql
    Par aspkiddy dans le forum Langage
    Réponses: 7
    Dernier message: 09/12/2014, 07h40
  3. [MySQL] passage à mysqli un peu délicat
    Par lesarbres dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/11/2014, 18h37
  4. [MySQLi] Passage d'un code de l'ext. mysql à mysqli
    Par santiago_cw dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/01/2007, 03h19
  5. Passage de parametre a une anim Flash 5
    Par debug dans le forum Intégration
    Réponses: 4
    Dernier message: 03/06/2002, 17h59

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