PHP|Débutant :: Forums

Advertisement

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

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

#1 03-05-2010 08:20:23

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

URL et consultation d'une base de données sql

Bonjour
j'ai une base de données SQL que j'arrive à interroger sans souci par PHP. L'affichage se fait sous forme de tableau, qui affiche tous les résultats trouvés.
Mais, comme ma table contient une trentaine de champs, je souhaiterais faire l'affichage en 2 temps:
1- on affiche les résultats dans un tableau selon le critère sélectionné et dans ce cas, seuls 4 champs sont affichés (nom, prénom, école, société). --> fonction while
2- on clique sur un des noms affichés dans le tableau de résultat (sous forme d'URL ou sous forme d'un bouton "Voir") et on affiche tous les champs de la personne sélectionnée. --> ???

Je bloque sur la procédure à utiliser. J'ai essayé plusieurs choses, sans succès jusqu'à présent.
- j'ai tenté le href avec lien sur la BdD fonction de l'id de la personne sélectionnée
- j'ai tenté de mettre un bouton "Voir" mais je ne sais pas comment différencier chaque bouton si j'ai plusieurs résultat, notamment en utilisant un $isset de chaque bouton
- j'ai tenté d'utiliser la fonction onclick mais je ne vois pas comment récupérer l'id de mon utilisateur une fois qu'il est affiché et je ne suis pas très fort en Javascript.

J'ai actuellement ce code, qui m'affiche bien mon nom sous forme dURL. Dans ma table, chaque utilisateur est notamment repéré par un id et j pense que c'est par là que se trouve la soluce ...

PS: Je souhaite avoir tout le code dans ma page php et ne pas faire faire appel à une autre page.


<?php
if(isset($_POST['envoi']))
{
  /* Récupération des donné du formulaire */
   
  $nom = htmlentities($_POST['nom']);
  $ecole = htmlentities($_POST['ecole']);
  $societe = htmlentities($_POST['societe']);
   
  // Connexion à la BdD
  $db = mysql_connect('localhost', 'root', '') or die (mysql_error());
  // Sélectionner la base de données DB_annuaire comme la base courante
  $db_selected = mysql_select_db('DB_annuaire', $db);
  mysql_set_charset("utf8", $db);

  if (!$db_selected)
  {
  die ('Impossible de sélectionner la base de données : ' . mysql_error());
  }
  else
  {
  $query = "";
  $result = "";
  $row = "";
  $Nombre = "";

  if (!empty($nom))
  {
  if (!empty($ecole))
  {
  if (!empty($societe))
  {
  print "recherche nom+école+société";
  }
  else
  {
  print "recherche nom+ école";
  }
  }
  else
               {
  // Connexion à la BdD
  $db = mysql_connect('localhost', 'root', '') or die (mysql_error());
  // Sélectionner la base de données DB_annuaire comme la base courante
  $db_selected = mysql_select_db('DB_annuaire', $db);
  mysql_set_charset( 'utf8' );

  if (!$db_selected)
  {
  die ('Impossible de sélectionner la base de données : ' . mysql_error());
  }
  else  // Vérif pas déjà inscrit (nom + prénom)
  {
  $bdd = new PDO('mysql:host=localhost; dbname=DB_annuaire','root','');
  $req = $bdd->prepare('SELECT * FROM jos_annuaire WHERE nom = ?');
  $req->execute(array($nom));// Requête SQL
  $nb_resultats = $req->rowCount();

  if ($nb_resultats == 0) //s'il n'y a pas de résultat
  {
  print 'aucun resultat.';
  }
  else //il y a au moins un résultat
  {
  ?>
  <table align="center" cellPadding="6" cellspacing="0" border="1">
  <thead>
  <tr>
  <td noWrap class="ligne_foncee">
   <font style="font-size: 10pt; color: #FFFFFF; font-weight: bold; font-family: Verdana, Helvetica, Arial, Tahoma">Nom</font>
   </td>
  <td noWrap class="ligne_foncee">
  <font style="font-size: 10pt; color: #FFFFFF; font-weight: bold; font-family: Verdana, Helvetica, Arial, Tahoma">Prénom</font>
  </td>
   <td noWrap class="ligne_foncee">
  <font style="font-size: 10pt; color: #FFFFFF; font-weight: bold; font-family: Verdana, Helvetica, Arial, Tahoma">Ecole</font>
  </td>
  <td noWrap class="ligne_foncee">
  <font style="font-size: 10pt; color: #FFFFFF; font-weight: bold; font-family: Verdana, Helvetica, Arial, Tahoma">Société</font>
  </td>
  </tr>
  </thead>     
  <?php

  echo 'Il y a ' . $nb_resultats . ' membre(s) répondant à votre recherche.<br /><br />'; //nombre de résultats

  while ($donnees = $req->fetch())
  {
  ?>
  <tr>             
               <td noWrap class="ligne_claire">            
               <font style="font-size: 10pt; color: #000000; font-family: Verdana, Helvetica, Arial, Tahoma"><a href="<?php $affichage ?>?id=<?php=$donnees[html_entity_decode('id')]?>"><?php echo $nom;?></a> </font>
  </td>
  <td noWrap  class="ligne_claire">
  <font style="font-size: 10pt; color: #000000; font-family: Verdana, Helvetica, Arial, Tahoma"><?php echo $donnees[html_entity_decode('prenom')]; ?></font>
  </td>
  <td noWrap class="ligne_claire">
  <font style="font-size: 10pt; color: #000000; font-family: Verdana, Helvetica, Arial, Tahoma"><?php echo $donnees[html_entity_decode('ecole1')];?><br/> <?php echo $donnees[html_entity_decode('ecole2')] ; ?></font>
  </td>
  <td noWrap class="ligne_claire">
  <font style="font-size: 10pt; color: #000000; font-family: Verdana, Helvetica, Arial, Tahoma"><?php echo $donnees[html_entity_decode('societe')];?></font>
  </td>
  </tr>

  <?php
  }
  ?>
  </table>
  <?php
  }
 

Hors ligne

#2 03-05-2010 09:30:00

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : URL et consultation d'une base de données sql

si tu utilises pdo, bah, fait le totalement ou pas du tout wink
tu ouvres et sélectionnes avec les fonctions standarts wink

a++

Hors ligne

#3 03-05-2010 09:47:14

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

Re : URL et consultation d'une base de données sql

désolé mais je ne vois pas de quoi tu parles ... sad
J'utilise PDO partout ... et je ne vois pas en quoi ça va m'aider à résoudre mon problème. Ou alors je ne suis pas réveillé
!!!:/

Hors ligne

#4 03-05-2010 10:47:42

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : URL et consultation d'une base de données sql

mysql_connect('localhost', 'root', '')

ca, c'est PDO ????

a++

Hors ligne

#5 03-05-2010 10:55:33

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

Re : URL et consultation d'une base de données sql

exact ... Mea culpa. Mais pour en revenir à ma question d'origine, PDO ou pas (je suis ouvert aux deux options), as-tu une idée pour me faire avancer ? Je sèche depuis 2 jours ...:(

Hors ligne

#6 03-05-2010 11:00:30

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

Re : URL et consultation d'une base de données sql

Je ne comprends pas où est ton soucis ....

Apparemment, tu as mis ton lien (dynamisé semble-t-il) sous le nom...

As-tu crée la page d'affichage des infos complète ?? avec basiquement un $_GET['id'] ??


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

Hors ligne

#7 03-05-2010 11:04:20

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

Re : URL et consultation d'une base de données sql

oui, j'ai créé le code d'affichage mais je n'arrive pas à passer l'id de l'utilisateur. Plus exactement, si ma première requête sort 10 résultats, je ne vois pas comment, en cliquant sur lien dynamique (déjà créé), je puisse récupérer l'id spécifique à chacune des lignes. Faut-il que j'utilise la fonction ISSET, onClick (mais je passe au Javascript), autre solution à laquelle je n'aurai pas pensé ?

Ci-dessous le code en question. Merci de ton aide, si tu as une idée

<?php

  $id=$_GET['id'];

  $bdd = new PDO('mysql:host=localhost; dbname=DB_annuaire','root','');
  $req = $bdd->prepare('SELECT * FROM jos_annuaire WHERE id= ?');
  $req->execute(array($id));// Requête SQL
  $donnees = $req->fetch();

?>
  <table align="center" cellPadding="4" cellspacing="0">
    <form action="" method="post">
      <tr>
         <td noWrap class="ligne_foncee">
         <font style="font-size: 10pt; color: #FFFFFF; font-weight: bold; font-family: Verdana, Helvetica, Arial, Tahoma">Nom</font>
         </td>
         <td noWrap class="ligne_foncee">
         <font style="font-size: 10pt; color: #FFFFFF; font-weight: bold; font-family: Verdana, Helvetica, Arial, Tahoma">Prénom</font>
         </td>
         <td noWrap class="ligne_foncee">
         <font style="font-size: 10pt; color: #FFFFFF; font-weight: bold; font-family: Verdana, Helvetica, Arial, Tahoma">Année de naissance</font>
         </td>
         <td noWrap class="ligne_foncee">
         <font style="font-size: 10pt; color: #FFFFFF; font-weight: bold; font-family: Verdana, Helvetica, Arial, Tahoma">Nationalité</font>
         </td>
      </tr>

      <tr>
        <td noWrap class="ligne_claire">
          <font style="font-size: 10pt; color: #000000; font-family: Verdana, Helvetica, Arial, Tahoma"><?php echo $donnees[html_entity_decode('nom')]; ?></font>
        </td>
        <td noWrap  class="ligne_claire">
          <font style="font-size: 10pt; color: #000000; font-family: Verdana, Helvetica, Arial, Tahoma"><?php echo $donnees[html_entity_decode('prenom')]; ?></font>
        </td>
        <td noWrap class="ligne_claire">
          <font style="font-size: 10pt; color: #000000; font-family: Verdana, Helvetica, Arial, Tahoma"><?php echo $donnees[html_entity_decode('datenaissance')];?></font>
        </td>
        <td noWrap class="ligne_claire">
          <font style="font-size: 10pt; color: #000000; font-family: Verdana, Helvetica, Arial, Tahoma"><?php echo $donnees[html_entity_decode('nationalite')]; ?></font>
        </td>
      <tr>
    </form>
  </table>

Dernière modification par frlobe (03-05-2010 11:46:42)

Hors ligne

#8 03-05-2010 13:26:56

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : URL et consultation d'une base de données sql

Ton code de première page devrait correctement te créer tes liens dynamiques.
La récupération se fait bien sur ton second code (même s'il n'est pas sécurisé) et donc un affichage devrait avoir lieu.
Bref je suis de même, je ne comprend pas ton problème. hmm

Hors ligne

#9 03-05-2010 13:44:56

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

Re : URL et consultation d'une base de données sql

ça me rassure ... même si je n'ai toujours pas de soluce ... Je continue de chercher. Je vais bien y arriver un jour, même dans 10 ans !!! tongue

Hors ligne

#10 03-05-2010 14:11:32

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : URL et consultation d'une base de données sql

Hum enfin si j'avais mal lu...

<?php=$donnees[html_entity_decode('id')]?>

Ce serait pas plutôt :

<?php echo html_entity_decode($donnees['id']); ?>

Et de même pour les autres champs.

Par ce que d'une part html_entity_decode() sur la clé ne sert pas à grand chose, donc je suppose que tu le voulais sur la variable, et enfin je me demande pouruqoi il ne te génère pas d'erreur avec la syntaxe "<?php=$variable?>. M'enfin peut être une syntaxe que je ne connais pas.

Hors ligne

#11 03-05-2010 14:26:44

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

Re : URL et consultation d'une base de données sql

merci de ton retour. J'ai fini apr avancer un peu ... J'arrive à avoir une URL qui fonctionne comme une URL big_smile
Mais quand je clique sur la-dite URL, je sors de mon script pour aller sur index.php?id="celui qui est récupéré". Or je veux rester dans le même script et passer dans mon code: if (isset($_GET['id']))

Voila le code que j'ai actuellement. Je pense que ça vient du echo $_SERVER['PHP_SELF']; mais je ne vois pas par quoi le remplacer. SI je le supprime, ça me fait la même chose ...
Merci encore


<?php
while ($donnees = $req->fetch())
{
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?id=<?php echo htmlspecialchars($donnees['id']); ?>"><?php echo htmlspecialchars($donnees['contact']); ?></a> </font>
};
if (isset($_GET['id'])) //affichage détaillé d'un membre de l'annuaire
{
$id=$_GET['id'];
print $id;
}
?>
 

Hors ligne

#12 03-05-2010 14:37:52

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : URL et consultation d'une base de données sql

L'url de ta première page est-elle une url simple ? (comme index.php ou page.php)
Ou bien une url composée ? (index.php?page=mapage)

Car $_SERVER['PHP_SELF'] ne contient que le nom du script et ne comprend pas les arguments.

Hors ligne

#13 03-05-2010 14:45:48

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

Re : URL et consultation d'une base de données sql

l'url est une url simple.
En fait, j'ai un fichier emploi.php pour le code d'origine. Il n'y a aucun include dans mon code. Pour le moment, je ne "joue" qu'avec des if(isset) ou if($_get). Donc je reste dans la même page de code et je ne veux pas en bouger.

J'ai ma boucle while PUIS mon if($_get($id)). Sauf que le code ne rentre pas dans le if($_get)) car il sort de la page pour aller ailleurs ... Si je supprimer le  $_SERVER['PHP_SELF'] (qui me faisait aller là:  http://localhost/SOFIOM/index.php?opti [...] d=8&Itemid=15), je sors aussi du code de ce fichier pour aller là:  localhost/association/?id=2?id="l'id trouvé et qui est juste" (je pensais que cette commande reloadait la même page ...)

Hors ligne

#14 03-05-2010 14:46:45

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : URL et consultation d'une base de données sql

je répare ce qui me semble gros wink
tu t'es mélangé les pinceau dans les balises wink

[code : php]
<?php
    while ($donnees = $req->fetch())
    {
?>
    <a href="<?php echo $_SERVER['PHP_SELF']; ?>?id=<?php echo htmlspecialchars($donnees['id']); ?>"><?php echo htmlspecialchars($donnees['contact']); ?></a> </font>
<?php
    if (isset($_GET['id'])) {
    $id=$_GET['id'];
    print $id;
}
?>
[/code]

a++

Hors ligne

#15 03-05-2010 14:53:00

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

Re : URL et consultation d'une base de données sql

merci: j'ai pu me mélanger les pinceaux: il est 1 heure du mat' pour moi ...
Mais ça ne fonctionne pas mieux ... Le code m'envoie toujours une url à la mord-moi-le-noeud ...

Hors ligne

#16 03-05-2010 14:56:26

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

Re : URL et consultation d'une base de données sql

Attention !

Ton $_SERVER['PHP_SELF'] peut te renvoyer des surprises

Tente avec un chemin "en dur" ou alors même, juste avec :


<a href="?id=<?php echo htmlspecialchars($donnees['id']); ?>"><?php echo htmlspecialchars($donnees['contact']); ?></a>
 

Et si jamais tu avais déjà des transmissions de variable via l'url, remplace ?id par &id


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

Hors ligne

#17 03-05-2010 23:06:29

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : URL et consultation d'une base de données sql

Bonsoir,

En ce qui me concerne je vais revenir au post initial et ce que j'en ai compris.
1) Tu ouvres une requête "complète" en terme de contenu
2) tu en affiche qu'une petite partie
3) sur selection unique dans le 2) tu affiche le reste de la requête pour la selection.

Si c'est bien ca que tu veux faire alors saches que :
1) à moins d'utiliser PDO et d'être sur un serveur dédié, tu n'auras pas accès ni ne pourra gérer les connexions persistantes sur ta bases de données.
2) Tu es donc obligé d'utiliser 2 requêtes mySQL pour faire ce que tu souhaites : la première pour ta première partie et la seconde qui va chercher les infos de ta sélection.

Voilà.

Dernière modification par Jc (03-05-2010 23:07:02)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#18 03-05-2010 23:24:03

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

Re : URL et consultation d'une base de données sql

mon fichier emploi.php est composé d'une succesion de if(isset) car j'ai plusieurs possibilité (recherche d'annonce, dépôt d'annonce notamment). Donc si je sélectionne recherche d'annonce, mon script entre dans un if(isset($_post)), recherche dans la BdD et affiche les résultats trouvés avec 3 champs pour chaque annonce listée. Je sors du if(isset).
Si je clique sur un des liens du tableau, je pense qu'il faut "relancer "emploi.php" et entrer dans un if(isset ($_get('id'))), avec l'ide qui aura récupéré dans l'URL du tableau. Sauf que ça ne marche pas car le fichier emploi.php ne se relance pas comme pour les i(isset($_post)).
Vu que j'utilise un 2ème if(isset() avec le get, je relance une recherche sur ma BdD. Mais il faudrait déjà que j'arrive à rentrer dans cette satanée boucle !!!

PS: vu que je code sous Joomla et Jumi, est-ce que ça change des choses ?

Par contre, pour le serveur PDO, il faut que je me renseigne auprès de mon hébergeur (je n'y avais pas pensé ...). hmm

Hors ligne

#19 04-05-2010 00:32:37

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : URL et consultation d'une base de données sql

Vu que tu codes sous Joomla ca change les choses en effet car joomla utilise son propre système évènementiel au sein des classes. D'ailleurs c'est par là qu'il faut que tu cherches pour recharger ta page comme pour les $_post.
=> Go Lire la documentation joomla^^


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#20 04-05-2010 03:22:31

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

Re : URL et consultation d'une base de données sql

OK merci. Je vais retourner lire Joomla. Mais tous mes $post fonctionnent à ce jour ... sauf celui là ...:(
A plus

Hors ligne

#21 06-05-2010 01:59:23

frlobe
Membre
Lieu : Nouméa - 98
Inscription : 03-05-2010
Messages : 14

Re : URL et consultation d'une base de données sql

Bon, j'ai finalement résolu mon problème en le contournant: j'utilise un bouton "voir" qui transmet ma variable.

Hors ligne

Pied de page des forums