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 :

[Conception] formulaire et case à cocher et recherche dans une base de donnée


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut [Conception] formulaire et case à cocher et recherche dans une base de donnée
    Bonjour,
    je debute en php et base de données et j'ai rencontré plusieurs problèmes. Je les ai résolues en parties mais celui-ci me résiste :
    1. J'ai créé avec phpmyadmin une base de donnée qui contients les champs suivants :
    id - fruit - couleur - prix - poids.
    j'ai ainsi par exemple
    1-pomme -vert-2-1
    2-poire-vert-3-8
    3-citron-jaune-4-8
    4-orange-orange-1-2


    2. j'ai un formulaire avec des cases à cochers permettant de choisir la couleur :
    Ca ressemble à quelques choses comme :
    <input type="checkbox" name="coul[]" value ="rouge">ROUGE</p>
    <input type="checkbox" name="coul[]" value ="bleu">BLEU</p>
    <input type="checkbox" name="coul[]" value ="vert">VERT</p>
    <input type="checkbox" name="coul[]" value ="jaune">JAUNE</p>
    <input type="checkbox" name="coul[]" value ="orange">ORANGE</p>

    3. Mon but : donner tous les fruits correspondant AUX couleur(S) choisie(s).
    Si on choisissait une seule couleur je sais le faire (avec des boutons radios) mais là on peut choisir plusieurs couleurs et je ne vois pas comment faire !

    Avec boutons radios cela donne ceci :

    $Resultat = mysql_query("SELECT * FROM table_fruit WHERE couleur = '$coul';");

    for ($Compteur=0 ; $Compteur<mysql_numrows($Resultat) ; $Compteur++)
    {
    $nom = mysql_result($Resultat , $Compteur , "fruit");
    echo $nom ,"<BR>";
    }
    Mais là, avec des cases à cocher ça ne peut pas marcher puisque j'ai un tableau coul[] !
    J'avais pensé à ça :

    $Resultat = mysql_query("SELECT * FROM table_fruit WHERE couleur IN '$coul[]';");
    if (mysql_numrows($Resultat)>0)
    {
    $nom = mysql_result($Resultat , 0 , "fruit");
    echo $nom ,"<BR>";
    }
    Mais ça ne marche pas. J'ai l'erreur suivante
    Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\test.php on line 56
    ce qui veut dire, je pense, qu'il n'a rien trouvé.

    PS : je compte ensuite modifier, avec des boutons radios pour le prix cette fois, la requete en un truc de ce genre :
    $Resultat = mysql_query("SELECT * FROM table_fruit WHERE (prix = '$prix') and ('couleur IN '$coul[]');");
    if (mysql_numrows($Resultat)>0)
    {
    $nom = mysql_result($Resultat , 0 , "fruit");
    echo $nom ,"<BR>";
    }
    et avec d'autres conditions dans le where si possible (ordre,...) mais j'ai toujours mon probleme avec les cases à cocher...


    Bref, si quelqu'un pouvait m'aider, je l'en remercie par avance.

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    L'idée :

    Construire ta requête en initialisant avec SELECT * FROM table WHERE 1

    Ensuite tu parcours ton tableau coul à l'aide d'un foreach, et pour chaque valeur tu ajoutes à ta requête " AND couleur='valeur'" et hop le tour est joué.

    Bon courage.


    PS :

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    merci, mais je ne vois pas trop comment ecrire tout ça (même si je pense avoir compris l'idée).

    D'abord dans Where 1 : c'est quoi ce 1 ?

    ensuite où faut il écrire le for each ? j'aimerai avoir tous mes resultats dans la variable $resultat comme dans mon exemple. Est-ce possible ?
    Merci

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    WHERE 1 c'est juste une astuce pour simplifier grandement l'ajout de conditions (1 est VRAI donc pas d'influence sur le résultat).

    Le foreach c'est pour construire ta requête donc tu le mets là où tu construis ladite requête (logique...).

    Allez un peu de début de code (pas testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req = "SELECT * FROM table WHERE 1";
    foreach($coul as $val)
      $req .= " AND couleur='" . $val . "'";
    $res = mysql_query($req);
    while($row = mysql_fetch_array($res))
      echo $row['nom'] . "<BR>";

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    j'ai compris l'idée.
    mais ça ne marche pas j'ai une erreur :
    Invalid argument supplied for foreach() au niveau de la ligne du foreach.

    je me demandais si cela ne provenait pas de certaines cases non cochées mais j'ai la même chose si je coche toutes les cases.
    un problème de syntaxe ? j'ai fait plusieurs essais sans résultats positifs
    Je suis un peu perdu....

    Dans le cas où vous pourriez résoudre ce problème, la longueur de la requète est-elle limité ? Si j'ai bien compris la variable $req grandi à chaque fois qu'on a une case à cocher (qu'elle soit cochée ou non). Si jamais il y en avait une vingtaine ou plus, n'y aurait-il pas une erreur ? Je pense à une limitation de chaine de caractère à 256 (je ne sais pas si cela existe en php).

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    je n'arrive toujours pas à voir l'erreur mais j'ai découvert ceci :
    (vu que ca ne concerne plus les bases de données je ne sais pas si il faut que je le poste ici ou ailleurs car ça concerne le post précédent).


    je reprends mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     <form method="post" action="test.php">
    <p><input type="checkbox" name="coul[]" value ="rouge">ROUGE</p>
    <p><input type="checkbox" name="coul[]" value ="bleu">BLEU</p>
    <p><input type="checkbox" name="coul[]" value ="vert">VERT</p>
    <p><input type="checkbox" name="coul[]" value ="jaune">JAUNE</p>
    <p><input type="checkbox" name="coul[]" value ="orange">ORANGE</p> 
    <p><input type="submit" value="OK" name="BoutonOK"></p>
        </form>
    pour le formulaire et les cases à cocher

    Ensuite j'ai ceci dans le fichier test.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ctrl=sizeof($coul);
    echo "nombre de cases cochées =".$ctrl;
    que je coche n'importe quel nombre de cases j'obtiens: nombre de cases cochées = 0
    si j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ctrl=sizeof('$coul');
    echo "nombre de cases cochées =".$ctrl;
    alors quand je coche n'importe quel nombre de cases j'obtiens :nombre de cases cochées = 1

    Je croyais que sizeof comptais le nombre de cases cochées.
    J'ai donc l'impression que suis à la recherche de la bonne syntaxe pour afficher le nombre de cases cochées.
    Je pense que ceci permettra de résoudre mon problème précédent car je pense que l'erreur sur le foreach vient aussi de là.
    Mais je peux me tromper car je débute...

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    C'est parce que il faut récupérer le tableau avec $_POST['coul'] et pas directement avec $coul

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    MERCI, ça marche !!

  9. #9
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 26
    Points : 9
    Points
    9
    Par défaut recuperation des informations d'un formulaire
    bonjour,
    je debute en php/mysql.
    j'aimerai faire un script php qui me permetrai de recuperer des informations entrées dans un formulaire contenant juste les champs: nom, prenom, age, adresse.
    et ces informations doivent etre placées dans une base mysql.
    quelqu'un peut-il m'aider ?

  11. #11
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par franckywood
    bonjour,
    je debute en php/mysql.
    j'aimerai faire un script php qui me permetrai de recuperer des informations entrées dans un formulaire contenant juste les champs: nom, prenom, age, adresse.
    et ces informations doivent etre placées dans une base mysql.
    quelqu'un peut-il m'aider ?
    Salut,

    tu trouveras certainement ton bonheur ici :
    >>> php.developpez.com

    fais quelques essais, et si tu as un souci de compréhension ou de fonctionnement sur une partie du code, le forum pourra t'aider...
    mais, sans vouloir te vexer, on n'est pas là pour donner des cours

    bon développement,

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

Discussions similaires

  1. [MySQL] rechercher dans une base de donnée depuis un formulaire
    Par infoworld2013 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/08/2013, 03h45
  2. problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/10/2005, 18h00
  3. Recherche dans une base de donnée
    Par genova dans le forum SQLite
    Réponses: 8
    Dernier message: 28/09/2005, 23h16
  4. problème de recherche dans une base de données
    Par bouzid_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 06h47
  5. recherche dans une base de donnée+boucle
    Par eric205 dans le forum Bases de données
    Réponses: 8
    Dernier message: 15/03/2005, 21h14

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