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

Firebird Discussion :

verification requete firebird


Sujet :

Firebird

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 13
    Points : 17
    Points
    17
    Par défaut verification requete firebird
    Bonjour à tous,
    J'ai réalisé un formulaire et je dois le valider afin de modifier la base de données Firebird (ex: nom date de naissance...)
    Pour celà je fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    if(isset($_POST['valider']))
    	{
     
    	$sql = "UPDATE infos2  SET infos2.IDENTIFIANT=".$_POST['cidentifiant']." WHERE infos.ID=".$_GET['id'];
     
            //	$sql = "UPDATE infos2  SET infos2.IDENTIFIANT=".$_POST['cidentifiant']." WHERE infos.ID=".$_GET['id'];
     
    	}
    J'ai essayer different essai mais lorsque je valide, ma base de donnée ne se modifie pas et donc, j'ai toujours la même chose dans mon affichage..
    En esperant votre aide, merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je ne connais pas PHP , mais où est l'exec ? Il est bien beau d'écrire une phrase SQL mais ça ne l'exécute pas , il manque certainement une instruction .

    De plus s'il s'agit de variables chaine comment cela se passe ? normalement les valeurs doivent être entre quotes
    n'existe t-il pas un moyen de faire des requêtes paramétrées ? surtout que je lis qu'il y a des dates a passer , attention aux formats !

    je suggère une visite de ce site
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Voici donc tout mon code pour se qui est de Firebird, sachant qu'avant j'ai bien paramétré le user, l'emplacement de la bdd ainsi que le mot de passe.
    Et pour les variable chaines, vous voulez dire come ceci? '.$_POST['cidentifiant'].'
    merci.

    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
     
            $res = ibase_connect($dbname, $dbuser, $dbpassword) or die (ibase_errmsg());
     
    	if(isset($_POST['valider']))
    	{
     
    	$sql = "UPDATE infos2  SET IDENTIFIANT=".$_POST['cidentifiant']." WHERE id=".$_GET['id'];
     
    	}
     
    	$sql = "SELECT IDENTIFIANT FROM infos2 WHERE id = ".$_GET['id'];	
     
    	$result = ibase_query($res, $sql);
     
    	$row=ibase_fetch_object($result);
     
    	ibase_free_result($result);
     
    	ibase_close($res) or die(ibase_errmsg());

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 13
    Points : 17
    Points
    17
    Par défaut Nouvelles informations.
    En faite le problème ne vient de ma requète Firebird puisque je viens de réaliser un echo de celui-ci et il m'affiche bien mes modifications.En revanche c'est le passage de mon formulaire à la base de donnée qui ne se fait pas. Pourtant je suis bien connecté avec le Terminal sous Linux et j'ai rendu chaque dossier et fichier accessible gràca à la commande chmod 777 '...';
    Cordialement,

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par LuffyBoy_85 Voir le message
    En fait le problème ne vient de ma requête Firebird puisque je viens de réaliser un echo de celui-ci et il m'affiche bien mes modifications.
    pour moi , il manque toujours un execute SQL !
    uniquement en lisant la doc , j'aurais écris ainsi (note : je ne connais rien en PHP , je voulais m'y mettre mais faute de temps .....)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    IF(isset($_POST['valider']))
    	{
            ibase_prepare($res,'UPDATE infos2  SET IDENTIFIANT=? WHERE id=?')
            ibase_execute($query, $_POST['cidentifiant'], $_GET['id']);
    	}
     
    	$sql = "SELECT IDENTIFIANT FROM infos2 WHERE id = ".$_GET['id'];
            ....
    mais surtout je pense que c'est plus un problème de language que de Firebird , tu aurais plus de chance de réponse sur le forum PHP&SGBD
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Bonjour,
    J'ai fais des recherches hier soir et j'ai trouvé une solution avec la fonction ibase_commit() et donc j'arrive bien à enregistrer directement sur la bdd, se qu'il manquait c'était une ligne de code pour autoriser la modification sur la base de donnée.
    Mais j'ai un problème, qui concerne la plus part de tout mes champs de type texte comme nom, prenom.. (etc), toutes les modifications ne s'affiche pas.
    Merci.

    Et voici mon code:
    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
     
            $dbname = '/var/www/html/form.fdb';
     
    	$dbuser = 'sysdba';
     
    	$dbpassword = 'masterkey';
     
    	$res = ibase_connect($dbname, $dbuser, $dbpassword) or die (ibase_errmsg("Erreur de connection!"));
     
    	if(isset($_POST['valider']))
    	{
     
    	$sql = "UPDATE infos2 SET IDENTIFIANT=".$_POST['cidentifiant']." WHERE id = ".$_GET['id'];
     
    	$result = ibase_query($res, $sql);
     
    	$th=ibase_trans(IBASE_DEFAULT,$result,$res);
     
    	ibase_commit($th, $result);
     
    	}
     
    	$sql = "SELECT IDENTIFIANT FROM infos2 WHERE id = ".$_GET['id'];	
     
    	$result = ibase_query($res, $sql);
     
    	$row=ibase_fetch_object($result);
     
    	ibase_free_result($result);
     
    	ibase_close($res) or die(ibase_errmsg());

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Je rappelle que je ne suis pas un spécialiste PHP (niveau culture générale et livresque tout au plus)

    l'utilisation de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	IF(isset($_POST['valider']))
    	{
     	$sql = "UPDATE infos2 SET IDENTIFIANT=".$_POST['cidentifiant']." WHERE id = ".$_GET['id'];
     	$result = ibase_query($res, $sql);
     	$th=ibase_trans(IBASE_DEFAULT,$result,$res);
     	ibase_commit($th, $result);
     	}
    me parait bizarre, en régle générale on ouvre une transaction AVANT de faire le SQL , pour la 'committer' APRES
    la différence entre ce code et celui que j'ai proposé est minime (je ne savais pas que ibase_query pouvait également faire les UPDATE,INSERT ou DELETE)
    pour moi (actuellement spécialisé Delphi) une Query sert à récupérer un ensemble de données , un Execute à faire ce qui ne renvoi aucun résultat
    Quant aux Transactions , c'est un autre débat .

    Mais j'ai un problème, qui concerne la plus part de tout mes champs de type texte comme nom, prenom.. (etc)
    c'est pour cela que j'ai parlé de
    Citation Envoyé par sergiomaster
    n'existe t-il pas un moyen de faire des requêtes paramétrées ?
    et que j'ai proposé le code avec un ibase_prepare
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    "UPDATE infos2  SET IDENTIFIANT=? WHERE id=?"
    pourquoi , parce que si php gére les types de variables , ce n'est pas le cas (enfin façon de parler) de SQL
    une chaine de caractère doit se trouver entre quotes , ce que ne fait pas la concaténation que tu proposes

    exemple :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE infos2 SET NOM='Toto' WHERE id=1  // fonctionne
    UPDATE infos2 SET NOM=Toto WHERE id=1   // erreur SQL attends une colonne
    en PHP , cela devrait donner quelque chose du genre
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "UPDATE infos2 SET NOM='".$_POST['cNom']."'WHERE id = ".$_GET['id']"
    encore une fois en passant par des paramètres cela serait préférable
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = "UPDATE infos2 SET NOM=? WHERE id = ?";
    // est-ce que cela nécessite un prépare ? aucune idée
    $result = ibase_query($res, $sql,$_POST['cNom'],$_GET['id']);
    cependant , une recommandation de plus , PHP n'a pas de type date,date_time etc... récupérer une date en format français (dd/mm/yyyy) va poser des problèmes , car le SQL (du moins Firebird) va penser qu'il s'agit d'une date à "l'américaine" (mm/dd/yyyy) , il faudra changer la valeur récupéré pour transformer les / en - ou .
    enfin , je ne sais pas comment PHP se comporte avec le DecimalPoint
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. [A-07] verification requete null
    Par helprojet dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/03/2009, 22h00
  2. Réponses: 7
    Dernier message: 09/06/2006, 16h48
  3. [Firebird] DELETE sur le résultat d'une requete d'un IBQUERY
    Par shashark dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/06/2005, 18h17
  4. Delphi, Firebird, et requetes longues ...
    Par shikami dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/09/2004, 19h04
  5. Requete imbriquée sur Firebird ou Interbase
    Par Thib dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/03/2004, 09h00

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