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 :

Insert et condition [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut Insert et condition
    Bonjour,

    J'aurais besoin d'aide concernant un insert, je m'explique.
    J'ai un formulaire dans lequel je doit rentrer un valeur (pn), cependant je souhaite insérer dans ma table la valeur de inscrite dans mon formulaire "pn" mais égalament un status, celui-ci est déterminé de manière simple, si la valeur de "pn" est dans "matable2" alors j'insert Yes, si elle ne s'y trouve pas alors j'insert No.

    Je pensais faire une jointure avec une condition mais je ne vois pas trop comment faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $insert="INSERT INTO matable VALUES(NULL,CURRENT_TIMESTAMP,'".
    $_POST['pn']."','".$_POST['status']."','".$date."')";
    Merci pour votre aide.

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Et bien fait un SELECT en 1er sur "latable2" pour vérifier si cet élément existe.
    S'il existe -> INSERT INTO
    Sinon rien

    Ceci dit, et si on suit la logique, théoriquement tu devrais pouvoir faire cette vérif avant de proposer le "pn" dans le formulaire, lui mettre comme valeur Off (ou No, peu importe) par exemple.
    Si la valeur de 'pn' est Off -> rien (même pas besoin plus besoin de (re)faire la vérif)

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    En faite, je souhaite dans les deux cas insérer "pn".
    S'il existe -> INSERT INTO "Yes"
    S'il n'existe pas-> INSERT INTO "No"

    C la que sa deviens compliqué pour moi, on ne peut pas faire de if dans un INSERT INTO.

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par Budy123
    C la que sa deviens compliqué pour moi, on ne peut pas faire de if dans un INSERT INTO.
    Il y a rien de compliqué, suffit de le faire en 2 temps, donc 2 requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $rs_verif = mysql_query("SELECT COUNT(*) AS total FROM latable2 WHERE condition = 'machin'");
    $verif = mysql_ftech_array($rs_verif);
    $pn = ((int)$verif['total'] > 0) ? 'Yes' : 'No'; // Pn existe ou pas
     
    // Ensuite on insert la valeur de $pn
    // INSERT INTO
    Par contre, je ne sais pas trop ce qu'il faut mettre dans la condition (clause WHERE).
    Mais tu devrais le savoir.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    J'ai ajouté le code et testé mais il me génère un message d'erreur:

    Fatal error: Call to undefined function mysql_ftech_array() in C:\wamp\www\tigr\valider_tigr_saisie.php on line 145

    La requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rs_verif = mysql_query("SELECT COUNT(*) AS total FROM latable2 WHERE condition = 'machin'");
    Elle fonctione bien elle renvoi 1 ou 0 si il existe ou pas.

    Mais le code bloque après:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $verif = mysql_ftech_array($rs_verif);
    $pn = ((int)$verif['total'] > 0) ? 'Yes' : 'No';

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Ouais ... mais si tu fais du copier/coller bête est méchant, ça va pas le faire

    Cette partie : condition = 'machin' c'est à toi de le modifier pour y mettre LA condition qu'il faut.

    Puis j'ai fait une petite erreur de frappe : mysql_ftech_array au lieu de mysql_fetch_array
    Mais c'est pas interdit de corriger

    Toujours est il que je t'ai donner le principe, à toi de faire le reste.
    C'est ça le but d'un forum, non ?
    d'avoir un coup d'main pour le principe, après, le boulot c'est à vous de le faire, non ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Non désolé, je l'ai déjà modifié mais ce n'est pas le code que j'ai copier coller, le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $rs_verif = mysql_query("SELECT COUNT(*) AS total FROM tigrpart WHERE PartNumber = $pn");
    $verif = mysql_fetch_array($rs_verif);
    $pn = ((int)$verif['total'] > 0) ? 'Yes' : 'No';
    J'ai modifié le mysql_fetch_array qui était mal hortographié et il me donnait un message ereur.

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\tigr\valider_tigr_saisie.php on line 145

    Je ne fais pas de copier/coller betement, je cherche en parallele à progrésser et donc modifier les scripts..

  8. #8
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par Budy123
    Je ne fais pas de copier/coller betement, je cherche en parallele à progrésser et donc modifier les scripts..
    A ben, désolé, mais vu que tu l'as remis texto ... peu ne pas deviner.
    En tout cas, on s'attend à tout tu sais

    Sinon, faut mettre des quote entre le $pn :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ... WHERE PartNumber = '$pn'
    Mais ce ne serait pas plutôt $_POST['pn'] qu'il faudrait ?

    Fais un echo sur ta requête + un mysql_error().
    Fais un echo aussi sur $pn pour voir sa valeur avant l'insertion.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $sql = "SELECT blabla FROM latable2 WHERE bla bla bla";
    echo $sql.'<br />';
     
    $rs_verif = mysql_query($sql) or die('Erreur : '.mysql_errer());
    $verif = mysql_fetch_array($rs_verif);
    $pn = ((int)$verif['total'] > 0) ? 'Yes' : 'No';
     
    echo 'pn : '.$pn.'<br />';

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Effectivement c'est le problème que j'ai détecté en parallèle, il me manquait des quotes pour le $pn, manitenant cela fonctionne très bien.

    Merci pour le support.

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

Discussions similaires

  1. insertion sous condition
    Par kapi dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/08/2007, 22h44
  2. Insertion avec condition
    Par cassou@laposte dans le forum Requêtes
    Réponses: 6
    Dernier message: 11/02/2007, 10h22
  3. Insertion sous condition
    Par youdev dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 31/10/2006, 15h12
  4. INSERT si condition
    Par Wormus dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 31/05/2006, 16h44
  5. INSERT avec condition d'une table à une autre
    Par papipasto dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/03/2006, 13h51

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