Php

Résolu
Bonjour,
Mon script marche tres bien pour afficher toute les donnnées de ma table mysql
maintenant je voudrais pouvoir afficher les données d'une personne sur la page via un moteur de recherche
pouvez vous nm 'aider

<?php
    //connection au serveur:
    $cnx = mysql_connect( "localhost", "root", "" ) ;
  
    //sélection de la base de données:
    $db = mysql_select_db( "fuaj" ) ;
  
    //requête SQL:
    $sql = "SELECT *
	      FROM spip_fuaj_adherents
	      ORDER BY nom" ;
  
    //exécution de la requête:
    $requete = mysql_query( $sql, $cnx ) ;
  
    //affichage des données:
echo "<table align='center'><tr><td>Nom</td><td&g­t;Prénom</td><td>Email</td></tr>&quo­t;;
    while( $result = mysql_fetch_object( $requete ) )
    {
       echo("<tr><td>".$result->nom."­</td><td> ".$result->prenom."</td><td>".­$result->email."</td><td><a href=\"modification2.php?id_adherent=".$result->­;id_adherent."\">modifier</a></td>&­lt;/tr>\n") ;
    }

  ?>
<?php 
Configuration: Windows XP
Internet Explorer 7.0

11 réponses

  1. juste pour info , j 'ai creer une page sans aucune donné que j 'ai mise en ligne et j 'obtiens le code suivant
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML><HEAD>
    <META http-equiv=Content-Type content="text/html; charset=iso-8859-1"></HEAD>
    <BODY></BODY></HTML>
    1. Bonjour, si je comprends bien, tu veux un formulaire te permettant de trouver une personne dans ta base de donnée?

      Si c'est ça, c'est pas compliqué. Sur une première page, tu fait un formulaire avec un champ texte avec un

      <input name="recherche" type="text" />


      pour mettant le pseudo par exemple.

      Ensuite, sur une deuxième page tu récupère cette valeur:
      $membre = $_POST['recherche'];


      Tu continu en affichant les valeurs correspondant à cet valeur:

      $search = "SELECT * FROM #### WHERE login = '$membre'";


      login correspondant à la colonne de ta base où sont les pseudo des membres et #### étant ta table.

      Voici de quoi te mettre sur la piste.

      Cordialement


      1. mais ca ne marche pas
        <?php
        //connection au serveur:
        $cnx = mysql_connect( "localhost", "root", "" ) ;

        //sélection de la base de données:
        $db = mysql_select_db( "fuaj" ) ;

        //requête SQL:
        $sql = "SELECT *
        FROM
        ORDER BY nom" ;
        $search = "SELECT * FROM spip_fuaj_adherents WHERE nom = '$membre'";
        //exécution de la requête:
        $membre = $_POST['recherche'];

        //affichage des données:
        echo "<table align='center'><tr><td>Nom</td><td>Prénom</td><td>Email</td></tr>";
        while( $result = mysql_fetch_object( $requete ) )
        {
        echo("<tr><td>".$result->nom."</td><td> ".$result->prenom."</td><td>".$result->email."</td><td><a href=\"modification2.php?id_adherent=".$result->id_adherent."\">modifier</a></td></tr>\n") ;
        }

        ?>
        <?php
      2. @artheziusce script m'affiche tjs le premier eregistrement de la base , quelques sois le nom que je tape

        <form method="POST" action="modificationsearch.php">
        
                        <td colspan=2>Nom</td>
        
                        <input type="text" name="nom" size="20">
                        <input type="submit" value="rechercher">
        </form>
          <?php
            //connection au serveur:
            $cnx = mysql_connect( "localhost", "AdminSql", "nLgX62kmAT" ) ;
          
            //sélection de la base de données:
            $db = mysql_select_db( "fuaj" ) ;
        	
            //requête SQL:
            $sql = "SELECT *
        	      FROM spip_fuaj_adherents" ;
          
            //exécution de la requête:
            $requete = mysql_query( $sql, $cnx ) ;
          
            //affichage des données:
        echo "<table align='center'><tr><td>Nom</td><td>Prénom</td><td>Email</td></tr>";
            if( $result = mysql_fetch_object( $requete ) )
            {
               echo("<tr><td>".$result->nom."</td><td> ".$result->prenom."</td><td>".$result->email."</td><td><a href=\"modification2.php?id_adherent=".$result->id_adherent."\">modifier</a></td></tr>\n") ;
            }
        
          ?>
        <?php 
      3. @jaydailfrFaut que tu met :

        $sql = "SELECT *   FROM spip_fuaj_adherents WHERE pseudo='$pseudo'"


        et avant ça, en debut de page par exemple

        $pseudo = $_POST['pseudo'];
      4. @artheziusTu peux carrément mettre $sql = "SELECT * FROM spip_fuaj_adherents WHERE pseudo='$_POST['pseudo']'" lol. Mais il faut pas oublier de le "sanitize" avant pour empêcher les injections MYSQL.

        Genre:
        $_POST['pseudo'] = mysql_real_escape_string($_POST['pseudo'],ENT_QUOTES);
        $sql = "SELECT * FROM spip_fuaj_adherents WHERE pseudo='$_POST['pseudo']'";
    2. je n 'obtiens que le nom , pas le reste des champs
        <?php
          //connection au serveur:
          $cnx = mysql_connect( "localhost", "root", "" ) ;
        
          //sélection de la base de données:
          $db = mysql_select_db( "fuaj" ) ;
      	$nom = $_POST['nom'];
          //requête SQL:
          $sql = $sql = "SELECT *   FROM spip_fuaj_adherents WHERE nom='$nom'";
        
          //exécution de la requête:
          $requete = mysql_query( $sql, $cnx ) ;
        
      $query = "SELECT * FROM spip_fuaj_adherents WHERE nom='".$_POST['nom']."'"; 
      
      $result = mysql_query($query) or die(mysql_error()); 
      
      $row = mysql_fetch_array($result); 
      
      echo $row['nom'];
        ?>
      <?php 
      1. Ben ouai mais bon, t'es pas fort fort non plus sur la logique toi. PTDR. Une indication ;)

        echo $row['ICI JE METS N'IMPORTE QUEL NOM DE CHAMP DE MA TABLE!!!!!!!!!!!!!!!!!!!!!'];

        Et change ta ligne:
        $nom = $_POST['nom'];
        Pour
        $nom = mysql_real_escape_string($_POST['nom'],ENT_QUOTES);

        Sinon, bonjour les failles.
      2. @X-Fanecho $row['ICI JE METS N'IMPORTE QUEL NOM DE CHAMP DE MA TABLE!!!!!!!!!!!!!!!!!!!!!'];
        oui ca j 'avais compris , mais
        echo $row['nom''prenom'];
        ne marche pas
      3. @jaydailfrMais non tu les mets pas ensemble. Ils doivent être séparer.

        echo $row['nom'].$row['prenom'];
      4. @X-Fanvoila tout mon code , mais j'obtiens juste le nom sur ma page ??

        <form method="POST" action="modificationsearch.php">
        
                        <td colspan=2>Nom</td>
        
                        <input type="text" name="nom" size="20">
                        <input type="submit" value="rechercher">
        </form>
          <?php
            //connection au serveur:
            $cnx = mysql_connect( "localhost", "root", "" ) ;
          
            //sélection de la base de données:
            $db = mysql_select_db( "fuaj" ) ;
        	$nom = mysql_real_escape_string($_POST['nom'],ENT_QUOTES); 
            //requête SQL:
        
         $sql = $sql = "SELECT *   FROM spip_fuaj_adherents WHERE nom='$nom'";
          
            //exécution de la requête:
            $requete = mysql_query( $sql, $cnx ) ;
          
        $query = "SELECT * FROM spip_fuaj_adherents WHERE nom='".$_POST['nom']."'"; 
        
        $result = mysql_query($query) or die(mysql_error()); 
        
        $row = mysql_fetch_array($result); 
        
        echo $row['nom'].$row['prenom']; 
          ?>
        <?php 
    3. <?php
      //connection au serveur:
      $cnx = mysql_connect( "localhost", "root", "" ) ;
      //sélection de la base de données:
      $db = mysql_select_db( "fuaj" ) ;

      $nom = mysql_real_escape_string($_POST['nom'],ENT_QUOTES);

      $query = "SELECT * FROM spip_fuaj_adherents WHERE nom='".$nom."'";

      $result = mysql_query($query) or die(mysql_error());

      $row = mysql_fetch_array($result);

      echo $row['nom'].' '.$row['prenom'];
      ?>
      1. page blanche
      2. @jaydailfrComment s'appelle le fichier qui contient ton formulaire?
      3. @jaydailfrCe serait bien que le code php indiqué plus haut soit donc placé dans modificationsearch.php sinon il ne sert à rien puisque la ligne suivante indique que les informations sont envoyées là-bas et non vers l'accueil:
        action="modificationsearch.php"
    4. c 'est le cas

      accueil.php
       <form method="POST" action="modificationsearch.php">
      
                      <td colspan=2>Nom</td>
      
                      <input type="text" name="nom" size="20">
                      <input type="submit" value="nom">
      </form>
      
      modificationsearch.php
        <?php
          //connection au serveur:
          $cnx = mysql_connect( "localhost", "root", "" ) ;
        
      //sélection de la base de données: 
      $db = mysql_select_db( "fuaj" ) ; 
      
      $nom = mysql_real_escape_string($_POST['nom'],ENT_QUOTES); 
      
      $query = "SELECT * FROM spip_fuaj_adherents WHERE nom='".$nom."'"; 
      
      $result = mysql_query($query) or die(mysql_error()); 
      
      $row = mysql_fetch_array($result); 
      
      echo $row['nom'].' '.$row['prenom']; 
      ?> 
      1. Tu as entré un nom qui est bien dans la BD et le prénom qui y est rattaché est bien là lui aussi?
        1. oui , mais tjs rien d'affiche
      2. Un petit conseil:

        plutot que de faire un WHERE champ= 'truc', utilise WHERE champ like '% truc %'.

        Ca évite à l'utilisateur de taper le pseudo exact pour le trouver:

        Dans l'exemple que je viens de donner, si tu as un champ qui contient 'trucs' ou encore 'gnatrucgnagna', la première méthode ne le trouvera pas, alors que la deuxième oui :)

        Regarde aussi si ta base SQL est case sensitive (a priori je ne pense pas).

        Bonne journée.
        1. j 'ai change mon code

          message Connexion a la base impossible

          d
          <?php
          $host = "localhost";
          
          $user = "xxxx";
          
          $password = "xxx";
          
          $bdd = "spip_fuaj_adherents";
          
          mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
          
          // on choisit la bonne base
          mysql_select_db($bdd) or die ("Connexion a la base impossible");
          
          echo "
          <html>
          
          <head>
          
          <title>Résultat de la recherche</title>
          
          </head>
          
          <body>";
          
          if (($Mot == "")||($Mot == "%")) {
          // Si aucun mot clé n'a été saisi,
          // le script demande à l'utilisateur
          // de bien vouloir préciser un mot clé
          
          	echo "
          	Veuillez entrer un mot clé s'il vous plaît!
          	<p>";
          
          }
          
          else {
          // On selectionne les enregistrements contenant le mot clé
          // dans les keywords ou le titre
          	$query = "SELECT spip_fuaj_adherents FROM search
          	WHERE nom LIKE \"%$Mot%\"
          	OR prenom LIKE \"%$Mot%\"
          	";
          
          	$result = mysql_query($query);
          
          	$row = mysql_fetch_row($result);
          
          	$Nombre = $row[0];
          
          // Si aucun enregistrement n'est retourné,
          // on affiche un message adéquat
          if ($Nombre == "0") {
          	echo "
          	<h2>Aucun résultat ne correspond à votre recherche</h2>
          
          	<p>
          
          	";
          
          }
          
          // Sinon, on affiche le nombre d'enregistrements correspondant
          // et les résultats eux-mêmes
          else {
          	$query = "SELECT spip_fuaj_adherents FROM search
          	WHERE nom LIKE \"%$Mot%\"
          	OR prenom LIKE \"%$Mot%\" ORDER by prenom ASC";
          
          	$result = mysql_query($query);
          
          	// Si un seul enregistrement est trouvé, on affiche un message au singulier
          	if ($Nombre == "1") {
          	echo "
          	<a name=\"#resultat\"><h2>Résultat: Un article trouvé</h2></a>
          
          	<p>";
          
          	}
          	// Dans le cas contraire le message est au pluriel...
          	else {
          	echo "
          	<a name=\"#resultat\"><h2>Résultat: $Nombre articles trouvés</h2></a>
          
          	<p>";
          
          	}
          	while($row = mysql_fetch_row($result))
          	{
          		echo "
          		<p>\n
          		<b>$row[2]</b>\n
          		<br><a href=\"../$row[0]\">Visualiser l'article</a>\n
          		<p>\n
          		";
          
          	}
          }
          
          }
          
          // on ferme la base
          mysql_close();
          
          ?>
          
          </body>
          
          </html>
        2. @jaydailfrQu'est-ce que tu as changé? -.- je ne vais pas tout relire.

          ça ne peut pas venir des requêtes que tu viens de modifier.

          Retrouve ton erreur, on ne va pas tout faire pour toi: tu n'apprendras rien si à chaque fois que tu as une erreur tu viens demander d'où elle vient.

          En tout cas l'erreur
          Connexion a la base impossible 
          ne vient pas d'une mauvaise requête.
        3. @[o.o]REplayAh c'est clair qu'on s'en sortira pas surtout si le type modifie le code à toutes les 5 minutes en y rajoutant des fautes. LOL
        4. @X-Fanvoila , c 'est le bon, mais cela m'affiche une page blanche
          <?php
          mysql_connect( "localhost", "", "" ) ;
          mysql_select_db( "fuaj" ) ;

          if (isset ($_POST['Nom'])) $tmp = $_POST['Nom'];
          $sql = "SELECT * FROM spip_fuaj_adherents WHERE nom='$tmp'";
          $requete = mysql_query( $sql);
          echo "<table align='center'><tr><td>Nom</td><td>Prénom</td><td>Email</td></tr>";
          $result = mysql_fetch_object( $requete )
          echo("<tr><td>".$result->nom."</td><td> ".$result->prenom."</td><td>".$result->email."</td><td><a href=\"modification2.php?id_adherent=".$result->id_adherent."\">modifier</a></td></tr>\n") ;
          mysql_close();
          ?>
        5. @jaydailfrT'es sûr d'avoir ouvert ça avec un serveur apache?
      3. $sql = "SELECT * FROM spip_fuaj_adherents WHERE nom='".$tmp."'";

        change déjà la requête pour ça
        1. mais ca ne change tjs rien , tjs une page blanche
        2. @jaydailfrOk mais mets le pareil parce que ton "nom" c'est un varchar non?

          Ensuite, regarde le code source de la page qui est affichée pour voir s'il y a quelque chose. Parce que s'il y a rien, ça veut dire qu'il trouve même pas le fichier (path incorrect ou autre).
        3. @X-Fan<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML><HEAD>
          <META http-equiv=Content-Type content="text/html; charset=iso-8859-1"></HEAD>
          <BODY></BODY></HTML>
          voila ce qu j 'obtiens
        4. @jaydailfrc'est pas la bonne page alors parce que t'as jamais dit que tu mettais <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ni même le meta ni les majuscules. C'est pas la bonne page si tu veux mon avis.
        5. @X-Fansi pourtant ,

          mon formulaire accueill.php avec le code suivant
          <form method="post" action="modificationid.php">
          Recherche:<br>

          <input type="text" name="Nom" size="15">

          <input type="submit" value="tmp" alt="Lancer la recherche!">

          </form>

          la pade modificationid.php pour l 'affichage de la requete

          <html>
          <head>
          <title>modification de données en PHP :: partie 1</title>
          </head>
          <body>
          <?php
          mysql_connect( "localhost", "", "" ) ;
          mysql_select_db( "fuaj" ) ;

          if (isset ($_POST['Nom'])) $tmp = $_POST['Nom'];
          $sql = "SELECT * FROM spip_fuaj_adherents WHERE nom='".$tmp."'";
          $requete = mysql_query( $sql);
          echo "<table align='center'><tr><td>Nom</td><td>Prénom</td><td>Email</td></tr>";
          $result = mysql_fetch_object( $requete )
          echo "$requete";
          echo("<tr><td>".$result->nom."</td><td> ".$result->prenom."</td><td>".$result->email."</td><td><a href=\"modification2.php?id_adherent=".$result->id_adherent."\">modifier</a></td></tr>\n") ;
          mysql_close();
          ?>

          <?php

          </body>
          </html>
      4. Ça reste que c'est pas la bonne page parce que même si ton online ajoute des balises, tes balises titre, par exemple, ne sont plus là.

        EDIT: ajoute aussi un echo "salut"; sur ta page d'accueil voir si ça marche. Je suis carrément en train de me demander si t'as un hébergeur avec un serveur apache toi. O_O
        1. echo "salut"; sur la page accueil fonctionne , mais pas sur la page modificatioid.php
          1. créer une page test.php dans quoi tu mettras juste le code html normal et un echo "salut"; et dans ton formulaire tu le fais pointer sur test.php (juste pour voir si ça marche). Si il t'ouvre la bonne page est fonctionnel, alors on saura que le problème ne survient pas lors du clique sur le bouton.