PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 21-09-2009 23:17:15

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Input Text + Select

bonjour,
Je voudrai faire un petit script "d'apprentissage".
Comment faire pour avoir un Select, avec les nom récupérédans une table sql.
et de pouvoir aussi si le nom n'est dans la liste l'ajouter.

Je sais que je pourrai utilisé un TEXT d'un coté et un SELECT de l'autre.
Mais j'aimerai si possible n'avoir qu'un champt pour les 2.

Je ne sais pas si c'est possible.

Merci d'avance.

Hors ligne

#2 22-09-2009 05:34:14

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Input Text + Select

Boileau, dans l'Art Poétique, a écrit :

Ce qui se conçoit bien s'énonce clairement,
et les mots, pour le dire, arrivent aisément.

Comme je ne comprends pas grand chose à la problématique énoncée, dois-je en conclure que tu ne l'énonces pas clairement et, partant, que tu ne conçois pas bien ce que tu souhaites exprimer ?
L'implicite et le non-dit sont les pires ennemis de la communication et, donc, de l'analyste en informatique.
Quant au mal dit ...


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 22-09-2009 13:06:57

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Input Text + Select

En fait je voudrai pouvoir écrire dans unne liste:

     
<select name="select" id="select">
     
</select>

Si l'option n'est pas disponible dans la liste.

Sans pour autant devoir rajouter un textbox à coté.

Hors ligne

#4 22-09-2009 18:06:18

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Input Text + Select

Décidément, ça frise l'autisme.
Dans quel contexte veux-tu ajouter une option dans cette foutue liste ?
Fais-tu référence à une technologie AJAX ?
Il faut vraiment te tirer les vers du nez.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 22-09-2009 18:48:58

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Input Text + Select

je ne fait référence à aucune technologie justement, je cherche.

C'est pour le site de voiture que je créé,
j'ai la liste des marques, mais si l'on veut ajouter une voiture dont la marque n'est pas dans la liste, je voudrai pouvoir écrire dans la liste comme dans un texbox, pour ajouter la marque lors de la validation du formulaire.

Hors ligne

#6 23-09-2009 08:41:23

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : Input Text + Select

Afin que l'on puisse vous aider, il faut :

- EXPLIQUER l'objectif [faut savoir où on veut arriver]
- exposer les techniques mises en œuvre [étape subsidiaire : c'est en fait le "Comment". On conçoit qu'un débutant ne sache pas comment.
- montrer le travail déjà effectué. [on est là pour vous aider, vous guider; et non pour faire du codage à votre place.]
- accepter la critique et concevoir tout recommencer ^^ [faire et défaire wink]

Désolé, morgan47, mais même avec la meilleure volonté, je ne comprends rien à ce que tu demandes...
Tente de respecter le schéma de démarche ci-dessus.


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#7 23-09-2009 09:20:24

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Input Text + Select

Bon, ça s'éclaircit un peu.
Ce que tu veux faire passe par un item <option onclick="javascript:autremarque()">Autre marque</option>
A toi ensuite de gérer le javascript sous-jacent qui peut, dans l'aboslu, voire via AJAX, permettre d'ajouter l'option dans la liste et de la sélectionner.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#8 23-09-2009 21:29:30

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Input Text + Select

Voila ce que j'ai fait :


<div id="marque">
<?php liste_marques (); ?>
</div>
function liste_marques ()
{
    echo '<select name="listemarque" id="listemarque">';
   
    $sql99 = "SELECT * FROM liste_marques ORDER BY marque ASC";
        $req99 = mysql_query($sql99) or die('Erreur SQL !'.$sql99.'<br>' . mysql_error());
    while ($liste = mysql_fetch_array ($req99))
            {
        echo '<option value="'.$liste['idmarque'].'">'.ucfirst(strtolower(trim($liste['marque']))).'</option>'."\n";
        }
        echo '<option value="am" onclick="javascript:autremarque()">Autre marque</option>';
    echo '</select>';
}

function ajout_marques ($marque)
{
    $sql = "INSERT INTO liste_marques (marque) VALUES ('$marque')";
        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
}


function ajoutmarque()
{
  url = lister_champs(addmarque);
  request1("ajax/marques.php",url,"marque");
  document.addmarque.marque.value = "";
  document.getElementById("addmarque").style.visibility='hidden';
  return false;
}

function getXhr(){
                                var xhr = null;
        if(window.XMLHttpRequest) // Firefox et autres
           xhr = new XMLHttpRequest();
        else if(window.ActiveXObject){ // Internet Explorer
           try {
                      xhr = new ActiveXObject("Msxml2.XMLHTTP");
                  } catch (e) {
                      xhr = new ActiveXObject("Microsoft.XMLHTTP");
                  }
        }
        else { // XMLHttpRequest non supporté par le navigateur
           alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
           xhr = false;
        }
                                return xhr
      }
function request1(page,variable,idmodif) {

        var xhr = getXhr()

   
        xhr.open("POST", page, true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        //xhr.send(null);
        xhr.send(variable);
       
        xhr.onreadystatechange = function(){
          // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
          if(xhr.readyState == 4 && xhr.status == 200){
            //alert(xhr.responseText);
            document.getElementById(idmodif).innerHTML = xhr.responseText;

          }
        }

   
}
 


<?php
// ajax/marques.php
include ("../conf.php");
include ("../fonctions.php");

if (isset($_POST['marque'])){
$marque = $_POST['marque'];

connect_sql ();
ajout_marques ($marque);
liste_marques ();
         }
?>
 


tout fonctionne bien.
Mais maintenant j'aimerai que la nouvelle ligne qui a été ajouté soit sélectionné.
Je pourrai le faire en php, lors de la génération de la liste, mais est ce que c'est possible en php?

Merci encore

Hors ligne

#9 24-09-2009 07:23:06

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Input Text + Select

Saluton,
Au passage, et pour t"éviter bien des déboires, je te conseille d'abandonner la syntaxe short tags. Le balisage php c'est <?php ..?> et rien d'autre.
Bien sûr que tu peux forcer l'option selcted="selected" dès la construction en php.
Il te suffit de modifier légèrement ta fonction liste_marques($option=null) dans laquelle tu testeras si $option n'est pas null. Bien sûr tu dois modifier l'appel PHP dans "ajax/marques.php"

liste_marques ($marque);

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#10 24-09-2009 08:05:18

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Input Text + Select

Merci pour ta réponse. j'ai réussi à le faire smile

Par contre j'ai un autre soucis avec ajax.

lorsque j'insère des caractères spéciaux des "éà..." ca m'affiche des caractère bizarre dans ma base.
J'ai trouvé sur internet que c'était ajax qui par défaut encode en utf-8, mais je n'arrive pas a forcé ajax à travailler en iso.
Il y a une solution?
Pour l'instant, je fait un utf8_decode avant l'insertion.

Hors ligne

#11 24-09-2009 09:33:01

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Input Text + Select

C'est un peu n'importe quoi

J'ai trouvé sur internet que c'était ajax qui par défaut encode en utf-8

ce n'est pas Ajax qui écrit dans la base, ce n'est pas PHP, non plus d'ailleurs, c'est le SGBDR en fonction des valeurs que PHP lui passe dans la requête.
C'est donc bien à cet endroit là qu'il faut appliquer le traitement.
Et si tu utilises PDO, c'est en amont de PDO dans le script PHP appelant


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#12 24-09-2009 14:15:50

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Input Text + Select

Ce que je veux dire par Ajax et utf-8

C'est que :

xhr.open("POST", page, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-15");
xhr.send(variable);

les variables sont encodé en utf-8 lors de l'envoi.

Car lorsque je passe par un formulaire normal, l'enregistrement dans la table se fait correctement.

Dernière modification par morgan47 (24-09-2009 14:20:02)

Hors ligne

#13 24-09-2009 14:44:48

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Input Text + Select

J'entends bien, mais de toute façon c'est PHP qui réceptionne pour transmettre à MySQL.
Je regarderai ce soir dans ma littérature ajaxienne s'il y a un paramétrage spécifique du XHR, mais je ne crois pas.
[edit] recherches infructueuses. Je n'ai rien trouvé sur ce sujet dans ma littérature.
Désolé, mais ta solution de traiter les données à coup de utf8_decode() en PHP est tout à fait efficace et, après réflexion, une sage précaution.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#14 24-09-2009 18:15:17

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Input Text + Select

J'ai réussi en faisant sur l a page d'insertion/récupération des données :


<?php
header('Content-Type: text/html; charset=ISO-8859-15');
$marque = utf8_decode($_POST['marque']);
?>

 

Hors ligne

#15 24-09-2009 19:24:51

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Input Text + Select

Tu devrais peut-être chercher du côté de la méthode setHeaderRequest de l'objet XHR, mais sans garantie de succès.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums