[RESOLU] Afficher information d'une colonne à partir des autres de la même ligne

Eléphanteau du PHP | 11 Messages

09 juil. 2015, 15:12

Salut !
J'aurais besoin d'une petite piste:
J'apprend le php depuis quelques jours (je n'ai que des notions à la base), après pas mal d'expérience en front end j'essaie de me mettre au back end pour aider ma boite, mais aujourd'hui j'ai un problème et je ne pense pas que ce soit très compliqué pour quelqu'un de confirmé.

Voilà le projet:

J'ai crée un formulaire, où l'on inscrit Nom, Prénom et un nombre d'heure. Ces informations vont sur la même table dans ma base de donnée.
J'utilise la colonne du nombre d'heure pour faire une somme que j'affiche sur le site. En tant que néophyte ça à pas été de la tarte mais j'y suis arrivé grâce aux nombreuses ressources dispo sur internet.

Mais là je coince, car ce que je dois faire, c'est pouvoir donner accès au nombre d'heure inscrit par quelqu'un à partir de son nom et prénom; Par exemple, si Marcel Duchamp a dit qu'il ferait 4 heures sur mon premier formulaire, il faut qu'il puisse retrouver ce chiffre en rentrant son nom et prénom quelque part.
Donc c'est pas un "espace membre" qu'il me faut, mais il faudrait que la base de donnée affiche le nombre se situant sur la même ligne que Nom/Prénom quand tu les rentre.

J'imagine que ça doit se passer en deux temps: d'abord un page ou on rentre Nom et Prénom, et le script envois sur une page qui t'affiche cette infos selon ce que t'as rentré.

Je sais pas si j'ai été clair, mais si quelqu'un peut me donner une piste je suis preneur !

Merci d'avoir lu :)

ViPHP
xTG
ViPHP | 7331 Messages

10 juil. 2015, 11:24

En effet tu fais un formulaire pour rentrer le nom et le prénom.
Dans la page de traitement tu auras une requête SQL de type SELECT qui portera comme condition WHERE ces deux champs et qui récupérera le nombre d'heure.
Il ne te reste plus qu'à l'afficher. ;)

https://dev.mysql.com/doc/refman/5.0/en/select.html

Eléphanteau du PHP | 11 Messages

10 juil. 2015, 14:47

Merci beaucoup ! Je vais tester ça, je met le topic en résolu car maintenant même si c'est galère je sais ou je vais :D

Merci encore !

Eléphanteau du PHP | 11 Messages

10 juil. 2015, 15:27

Au pire des cas, si tu passes par là, peut-être tu pourrais me dire ce que est faux dans mon code, je tente des trucs;

Donc ma première page pour qu'on rentre nom et prénom:

Code : Tout sélectionner

Entrez votre Prénom et Nom pour nous communiquer combien de temps vous avez couru !<br/> <form action="rcourse.php" method="post"> <p> Prénom: <input type="text" name="prenom" /> Nom: <input type="text" name="nom" /> <input type="submit" value="Valider" /> </p> </form>
Qui amène vers cette page:

Code : Tout sélectionner

<?php include("fcourse.php"); try { $bdd = new PDO('mysql:host=localhost;dbname=MaBase;charset=utf8', 'root', 'root'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $sql = "SELECT age FROM Utilisateurs WHERE nom LIKE 'echo $_POST['nom']'"; // ouais pas besoin de mettre "prenom" j"imagine que du moment que le nom est bon ça passe // age étant le nombre que je veux ressortir (en vrai c'est une heure) Utilisateurs ma table qui contient aussi "nom" et "prenom" $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); while($data = mysql_fetch_assoc($req)) { echo (int)$_POST['age']; // C'est ici que j'aimerai récup' mon nombre } mysql_close(); ?> <p>Merci de partager votre résultat !<br/>
Désolé mon code est surement très sale j'ai encore du mal avec la logique de ce langage haha

Eléphanteau du PHP | 15 Messages

10 juil. 2015, 15:46

Salut,

Compare avec ta solution, ça doit venir de là :

Code : Tout sélectionner

echo $data['age']
mysql_fetch_assoc te permet de récupérer le résultat de ta requête sous forme de tableau associatif. Le résultat de cette fonction est stocké dans ta variable $data : aucune raison d'aller chercher dans $_POST :)

Sinon pour la recherche par nom, effectivement ça va marcher. Mais il faut t'assurer que le nom soit unique, sinon tu pourra récupérer plus d'un résultat dans certains cas !

Mammouth du PHP | 688 Messages

10 juil. 2015, 15:55

$sql = "SELECT age FROM Utilisateurs WHERE nom LIKE 'echo $_POST['nom']'";
plutôt :
$sql = "SELECT age FROM Utilisateurs WHERE nom LIKE '".mysql_escape_string($_POST['nom'])."'";

Eléphanteau du PHP | 11 Messages

13 juil. 2015, 09:03

Merci beaucoup pour vos réponses !
Si jamais quelqu'un se sent encore l'âme de me donner un tuyaux, j'ai cette erreur quand je fais ma démarche:
"Erreur SQL !
SELECT age FROM Utilisateurs WHERE Nom LIKE 'joe'
No database selected
"
Mais j'ai bien "joe" dans ma base de donnée :mrgreen:

voilà mes deux fichiers:

Code : Tout sélectionner

Entrez votre Prénom et Nom pour nous communiquer combien de temps vous avez couru !<br/> <form action="test.php" method="post"> <p> Prénom: <input type="text" name="Prenom" /> Nom: <input type="text" name="Nom" /> <input type="submit" value="Valider" /> </p> </form>
test.php

Code : Tout sélectionner

<?php include("fcourse.php"); //fichier de connexion à ma base de donnée (peut être useless vu que je me connecte après) try { $bdd = new PDO('mysql:host=localhost;dbname=MaBase;charset=utf8', 'root', 'root'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $sql = "SELECT age FROM Utilisateurs WHERE Nom LIKE '".mysql_escape_string($_POST['Nom'])."'"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); while($data = mysql_fetch_assoc($req)) { echo $_data['age']; } ?> Nous avons <strong> <?php echo $data['age'] ?></strong> heures de promesse de course !<br /> <p>Merci de partager votre résultat !<br/> <?php mysql_close(); ?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

13 juil. 2015, 09:23

Bonjour,

Tu mélanges l'utilisation de PDO et des fonctions mysql_*
Il faut que tu utilises PDO également pour passer tes requêtes et plus mysql_query()
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 11 Messages

13 juil. 2015, 09:42

Salut @rthur, merci de ta réponse rapide, et effectivement je confond beaucoup de chose, j'essaie de me documenter un maximum mais je t'avoue que c'est un peu compliqué pour moi.
Faut-il que j'utilise PDO comme ceci ?

Code : Tout sélectionner

$pdo->query('SELECT age FROM Utilisateurs WHERE Nom = \'echo $_POST['nom']\'');