Bonjour tout le monde, je présente mon problème qui est un petit problème mais compliqué a résoudre pour moi du moins.
Voici ma table produit :
Je vais essayé d'être le plus claire possible car c'est un peu complexe comme soucis.
Je commence par ma bdd le problème concerne 2 tables :
la table : Consoles
la table : Produits
Consoles contiens : id_consoles et nom
Produits contiens : id_produits, nom , description, prix .... id_consoles
il y a une jointure entre les 2 id_consoles de produits = id_consoles de consoles
lorsque j'ajoute un produit je lui attribue une console (PS1, PS2 ....) qui se situe dans la table Consoles.
Dans la table produit je récupère uniquement l'id consoles .
A partir de la je voudrais faire un update disons que le produit été sur PS2 et non sur PS1
du coup je récupère tout mes infos de la table produits
et pour récupéré l'ancienne console sur lequel été le produits je doit recup en selected le nom de consoles ou l'id_consoles de consoles = l'id_consoles de produits
voici mon formulaire d'ajout de produit :
<div id="consoles">
<label for="consoles">Le produit est une console ? si non sur quel support est le produit * :</label>
<select class="input " name="id_consoles" required>
<?php
// ici je récupère les consoles
//connection au serveur
$res = $bdd->query ('SELECT nom, id_consoles FROM consoles');
while ($donnees = $res->fetch())
{
?> <option value=<?php echo $donnees'id_consoles'] ;?>> <?php echo $donnees'nom'] ;?> </option><?php
}
$res->closeCursor();
?>
</select>
</div>
<br />
<div id="types">
<label for="Types">Types de produit * :</label>
<select class="input " name="id_types" required>
<?php
// ici je récupère les consoles
//connection au serveur
$res = $bdd->query ('SELECT nom, id_types FROM types');
while ($donnees = $res->fetch())
{
?> <option value=<?php echo $donnees'id_types'] ;?>> <?php echo $donnees'nom'] ;?> </option><?php
}
$res->closeCursor();
?>
</select>
</div>
<br />
<div id="genres">
<label for="Genres">Genres de produit * :</label>
<select class="input " name="id_genres" required>
<?php
// ici je récupère les genres
//connection au serveur
$res = $bdd->query ('SELECT nom, id_genres FROM genres');
while ($donnees = $res->fetch())
{
?> <option value=<?php echo $donnees'id_genres'] ;?>> <?php echo $donnees'nom'] ;?> </option><?php
}
$res->closeCursor();
?>
</select>
</div>
Merci d'avance c'est le dernier souci que j'ai avec mon projet à rendre cordialement,
Xander.
REUSSI j'avais pas fait la concaténation =)
<div id="consoles">
<label for="consoles">Le produit est une console ? si non sur quel support est le produit * :</label>
<select class="input " name="id_consoles" required>
<?php
$res = $bdd->query('SELECT * FROM produits WHERE id_produits = '.$id.'');
$pdonnees = $res->fetch();
$req = $bdd->query('SELECT nom, id_consoles FROM consoles WHERE id_consoles='.$pdonnees'id_consoles'] .'');
$donnees = $req->fetch();
?><option value=<?php echo $donnees'id_consoles'] ;?> selected="selected"> <?php echo $donnees'nom'] ;?> </option>
<?php
$resultat = $bdd->query('SELECT * FROM consoles');
while ($cdonnees = $resultat->fetch()) :
?> <option value=<?php echo $cdonnees'id_consoles'] ;?>> <?php echo $cdonnees'nom'] ;?> </option>
<?php endwhile ?>
</select>
</div>
Merci pour l'aide
J'ai essayé ceci mais cela ne fonctionne pas une idée quelqu’un plz ?
<?php
//connection au serveur
include ('includes/connexion_bdd.php');
?>
<div id="consoles">
<label for="consoles">Le produit est une console ? si non sur quel support est le produit * :</label>
<select class="input " name="id_consoles" required>
<?php
$prec = $bdd->query('SELECT consoles.nom, consoles.id_consoles, produits.id_produits, produits.id_consoles FROM consoles, produits WHERE consoles.id_consoles=produits.id_consoles AND produits.id_produits = $id');
$pdonnees = $prec->fetch();
?>
<option value="<?php echo $pdonnees'produits.id_consoles']; ?>" selected><?php echo $pdonnees'consoles.nom']; ?></option>
<?php
// ici je récupère les consoles
//connection au serveur
$res = $bdd->query ('SELECT nom, id_consoles FROM consoles');
while ($donnees = $res->fetch())
{
?> <option value=<?php echo $donnees'id_consoles'] ;?>> <?php echo $donnees'nom'] ;?> </option><?php
}
$res->closeCursor();
?>
</select>
</div>
voici une solution, mais qui comporte 2 erreurs que je ne trouve pas =s quelqu'un pourrais m'aider plz ?
<?php
// ici je récupère les consoles
//connection au serveur
$res = $bdd->query ('SELECT nom, id_consoles FROM consoles');
while ($donnees = $res->fetch()) {
echo ' <option value="'.$donnees'id_consoles'].'"
if( $pdonnees'produits.id_consoles'] == $donnees'id_consoles']) echo ' selected="selected";
echo '>'.$donnees'nom'].'</option>';
}
$res->closeCursor();
?>
erreur obtenue :
( ! ) SCREAM: Error suppression ignored for
( ! ) Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in F:\wamp\www\osg_test\editer_produits.php on line 84
Pour la dernière erreur tu as oublié un point virgule à la fin de ton echo (juste après ton while)
c'est plusieurs echo que j'ai voulue faire enfaîte dans le même echo et même en le fermant je garde les même erreurs
$res = $bdd->query('SELECT nom, id_consoles FROM consoles');
while ($donnees = $res->fetch()) {
?><option value="<?php echo $donnees'id_consoles']; ?>" <?php if($pdonnees'produits.id_consoles'] == $donnees'id_consoles']){ ?> selected="selected" <?php } ?> >
<?php echo $donnees'nom']; ?></option>
}
$res->closeCursor();
Essaye ça. /!\ Règle n°1 en php, quand on écrit du html en php, toujours écrire le html hors du php. Donc éviter les echo.
Dans ton code tu as des problèmes de guillemet simples, de points virgules, ect...
humm tu avait oublier de ré-ouvrir une balise php après fixation j'obtiens bien ma page mais dans mon select j'ai cette erreur la
( ! ) SCREAM: Error suppression ignored for
undefined variable pdonnees je pense que sa viens faite que on récupère pas produits.id_consoles dans une requete SQL je vais regardé sa dis moi se que tu en pense
j'ai essayé ceci sa m'affiche plus d'erreur mais j'obtiens du vide o lieu de ma list select
<?php
$res = $bdd->query('SELECT nom, id_consoles FROM consoles');
$res2 = $bdd->query('SELECT id_consoles FROM produits');
while ($donnees = $res->fetch() && $pdonnees = $res2->fetch()) {
?><option value="<?php echo $donnees'id_consoles']; ?>" <?php if($pdonnees'id_consoles'] == $donnees'id_consoles']){ ?> selected="selected" <?php } ?> >
<?php echo $donnees'nom']; ?></option>
<?php }
$res->closeCursor();
?>
Je pense que ça va pas de mettre ton while comme ça.
dans la boucle dis moi se que contiennent donnees et pdonnees ?
j'ai testé ceci pour voir se que je récupère, j'avais remarqué que il manqué id_produits=$id dans ma requête $res2
j'ai donc fait un test directement sur l'id
<?php
//connection au serveur
include ('includes/connexion_bdd.php');
$res = $bdd->query('SELECT nom, id_consoles FROM consoles');
$res2 = $bdd->query('SELECT * FROM produits WHERE id_produits = 78');
$donnees = $res->fetch();
$pdonnees = $res2->fetch();
$pdonnees'id_consoles'] == $donnees'id_consoles'];
echo ' donneesnom '.$donnees'nom'].'';
echo ' donneesidconsoles ' .$donnees'id_consoles'].'';
echo ' pdonnees ' .$pdonnees'id_consoles'].'';
$res->closeCursor();
?>
apprès petit correction j'obtiens :
donneesnom Consoles donneesidconsoles 1 pdonnees 4
Ce qui correspond a se que j'ai dans ma bdd :
petite optimisation du code en relisant mon post j'ai obtenue ceci :
<?php
//connection au serveur
include ('includes/connexion_bdd.php');
$res = $bdd->query('SELECT * FROM produits WHERE id_produits = 78');
$pdonnees = $res->fetch();
$req = $bdd->query('SELECT nom, id_consoles FROM consoles WHERE id_consoles='.$pdonnees'id_consoles'] .'');
$donnees = $req->fetch();
$pdonnees'id_consoles'] == $donnees'id_consoles'];
echo ' donneesnom '.$donnees'nom'].'';
echo ' donneidconsoles ' .$donnees'id_consoles'].'';
echo ' pdonnees ' .$pdonnees'id_consoles'].'';
$res->closeCursor();
?>
resultat :
donneesnom Playstation 3 donneidconsoles 4 pdonnees 4
je suis bloqué ici pour l'instant je pense que je suis proche du but
<?php
//connection au serveur
include ('includes/connexion_bdd.php');
?>
<div id="consoles">
<label for="consoles">Le produit est une console ? si non sur quel support est le produit * :</label>
<select class="input " name="id_consoles" required>
<?php
$res = $bdd->query('SELECT * FROM produits WHERE id_produits = $id');
$pdonnees = $res->fetch();
$req = $bdd->query('SELECT nom, id_consoles FROM consoles WHERE id_consoles='.$pdonnees'id_consoles'] .'');
while ($pdonnees = $res->fetch() && $donnees = $req->fetch()) {
?><option value="<?php echo $donnees'id_consoles']; ?>" <?php if($pdonnees'id_consoles'] == $donnees'id_consoles']){ ?> selected="selected" <?php } ?> >
<?php echo $donnees'nom']; ?></option>
<?php }
$res->closeCursor();
$req->closeCursor();
?>
</select>
</div>
j'ai pas de message d'erreur mais j'ai pas de résultat non plus un select vide et le reste de mon code n'est pas affiché
Je reprends ton truc:
Au début tu récupère toutes les informations sur un produit par rapport à un id
$res = $bdd->query('SELECT * FROM produits WHERE id_produits = $id');
$pdonnees = $res->fetch();
Donc $pdonnees contient les infos d'un seul produit.
Il est là ton problème. $pdonnees contient donc qu'un seul id_console. Donc le while après existe pas. Déjà repose bien se que tu veux avec se qui est possible.
c'est se que j’étais entrain de me dire aussi parce que ce que je veut au final c'est juste que la valeur par défaut soit le nom de la console ou l'id_consoles équivaut a celui du produit je vais bien reposé mon code je te tien informé de l'évolution
voila j'ai réussi mais il y a un problème : voici le code par défaut
<div id="consoles">
<label for="consoles">Le produit est une console ? si non sur quel support est le produit * :</label>
<select class="input " name="id_consoles" required>
<?php
$res = $bdd->query('SELECT * FROM produits WHERE id_produits = $id');
$pdonnees = $res->fetch();
$req = $bdd->query('SELECT nom, id_consoles FROM consoles WHERE id_consoles='.$pdonnees'id_consoles'] .'');
$donnees = $req->fetch();
?><option value=<?php echo $donnees'id_consoles'] ;?> selected="selected"> <?php echo $donnees'nom'] ;?> </option>
<?php
$resultat = $bdd->query('SELECT * FROM consoles');
while ($cdonnees = $resultat->fetch()) :
?> <option value=<?php echo $cdonnees'id_consoles'] ;?>> <?php echo $cdonnees'nom'] ;?> </option>
<?php endwhile ?>
</select>
</div>
il fonctionne pas car il me recupère pas le $id meme si je l'ai déclaré plus haut dans mon code : $id = $_GET'page'];
si je remplace $id par un id tel que 78 ici pour le produit concerné cela fonctionne. une idées ?