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

Langage PHP Discussion :

Adaptation script mySql vers Firebird // Datatable plugin // Erreurs


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut Adaptation script mySql vers Firebird // Datatable plugin // Erreurs
    Bonjour à tous,

    J'utilise le plugin jQuery Datatable, or les exemples sont sous mySql & pour ma part, je tiens à utiliser Firebird. Je me lance donc dans l'adaptation du script des différents exemples pour les faire fonctionner sous Firebird, mais je rencontre quelques erreurs.

    Voilà ou j'en suis :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <?php
    	require '_inc_config.php';
    
    	define("DBNAME", "PATH");
    	define("DBUSER", "USER");
    	define("DBPASS", "MDP");
    	
    	$dbh = ibase_connect(DBNAME, DBUSER, DBPASS) or die(_ERROR15.": ".ibase_errmsg());
    	
    	
    	/* Paging */
    	$sLimit = "";
    	if (isset($_POST['iDisplayStart'])) {
    		settype($iDislayStart, 'integer');
    		$iDisplayStart = $_POST['iDisplayStart'];
    		$iDisplayLength = $_POST['iDisplayLength'];
    		$sLimit = sprintf(" FIRST ".$iDisplayStart." SKIP ".$iDisplayLength);
    	}
    	
    	/* Ordering */
    	$sOrder = "";
    	$sOrder = " ORDER BY AC_DATE_PREVU ";
    	
    	/* Filtering */
    	$sWhere = "";
    	if (isset($_POST['sSearch']) != "") {
    		$sWhere = " WHERE (AC_NOM_ACTION LIKE ''%".$_POST['sSearch']."%'') ";
    	}
    	
    	$sQuery = "SELECT r.AC_DATE_PREVU as AC_DATE_PREVU, r.AC_NOM_ACTION as AC_NOM_ACTION, r.AC_DETAIL as AC_DETAIL, r.AC_DATEFIN as AC_DATEFIN, (select lta_nom from listetypeaction where lta_code = r.AC_TYPEACTION) as AC_TYPEACTION, (select v_nom from vendeur where v_code = r.AC_CODEINTERLOCUTEUR_DEST) as AC_UTILISATEUR_DEST, r.AC_CODECONTACT as AC_CODECONTACT from ACTIONS r".$sWhere.$sOrder.$sLimit.";";
    	
    	$rResult = ibase_query($sQuery);
    	$sQuery = "SELECT FOUND_ROWS() from ACTIONS;";
    	$rResultFilterTotal = ibase_query($sQuery); // 34
    	
    	
    	$sQuery = "SELECT COUNT(*) as DCOUNT from ACTIONS".$sWhere.$sLimit.";";
    	
    	
    	$aResultFilterTotal = ibase_fetch_assoc($rResultFilterTotal); // 40 
    	$iFilteredTotal = $aResultFilterTotal['DCOUNT'];
    	
    	
    	$rResultTotal = ibase_query($sQuery);
    	$aResultTotal = ibase_fetch_assoc($rResultTotal);
    	$iTotal = $aResultTotal[0]; // 46
    	
    	$sOutput = '{';
    //	$sOutput .= '"sEcho": '.intval($_POST['sEcho']).',';
    	$sOutput .= '"iTotalRecords": '.$iTotal.', ';
    	$sOutput .= '"aaData": [ ';
    	while ($aRow = ibase_fetch_array($rResult)) { // 52
    		$sOutput .= "[";
    		$sOutput .= '"'.addslashes($aRow['AC_NOM_ACTION']).'",';
    		$sOutput .= '"'.addslashes($aRow['AC_TYPEACTION']).'",';
    		$sOutput .= '"'.addslashes($aRow['AC_UTILISATEUR_DEST']).'",';
    		$sOutput .= '"'.addslashes($aRow['AC_DATE_PREVU']).'",';
    		$sOutput .= '"'.addslashes($aRow['AC_DETAIL']).'",';
    		$sOutput .= "],";
    	}
    	$sOutput = substr_replace($sOutput, "", -1);
    	$sOutput .= '] }';
    	
    	echo $sOutput;
    	function fnColumnToField( $i )
            {
                    if ( $i == 0 )
                            return "AC_NOM_ACTION";
                    else if ( $i == 1 )
                            return "AC_TYPEACTION";
                    else if ( $i == 2 )
                            return "AC_UTILISATEUR_DEST";
                    else if ( $i == 3 )
                            return "AC_DATE_PREVU";
                    else if ( $i == 4 )
                            return "AC_DETAIL";
            }
    		ibase_free_result($aResultTotal);
    ?>
    Je me retrouve actuellement avec les différentes erreurs :

    Warning: ibase_query(): Dynamic SQL Error SQL error code = -804 Function unknown FOUND_ROWS in C:\wamp\testServerSide.php on line 34

    Warning: ibase_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamptestServerSide.php on line 40

    Notice: Undefined offset: 0 in C:\wamp\testServerSide.php on line 46

    Fatal error: Call to undefined function ibase_fetch_array() in C:\wamp\testServerSide.php on line 52
    Les Paths de WAMP sont changés, donc pas d'inquiétude si ça vous saute aux yeux

    J'ai noté les différentes lignes auxquelles il y à des erreurs pour que vous puissiez cerner plus rapidement.

    Pour finir, je me suis inspiré de ce seul et unique post que j'ai pu trouver, relatant DataTable et Firebird : http://forums.devshed.com/firebird-s...pt-765055.html

    EDIT : Le script original sous Mysql : https://datatables.net/development/s...side/php_mysql

    Merci à toute aide pouvant être apportée !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 21
    Par défaut
    Citation Envoyé par magicarpe44 Voir le message
    Bonjour à tous,
    je tiens à utiliser Firebird
    Utiliser Firebird avec PHP, c'est pas ce qu'il y a de plus facile
    Quelle version de Firebird, 2.5 ?

    Citation Envoyé par magicarpe44 Voir le message
    Warning: ibase_query(): Dynamic SQL Error SQL error code = -804 Function unknown FOUND_ROWS in C:\wamp\testServerSide.php on line 34
    La fonction n'existe pas sous Firebird, utilise une fonction SQL à la place

    Citation Envoyé par magicarpe44 Voir le message
    Warning: ibase_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamptestServerSide.php on line 40
    Est-ce que la requête retourne un ensemble de ligne ou est égale à Null ?

    Voici la fonction dont on se sert pour FireBird 2.2, p'être que tu peux en tirer quelque chose

    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
    public function query($sql,$param=NULL) {
            if ($param==NULL) {
                $sth = ibase_query($this->db, $sql);
            } else {
                $p = ibase_prepare($this->db,$sql);
                $sth=ibase_execute ($p, $param);
            }
            $rows=array();
            while ($obj = ibase_fetch_object($sth)) {
                $row=array();
                foreach($obj as $key => $value) {
                    $row[$key]=str_replace('&',' ',$value);
                }
                $rows[]=$row;
            }
            ibase_free_result($sth);
     
            return $rows;
        }

  3. #3
    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
    L'erreur est claire : FOUND_ROWS() n'existe pas avec Firebird.
    Tu dois faire un requête avec COUNT()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    Merci à vous pour vos réponses !

    Utiliser Firebird avec PHP, c'est pas ce qu'il y a de plus facile
    En effet, à la base, ça a été décider pour être utiliser avec une version de Delphi. Je m'adapte donc (étant tout jeune dans l'entreprise, pas mon mot à dire )

    Quelle version de Firebird, 2.5 ?
    Yép, tout à fait !

    @Fobec Merci pour la fonction, je vais prendre le temps de regarder et tester le tout.

    @sabotage Merci également, j'ai trouvé cette réponse un peu après. Néanmoins, l'adaptation du script reste assez approximative et désormais, j'ai perdu la pagination, la fonction de recherche et de sortable (en français, j'avais pas le mot) en cliquant sur les colonnes, donc du boulot encore...

    Merci à vous deux, je reviens si jamais problème il y a,

    Stay tunes ! (paix, amour et chocolat )

  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    C'est tout bon pour moi ! *-*

    Un nouveau petit problème vient, je me permet de le poser ici plutôt que d'en faire une autre discussion :

    Je reçois du JSON avec certaines données.
    Le problème étant, c'est qu'à des moments, je reçois des données du type :

    (du json)
    ["Salut a tous "maintenant je mets des guillemets"", "", ""],
    (du json)

    Le problème, comme vous l'auriez deviner, c'est qu'il interprète les guillemets comme étant la fin de la donnée, et du coup après, il est perdu le coco...

    De quelle manière je peux gérer les guillemets à l'intérieur de mes données? :/

    Bon weekend à tous !

Discussions similaires

  1. convertir un script oracle vers mysql
    Par alex61 dans le forum MySQL
    Réponses: 4
    Dernier message: 21/05/2015, 23h46
  2. conversion mysql vers firebird
    Par looping dans le forum Outils
    Réponses: 1
    Dernier message: 22/02/2012, 20h12
  3. adapter un script php avec mysql pour firebird
    Par omar24 dans le forum Firebird
    Réponses: 1
    Dernier message: 04/03/2011, 13h48
  4. [EJB3 Entity] Migration MySQL vers Firebird
    Par Mister Nono dans le forum Java EE
    Réponses: 0
    Dernier message: 23/12/2008, 19h51
  5. [MYSQL ver. 4.1.18] Erreur de requête
    Par M1000 dans le forum Requêtes
    Réponses: 1
    Dernier message: 28/04/2006, 12h06

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