par
juliette » 04 juin 2012, 15:01
voila, j'ai un formulaire pour enregistrer dans une table el1 des liens vers des vidéos de grand prix,
j'ai une bdd qui a plusieurs tables dont el1, grand_prix et circuit:
--
-- Structure de la table `grand_prix`
--
CREATE TABLE IF NOT EXISTS `grand_prix` (
`id_gp` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL,
`id_pays` int(11) NOT NULL,
`id_ville` int(11) NOT NULL,
`id_circuit` int(11) NOT NULL,
PRIMARY KEY (`id_gp`),
KEY `fk_grand_prix_members` (`member_id`),
KEY `fk_grand_prix_pays1` (`id_pays`),
KEY `fk_grand_prix_ville1` (`id_ville`),
KEY `fk_grand_prix_circuit1` (`id_circuit`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=26 ;
--
-- Structure de la table `circuit`
--
CREATE TABLE IF NOT EXISTS `circuit` (
`id_circuit` int(11) NOT NULL AUTO_INCREMENT,
`circuit` varchar(45) NOT NULL,
PRIMARY KEY (`id_circuit`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
j'ai fait une tentative de jointure, je pense qu'elle fonctionne mais j'affiche avec un while et je crois commencer a comprendre qu'il faut un foreach !!
voici mon code avec 2 ou 3 explications:
<form action="el1_exec.php" method="post">
<fieldset>
<legend>Uploade</legend>
<div>
<label>Grand Prix</label>
<div>
<select name="id_gp">
<?php
try
{
// connexion bdd
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// jointure pour mes 2 tables: grand prix (gp) et circuit (ci)
$reponse = $bdd->query('SELECT
gp.id_gp AS id_gp,
gp.id_circuit AS gp_id_circuit,
ci.id_circuit AS id_circuit,
ci.circuit AS circuit
FROM grand_prix AS gp
LEFT OUTER JOIN circuit ci ON gp.id_circuit = ci.id_circuit
');
while ($donnees = $reponse->fetch())
{
?>
<!-- select html pour avoir l'id du grand prix comme valeur pour la bdd
en affichant le nom du circuit, ca ca marche bien -->
<option value="<?php echo $donnees['id_gp']; ?>" name="id_gp">
<!-- ici j'ai bien le nom du circuit dans donc je pense que la jointure fonctionne bien -->
<?php echo stripcslashes($donnees['circuit']); ?>
</option>
<?php
}
$reponse->closeCursor();
// tentative de récupération de l'id_circuit mais ne fnctionne pas !!!!
// je pense que c'est parce que je ne suis pas dans la boucle
// j'ai voulu déclarer $circuit pour l'input citué plus bas.
$circuit = $donnees['id_circuit'];
?>
</select>
</div>
</div>
<div>
<label>Essai 1</label>
<div>
<!-- l'input suivant ne fonctionne pas non plus et je n'enregistre pas l'id du circuit en bdd
encore une fois je pense que la raison est la boucle -->
<input type="hidden" name="id_circuit" value="<?php echo $circuit ?>"/>
<input type="submit" class="btn btn-inverse" name="envoyer" value="Envoyer" />
</div>
</div>
</fieldset>
</form>
et je veux enregistrer dans cette table:
--
-- Structure de la table `el1`
--
CREATE TABLE IF NOT EXISTS `el1` (
`id_el1` int(11) NOT NULL AUTO_INCREMENT,
`lien` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`id_gp` int(11) NOT NULL,
`id_circuit` int(11) NOT NULL,
`member_id` int(11) NOT NULL,
PRIMARY KEY (`id_el1`),
KEY `fk_el1_grand_prix1` (`id_gp`),
KEY `fk_el1_members1` (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=18 ;
je pense donc que mon soucis est la boucle, j'ai lu sur le site du zéro mais j’avoue que j'ai un peut de mal a comprendre la mise en place de la boucle foreach, si quelqu'un peut m'aidé a mieux comprendre, je l'en remercie d'avance...
merci, a plus.
voila, j'ai un formulaire pour enregistrer dans une table el1 des liens vers des vidéos de grand prix,
j'ai une bdd qui a plusieurs tables dont el1, grand_prix et circuit:
[sql]--
-- Structure de la table `grand_prix`
--
CREATE TABLE IF NOT EXISTS `grand_prix` (
`id_gp` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL,
`id_pays` int(11) NOT NULL,
`id_ville` int(11) NOT NULL,
`id_circuit` int(11) NOT NULL,
PRIMARY KEY (`id_gp`),
KEY `fk_grand_prix_members` (`member_id`),
KEY `fk_grand_prix_pays1` (`id_pays`),
KEY `fk_grand_prix_ville1` (`id_ville`),
KEY `fk_grand_prix_circuit1` (`id_circuit`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=26 ;
--
-- Structure de la table `circuit`
--
CREATE TABLE IF NOT EXISTS `circuit` (
`id_circuit` int(11) NOT NULL AUTO_INCREMENT,
`circuit` varchar(45) NOT NULL,
PRIMARY KEY (`id_circuit`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;[/sql]
j'ai fait une tentative de jointure, je pense qu'elle fonctionne mais j'affiche avec un while et je crois commencer a comprendre qu'il faut un foreach !!
voici mon code avec 2 ou 3 explications:
[php]<form action="el1_exec.php" method="post">
<fieldset>
<legend>Uploade</legend>
<div>
<label>Grand Prix</label>
<div>
<select name="id_gp">
<?php
try
{
// connexion bdd
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// jointure pour mes 2 tables: grand prix (gp) et circuit (ci)
$reponse = $bdd->query('SELECT
gp.id_gp AS id_gp,
gp.id_circuit AS gp_id_circuit,
ci.id_circuit AS id_circuit,
ci.circuit AS circuit
FROM grand_prix AS gp
LEFT OUTER JOIN circuit ci ON gp.id_circuit = ci.id_circuit
');
while ($donnees = $reponse->fetch())
{
?>
<!-- select html pour avoir l'id du grand prix comme valeur pour la bdd
en affichant le nom du circuit, ca ca marche bien -->
<option value="<?php echo $donnees['id_gp']; ?>" name="id_gp">
<!-- ici j'ai bien le nom du circuit dans donc je pense que la jointure fonctionne bien -->
<?php echo stripcslashes($donnees['circuit']); ?>
</option>
<?php
}
$reponse->closeCursor();
// tentative de récupération de l'id_circuit mais ne fnctionne pas !!!!
// je pense que c'est parce que je ne suis pas dans la boucle
// j'ai voulu déclarer $circuit pour l'input citué plus bas.
$circuit = $donnees['id_circuit'];
?>
</select>
</div>
</div>
<div>
<label>Essai 1</label>
<div>
<!-- l'input suivant ne fonctionne pas non plus et je n'enregistre pas l'id du circuit en bdd
encore une fois je pense que la raison est la boucle -->
<input type="hidden" name="id_circuit" value="<?php echo $circuit ?>"/>
<input type="submit" class="btn btn-inverse" name="envoyer" value="Envoyer" />
</div>
</div>
</fieldset>
</form>[/php]
et je veux enregistrer dans cette table:
[sql]--
-- Structure de la table `el1`
--
CREATE TABLE IF NOT EXISTS `el1` (
`id_el1` int(11) NOT NULL AUTO_INCREMENT,
`lien` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`id_gp` int(11) NOT NULL,
`id_circuit` int(11) NOT NULL,
`member_id` int(11) NOT NULL,
PRIMARY KEY (`id_el1`),
KEY `fk_el1_grand_prix1` (`id_gp`),
KEY `fk_el1_members1` (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=18 ;[/sql]
je pense donc que mon soucis est la boucle, j'ai lu sur le site du zéro mais j’avoue que j'ai un peut de mal a comprendre la mise en place de la boucle foreach, si quelqu'un peut m'aidé a mieux comprendre, je l'en remercie d'avance...
merci, a plus.