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 :

Insertion de valeurs checkbox (PHP/MySQL)


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Par défaut Insertion de valeurs checkbox (PHP/MySQL)
    Salut,
    Tout d'abord j'espère que vous pardonnerez mes lacunes: je débute :-°

    Je cherche à modifier un script PHP de petites annonces.

    Actuellement, le script ne permet que de poster dans une seule ville, mais je cherche à mettre en place une checkbox qui permettrait de sélectionner plusieurs villes pour qu'y soit postée la même annonce..

    En ce qui concerne la checkbox, je devrais avoir ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
    <body>
    <form method="post" action="post.php">
    <input type="checkbox" name="cityid[]" value="1"> Brest <br />
    <input type="checkbox" name="cityid[]" value="2"> Paris <br />
    </form>
    </body>
    </html>

    Je vous épargne le code très long pour ne poster ici que l'extrait qui m'intéresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $sql = "INSERT INTO $t_ads 
    				SET adtitle = '$data[adtitle]',
    				addesc = '$data[addesc]',
    				cityid = $xcityid,
    				createdon = NOW(),
    				timestamp = NOW(),";
     
    	mysql_query($sql) or die($sql.mysql_error());


    Je pense que le bout de code ci-dessus (cityid = $xcityid) est à modifier, et c'est ici que mes connaissances limitées me bloquent...

    J'ai bien essayé d'intégrer le code suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if(isset($_POST['cityid']))
    {
    foreach($_POST['cityid'] as $value){
    $insert=mysql_query("INSERT INTO $t_ads('cityid') VALUES ('$value')");
    }
    }
    ?>

    ...mais sans succès. Je dois être à côté de la plaque.
    Merci d'avance à ceux qui m'apporteront leur aide.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Starmagh Voir le message
    $insert=mysql_query("INSERT INTO $t_ads('cityid') VALUES ('$value')");
    La requête est mal formée, un nom de champ (ici cityid) ne doit pas être encadré de '.

    ...mais sans succès.
    Message d'erreur ? Autre ?

    En tout cas je suis étonné de l'usage fait de ta table $t_ads, es-tu sûr que tu pourras y stocker plusieurs villes pour une même annonce ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Message d'erreur ? Autre ?
    Merci pour ta réponse.
    Lorsque je coche les checkbox, en cliquant sur submit j'ai l'erreur suivante:
    Fatal error: Unsupported operand types
    qui envoie vers une fonction qui apparemment teste la nature numérique de la valeur entrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	function check_numeric($var) {
    		if(isset($var)) {
    			if ($var == "") {
    				$var = 0;
    			} else if(strval(0+$var) !== "{$var}")  {
    				handle_security_attack();
    			}
    		}
    	}
    Citation Envoyé par Séb. Voir le message
    En tout cas je suis étonné de l'usage fait de ta table $t_ads, es-tu sûr que tu pourras y stocker plusieurs villes pour une même annonce ?
    Je crois que tu as raison. En fait je devrais plutôt stocker une annonce pour chaque ville.

    J'y suis parvenu en faisant plusieurs insert (en rensignant manuellement les ID des villes, de la manière -basique- suivante:

    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
    	$sql = "INSERT INTO $t_ads 
    				SET adtitle = '$data[adtitle]',
    					addesc = '$data[addesc]',
    					cityid = 1,
    					createdon = NOW(),
    					timestamp = NOW(),";
    	}
     
    	mysql_query($sql) or die($sql.mysql_error());
     
            $sql2 = "INSERT INTO $t_ads 
    				SET adtitle = '$data[adtitle]',
    					addesc = '$data[addesc]',
    					cityid = 2,
    					createdon = NOW(),
    					timestamp = NOW(),";
    	}
     
    	mysql_query($sql2) or die($sql2.mysql_error());

    Mais comment le faire à partir de checkboxes ?

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Starmagh Voir le message
    Lorsque je coche les checkbox, en cliquant sur submit j'ai l'erreur suivante:
    Fatal error: Unsupported operand types
    Extrait du script en cause ?

    qui envoie vers une fonction qui apparemment teste la nature numérique de la valeur entrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	function check_numeric($var) {
    		if(isset($var)) {
    			if ($var == "") {
    				$var = 0;
    			} else if(strval(0+$var) !== "{$var}")  {
    				handle_security_attack();
    			}
    		}
    	}
    Me semble louche cette fonction


    Je crois que tu as raison. En fait je devrais plutôt stocker une annonce pour chaque ville.
    Il faut créer un table supplémentaire pour ta relation :

    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
    annonces
    ---------------
    annonce_id
    annonce_texte
    etc.
     
    villes
    ---------------
    ville_id
    ville_nom
    etc.
     
    villes_annonces
    ---------------
    ville_annonce_annonce
    ville_annonce_ville
    Ainsi une annonce pourra avoir de 0 à X villes rattachées.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Il faut créer un table supplémentaire pour ta relation :

    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
    annonces
    ---------------
    annonce_id
    annonce_texte
    etc.
     
    villes
    ---------------
    ville_id
    ville_nom
    etc.
     
    villes_annonces
    ---------------
    ville_annonce_annonce
    ville_annonce_ville
    Ainsi une annonce pourra avoir de 0 à X villes rattachées.
    Merci pour ton aide. Si j'ai bien compris, je crée donc une table similaire à t_ads. La syntaxe m'échappe quelque peu.

    Pour créer t_ads, j'ai:

    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
    $sqls[$t_ads] = "CREATE TABLE `$t_ads` (
      `adid` int unsigned NOT NULL auto_increment,
      `adtitle` varchar(100) NOT NULL default '',
      `addesc` longtext NOT NULL,
      `area` varchar(50) NOT NULL default '',
      `email` varchar(50) NOT NULL default '',
      `showemail` enum('0','1','2') NOT NULL default '0',
      `password` varchar(50) NOT NULL default '',
      `code` varchar(35) NOT NULL default '',
      `cityid` smallint unsigned NOT NULL default '0',
      `subcatid` smallint unsigned NOT NULL default '0',
      `price` DECIMAL( 10, 2 ) NOT NULL default '0',
      `othercontactok` enum('0','1') NOT NULL default '0',
      `hits` int unsigned NOT NULL default '0',
      `ip` varchar(15) NOT NULL default '',
      `verified` enum('0','1') NOT NULL default '0',
      `abused` int unsigned NOT NULL default '0',
      `enabled` enum('0','1') NOT NULL default '0',
      `createdon` datetime NOT NULL default '0000-00-00 00:00:00',
      `expireson` datetime NOT NULL default '0000-00-00 00:00:00',
      `timestamp` timestamp(14) NOT NULL,
      PRIMARY KEY  (`adid`),
      KEY `subcatid` (`subcatid`),
      KEY `cityid` (`cityid`),
      KEY `verified` (`verified`),
      KEY `enabled` (`enabled`)
    ) TYPE=MyISAM;";
    Ceci est le contenu complet de la table, je l'ai tronquée toute à l'heure dans l'INSERT pour faire court.
    Malheureusement, je ne saisis pas bien comment la table que je créerais, pourrait contenir plusieurs villes pour une même annonce.
    Pardonne mon ignorance

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Que vaut la variable $t_ads ?


    Malheureusement, je ne saisis pas bien comment la table que je créerais, pourrait contenir plusieurs villes pour une même annonce.
    Exemple :

    villes (id, nom) :
    1, Paris
    2, Lyon

    annonces (id, texte) :
    1, Loue appart sur Paris
    2, Achète maison sur régions parisienne ou lyonnaise

    annonces_villes (annonce, ville) :
    1, 1
    2, 1
    2, 2

    La table annonces_villes contient 3 enregistrements :
    Le 1er fait le lien entre l'annonce de location et Paris
    Le 2e fait le lien entre l'annonce d'achat et Paris
    Le 3e fait le lien entre l'annonce d'achat et Lyon
    La 1re annonce est liée à 1 ville, la 2e annonce à 2 villes

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Par défaut
    Merci Séb.
    J'ai créé la table, je ne parviens pas à y entrer des données, mais ce qui me tracasse le plus c'est la gestion dans l'url de ces différentes villes où se trouve l'annonce.

    Par défaut, pour une seule ville, nous avons une url de type:
    http://test.com/index.php?view=showad&adid=1&cityid=1

    Si je poste une seule et même annonce dans plusieurs villes, n'aurais-je pas théoriquement plusieurs valeurs dans l'url après cityid= ?

    Je ne pense pas que le script pourrait gérer ça. Il faudrait sans doute réécrire une bonne partie du code.

    Crois-tu qu'il serait possible, toujours à partir d'un checkbox, de publier la même annonce dans plusieurs villes ? Comme indiqué plus haut, j'y suis parvenu en faisant plusieurs INSERT INTO successifs dans lesquels seul changeait la valeur de cityid, mais pas avec des checkboxes.

    En fait je cherche à faire ceci:

    Pour chaque checkbox cochée, exécuter l'INSERT suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $sql = "INSERT INTO $t_ads 
    				SET adtitle = '$data[adtitle]',
    					addesc = '$data[addesc]',
    					cityid = $xcityid,
    					createdon = NOW(),
    					timestamp = NOW(),";
    	}
     
    	mysql_query($sql) or die($sql.mysql_error());
    ..où seul changerait la valeur de $xcityid, en fonction de l'id de la ville, sélectionnée par checkbox.

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    J'ai créé la table, je ne parviens pas à y entrer des données
    Faut faire autant de requêtes INSERT qu'il y a de villes pour une annonce, pas de raison que ça bloque.

    ce qui me tracasse le plus c'est la gestion dans l'url de ces différentes villes où se trouve l'annonce.

    Par défaut, pour une seule ville, nous avons une url de type:
    http://test.com/index.php?view=showad&adid=1&cityid=1

    Si je poste une seule et même annonce dans plusieurs villes, n'aurais-je pas théoriquement plusieurs valeurs dans l'url après cityid= ?
    Pourquoi envoyer un cityid ? A priori inutile pour afficher une annonce puisque tu as le adid permettant de l'identifier.

    Je ne pense pas que le script pourrait gérer ça. Il faudrait sans doute réécrire une bonne partie du code.
    Euh vraiment je ne vois pas pourquoi. Au pire c'est juste la requête qu'il faut compléter et la boucle récupérant/affichant les données à revoir, mais pas de travail titanesque en vue.

    Crois-tu qu'il serait possible, toujours à partir d'un checkbox, de publier la même annonce dans plusieurs villes ? Comme indiqué plus haut, j'y suis parvenu en faisant plusieurs INSERT INTO successifs dans lesquels seul changeait la valeur de cityid, mais pas avec des checkboxes.
    Oui.

    En fait je cherche à faire ceci:
    C'est moche car ta bdd stocke des données redondantes, et puis en cas de màj ou de suppression de l'annonce tu vas galérer...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Faut faire autant de requêtes INSERT qu'il y a de villes pour une annonce, pas de raison que ça bloque.
    avec ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(isset($_POST['cityid']))
    			{
    				foreach($_POST['cityid'] as $value)
    				{
    					$insert=mysql_query("INSERT INTO xclf_ads_cities(adid,cityid) VALUES ('$adid','$value')");
    				}
    			}
    J'ai créé ma nouvelle table ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE `$t_ads_cities` (
      `adid` int unsigned NOT NULL auto_increment,
      `cityid` smallint unsigned NOT NULL default '0',
      `enabled` enum('0','1') NOT NULL default '0',
      `timestamp` timestamp(14) NOT NULL,
      PRIMARY KEY  (`adid`),
      KEY `cityid` (`cityid`),
      KEY `enabled` (`enabled`)
    ) TYPE=MyISAM;

    Citation Envoyé par Séb. Voir le message
    Pourquoi envoyer un cityid ? A priori inutile pour afficher une annonce puisque tu as le adid permettant de l'identifier.
    Je te montrerais bien un exemple sur mon site de test si tu voulais. En l'absence de cityid dans l'url, le lien n'envoie plus vers l'annonce.


    Citation Envoyé par Séb. Voir le message
    Oui.
    Ok, mais aurais-tu un exemple concret s'il te plaît ? Je n'attends pas de trouver le code complet, mais cette aide me permettrait de corriger mes erreurs et d'effacer quelque lacunes (elles sont légion, suis débutant).

  10. #10
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Je te montrerais bien un exemple sur mon site de test si tu voulais. En l'absence de cityid dans l'url, le lien n'envoie plus vers l'annonce.
    Pourquoi ?

    Ok, mais aurais-tu un exemple concret s'il te plaît ? Je n'attends pas de trouver le code complet, mais cette aide me permettrait de corriger mes erreurs et d'effacer quelque lacunes (elles sont légion, suis débutant).
    Montre comment tu fais actuellement, afin qu'on puisse adapter avec des checkboxes.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Pourquoi ?
    La structure de l'url est spécifiée dans une fonction qui la construit. Du genre:
    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
     
    function buildURL($type, $p=array(), $force_qs=FALSE) {
        global $sef_urls, $sef_word_separator, $vbasedir;
        $sep = $sef_word_separator;
     
    switch ($type)
            {
             case "ads":
             case "posts":
                    $url = "?view=ads&catid={$p[1]}&subcatid={$p[3]}&cityid={$p[0]}" . pageParam($p[5]);
                    break;
                    if ($url{0} == "?") $url = "index.php{$url}";
     
            return $url;
            }
    Citation Envoyé par Séb. Voir le message
    Montre comment tu fais actuellement, afin qu'on puisse adapter avec des checkboxes.
    Actuellement, j'interviens seulement sur la requête qui insert l'annonce dans la base. Comme je ne sais pas le faire avec des checkbox, je ne peux que poster une annonce dans TOUTES les villes, sans possibilité donc d'en choisir que quelques unes.

    Par défaut, on arrive d'abord sur une page sur laquelle on sélectionne la ville dans laquelle on va poster l'annonce. En cliquant sur le lien d'une des villes, on vient de sélectionner $xcityid.

    extrait de cette page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    		$sql = "SELECT * FROM $t_cities ct WHERE countryid = $country[countryid] AND enabled = '1' $sort2";
    		$resct = mysql_query($sql);
     
    		while($city=mysql_fetch_array($resct))
    		{
     
    		?>
     
    		<li><a href="?<?php echo $citylink_view; ?>&cityid=<?php echo $city['cityid']; ?>&lang=<?php echo $xlang; ?>&catid=<?php echo $_GET['catid']; ?>&subcatid=<?php echo $_GET['subcatid']; ?>"><?php echo $city['cityname']; ?></a></li>
    Une fois la ville sélectionnée, on arrive sur une 2e page (post.php) sur laquelle:
    On sélectionne la catégorie (catid) puis la sous-catégorie (subcatid).
    Ceci fait, toujours dans post.php, on rédige l'annonce.
    Avec ma modif (à 2 balles j'en suis conscient), l'annonce, en cliquant sur submit, ne va pas se poster dans une ville, mais dans toutes à la fois.
    Car au lieu d'une requête, avec le $xcityid correspondant à ce que l'on a choisi dans la page précédente, j'en ai plusieurs:

    au lieu de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $sql = "INSERT INTO $t_ads 
    				SET adtitle = '$data[adtitle]',
    					addesc = '$data[addesc]',
    					cityid = $xcityid,
    					createdon = NOW(),
    					timestamp = NOW(),";
    	}
     
    	mysql_query($sql) or die($sql.mysql_error());
    j'ai:
    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
    $sql = "INSERT INTO $t_ads 
    				SET adtitle = '$data[adtitle]',
    					addesc = '$data[addesc]',
    					cityid = 1,
    					createdon = NOW(),
    					timestamp = NOW(),";
    	}
     
    	mysql_query($sql) or die($sql.mysql_error());
     
    $sql2 = "INSERT INTO $t_ads 
    				SET adtitle = '$data[adtitle]',
    					addesc = '$data[addesc]',
    					cityid = 2,
    					createdon = NOW(),
    					timestamp = NOW(),";
    	}
     
    	mysql_query($sql2) or die($sql2.mysql_error());
    Je préremplis direct dans la page post.php les ID de cityid
    C'est nul, mais ça fonctionne.

    J'aimerais, au lieu de ça, utiliser un checkbox dans la page précédente.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Par défaut
    Voici quelques nouvelles du front.

    Après quelques tests/recherches, il est tout à fait possible de "multiposter" une annonce tout en permettant au dit annonceur d'éditer/supprimer ses annonces par un seul et même lien. Multiposter signifie ici "dupliquer", mais en attribuant à chaque annonce une url différente, puisque l'élément cityid, présent dans l'url, change en fonction de la ville.

    Au départ je pensais que poster une annonce sur 50 villes -par cette technique- obligerait à éditer 50 liens.
    Mais il et possible de rationaliser la chose: pour se faire, il est nécessaire, dans mon cas, de créer une nouvelle colonne dans la table $t_ads qui stipulera les annonces qui ont été postées via l'option "multipost" ou alors d'effectuer une recherche sur les annonces qui ont été postées avec le même titre et au même instant, et effectuer un update de masse sur ces adid. Ainsi, un seul lien éditerait toutes les annonces postées, mais je m'égare, car ce n'est pas l'objet de ma demande d'aide:

    Concrêtement:
    Admettons que je poste une annonce en choisissant plusieurs villes de parution. Je bascule donc du mode classique (ie prévu par le script que j'utilise, c'est à dire poster une annonce dans une ville déterminée), vers le mode "multipost" qui nous intéresse. Je choisis 2 villes au lieu d'une. Je cocherais donc, pour se faire, les 2 cases correspondant aux deux villes choisies. C'est le checkbox que je tente de faire.

    J'effectue 2 requêtes INSERT INTO pour ces deux villes. L'annonce est donc publiée 2 fois, mais avec 2 id de villes différents: les urls sont donc différentes, ce qui rend également différentes (par un bout de code) les balises <title> et meta pour ces deux annonces, et même -en partie- le titre de l'annonce, et le début/ou/la fin de la description de l'annonce, ceci afin de limiter l'effet de "duplicate content" au niveau des moteurs de recherche.

    exemple:


    Comme on peut le constater ci-dessus, plusieurs requête quasi identiques (en changeant seulement, à chaque fois, la valeur de cityid) permettent de poster x fois la même annonce -sauf que, bien entendu, cityid change à chaque fois...

    Pour réaliser l'exemple ci-dessus, j'ai besoin de connaître la manière d'effectuer, pour chaque case cochée (checkbox) un INSERT INTO. J'ai effectué des recherches à ce sujet, en vain. Un grand merci à celui/celle qui me mettra sur la piste...

    Je dois, à partir du formulaire suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form method="post" action="post.php">
    <input type="checkbox" name="cityid[]" value="1">Sevilla <br />
    <input type="checkbox" name="cityid[]" value="2">Torremolinos <br />
    <input type="checkbox" name="cityid[]" value="3">Malaga <br />
    <input type="checkbox" name="cityid[]" value="4">Brest <br />
    <input type="checkbox" name="cityid[]" value="5">Paris <br />
    <input type="submit" name="submit" value="submit">
    </form>
    si Sevilla (id 1) et Brest (id 4) sont cochés,

    exécuter, grâce à un code mettant en oeuvre des checkboxes, la requête suivante:

    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
    $requete_sevilla = "INSERT INTO $t_ads 
    				SET adtitle = '$data[adtitle]',
    					addesc = '$data[addesc]',
    					cityid = 1,
    					createdon = NOW(),
    					timestamp = NOW(),";
    	}
     
    	mysql_query($requete_sevilla) or die($requete_sevilla.mysql_error());
     
     
    $requete_brest = "INSERT INTO $t_ads 
    				SET adtitle = '$data[adtitle]',
    					addesc = '$data[addesc]',
    					cityid = 4,
    					createdon = NOW(),
    					timestamp = NOW(),";
    	}
     
    	mysql_query($requete_brest) or die($requete_brest.mysql_error());
    Merci pour votre aide !!

Discussions similaires

  1. [MySQL] affichage d'une page après l'insertion dans la base PHP/MySQL
    Par autre dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 22/09/2011, 11h24
  2. insertion des valeurs checkbox dans une colonne
    Par ronze dans le forum Langage
    Réponses: 0
    Dernier message: 23/06/2011, 16h33
  3. [MySQL] Regrouper plusieurs cellules de même valeur ? [tableau php/mysql]
    Par bond70 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2010, 15h44
  4. [MySQL] Insertion d'une valeur nulle, PHP->MySQL
    Par mattyeux dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/04/2010, 14h43
  5. Inserer valeur checkbox dans MySQL
    Par Kornikopic dans le forum IHM
    Réponses: 3
    Dernier message: 19/06/2007, 13h22

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