IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Champ de recherche multiple avec php mysql


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Par défaut Champ de recherche multiple avec php mysql
    Bonjour à tous !

    J'ai créer un moteur de recherche qui permet de rechercher plusieurs catégorie avec plusieurs champs.
    Une erreur sql n'arrête pas d'apparaître lors de l'exécution de mon script.
    S'il vous plait je demande votre assistance.

    Voici l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur SQL !DHEAT
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    Je vous donne l'ensemble de mon code pour vous permettre une meilleure compréhension. Merci beaucoup d'avance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    <?php
    //recherche des résultats dans la base de données$result = mysql_query( 'SELECT prenom
    if(isset($_GET['recherche'])){
    extract($_GET);
    $req = "SELECT `id`, `idsiteinterne`, `idsiteprovider`, `site_name`,  `adresseIP`, `service` FROM cyb_site WHERE 1=1 ";
     
    //Le WHERE 1=1 permet de pas s'embeter à savoir si le WHERE a déjà été mis ou pas après dans les différents "if isset..."
    //Ajout de la recherche sur le idsiteinterne s'il est renseigné
    if (isset($_POST['idsiteinterne'])) $req = $req & " AND idsiteinterne LIKE '%".htmlentities(trim($_post['idsiteinterne']))."%'";
     
    //Ajout de la recherche sur le idsiteprovider s'il est renseigné
    if (isset($_POST['idsiteprovider'])) $req = $req & " AND idsiteprovider LIKE '%".htmlentities(trim($_post['idsiteprovider']))."%'";
     
    //Ajout de la recherche sur site_name si elle est renseignée
    if (isset($_POST['site_name'])) $req = $req & " AND site_name LIKE '%".htmlentities(trim($_post['site_name']))."%'  ";
     
    if (isset($_POST['adresseIP'])) $req = $req & " AND adresseIP LIKE '%".htmlentities(trim($_post['adresseIP']))."%'  ";
     
    if (isset($_POST['service'])) $req = $req & " AND service LIKE '%".htmlentities(trim($_post['service']))."%'  ";
     
    $req = $req & " LIMIT 10";
     
     echo'<h4>Resultat de recherche</h4>';
     echo '<table>';
     echo '<tr>';
    	echo '<th class="td_seach_titre">N&deg;</th>';
    	echo '<th class="td_seach_titre">ID Provider</th>';
    	echo '<th class="td_seach_titre">ID Interne</th>';
    	echo '<th class="td_seach_titre">Etat du site</th>';
    	echo '<th class="td_seach_titre">Nom du site</th>';
    	echo '<th class="td_seach_titre">Adresse IP</th>';
    	echo '<th class="td_seach_titre">Service</th>';
    	echo '</tr>';
      echo '</table>';
     
    // affichage d'un message "pas de résultats"
    	//$result = mysql_query($req)
    echo $result = mysql_query($req)
    or die('Erreur SQL !'.$req.'<br /><b>'.mysql_error().'</b>');
     
    if (mysql_num_rows($result)==0)
    {
    ?>
        <h3 style="text-align:center; margin:10px 0;">Pas de r&eacute;sultats pour cette recherche</h3>
    <?php
    }
    else
    {
        // parcours et affichage des résultats
        while( $result = mysql_query($result))
        {
        ?>
     
     
            <div class="article-result">
    <table>
    			<tr>
    			<td class="id"><?php echo $post->id; ?></td>
    			<td class="td_seach"><a href="accueil.php?view=24&u='.$row['id'].'""><?php echo $post->idsiteinterne; ?></a></td>
    			<td class="td_seach"><?php echo $post->idsiteprovider; ?></td>
    			<td class="td_seach"><?php echo $post->idetatsite; ?></td>
    			<td class="td_seach"><?php echo $post->site_name; ?></td>
    			<td class="td_seach"><?php echo $post->adresseIP; ?></td>
    			<td class="td_seach"><?php echo $post->service; ?></td>
    			</tr></table>
    			</table>
            </div>
        <?php
        }
    }
    }
    ?>
    <div id="boxManage">
    <h4>Rechercher un site</h4>
    <p>Trouvez un site par son nom, sa date de cr&eacute;ation, son ID, son statut. </p>
    <form method="get" action="">
              <table width="480" border="0" class="right">
     
                <tr>
                  <td class="recherche_text"><label for="id_interne">ID interne</label></td>
                  <td > <input type="text" name="idsiteinterne" class="recherche" id="id_interne" value="<?php if (isset($_POST['idsiteinterne']))  echo htmlentities(trim($_POST['idsiteinterne'])); ?>"></td>
                </tr>
     
                <tr>
     
                  <td class="recherche_text"><label for="id_provider" >ID Provider</label></td>
                  <td >
                      <input type="text" name="idsiteprovider" class="recherche" id="id_provider" value="<?php if (isset($_POST['idsiteprovider']))  echo htmlentities(trim($_POST['idsiteprovider'])); ?>"></td>
                </tr>
     
                   <tr>
                   <td class="recherche_text"><label for="nom_du_site">Nom du site</label></td>
                  <td >
                      <input type="text" name="site_name" class="recherche" id="nom_du_site" value="<?php if (isset($_POST['site_name']))  echo htmlentities(trim($_POST['site_name'])); ?>"></td>
                </tr>
     
     <tr>
        <td class="recherche_text"> <label for="adresse_ip">Adresse IP</label></td>
                  <td >
                      <input type="text" name="adresseIP" class="recherche" id="adresse_ip" value="<?php if (isset($_POST['adresseIP']))  echo htmlentities(trim($_POST['adresseIP'])); ?>"></td>
                </tr>
     
     
                 <tr>
                  <td class="recherche_text">Statut</td>
                  <td class="seach_name" >
    			  <?php
    				$query = "SELECT * FROM `etat_site`";
    				$result = mysql_query($query);
    				echo '<SELECT  name="idetatsite"  class="recherche_select">';
    				while ($row = mysql_fetch_array($result)) {
    				echo '<OPTION>'.$row['etatsite'].'</OPTION>';
    				}
    				echo '</SELECT>';
    				?>
    			 </td>
                </tr>
                       <tr>
                             <td></td>
                             <td><input type="submit" name="recherche" class="recherche_submit" value="Rechercher" /></td>
                </tr>
    			</table>
     
    </form>
     
    </div>
     
    <div id="results"></div>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    "Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour le droit d'utiliser la syntaxe''près à la ligne 1"
    Affiche la requête $req, pour voir où est l'erreur.

    De plus, il est fortement recommandé d'utiliser mysql_real_escape_string() !

    [edit] en PHP, la concaténation se fait avec ".", pas avec "&" :
    $req = $req & " AND...
    => $req = $req . " AND...
    ou encore :
    => $req .= " AND...

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Je pense qu tu as un autre problème : pour échapper des valeurs destinées à mysql c'est mysql_real_escape_string() et non htmlentities() (je radote )

    Ensuite tu ne fais jamais un extract() sur le tableau global $_GET (brèche dans la sécurité)

    Par ailleurs, pour complèter la réponse de l'ami jreaux62, il est préférable de créer ta clause where en utilisant un tableau au lieu d'un critère du genre 1 = 1 :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $where = array();
     
    if (isset($_POST['idsiteinterne'])) {
       $where[] = "idsiteinterne LIKE '%".mysql_real_escape_string(trim($_POST['idsiteinterne']))."%'";
    }
     
    if (isset($_POST['idsiteprovider'])) {
       $where[] = "idsiteprovider LIKE '%".mysql_real_escape_string(trim($_POST['idsiteprovider']))."%'";
    }
     
    if (isset($_POST['site_name'])) {
       $where[] = "site_name LIKE '%".mysql_real_escape_string(trim($_POST['site_name']))."%'";
    }
     
    if (isset($_POST['adresseIP'])) {
       $where[]= "adresseIP LIKE '%".mysql_real_escape_string(trim($_POST['adresseIP']))."%'";
    }
     
    if (isset($_POST['service'])) {
       $where[] = "service LIKE '%".mysql_real_escape_string(trim($_POST['service']))."%'";
    }
     
    $sqlWhere = implode(' AND ', $where);

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Par défaut
    Merci beaucoup j'ai modifié par les sources que vous venez de me fournir mais l'erreur s'affiche toujours.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_query() expects parameter 1 to be string, resource given in C:\wamp\www\internetservices\sitemanage.php on line 60
    Ligne 60

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( $result = mysql_query($result))

  5. #5
    Membre éclairé
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 26
    Par défaut
    tu construit ta requête dans $req pourquoi tu fais un
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    while( $result = mysql_query($result))
    ca devrai pas plutot être:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    while( $result = mysql_query($req))

    et une question si tu affiches $req avant le mysql_query il t'affiche quoi???

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    J'ai repris tant bien que mal le code de ta page mais je n'ai pas pu terminer pour la simple et unique bonne raison que ta logique m'échappe...
    J'ai joué aux devinettes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <?php
     
    if( ! isset($_GET['recherche'])) {
       return;
    }
     
    extract($_GET);  // qu'est ce tu récupères ici ?
     
    $sql = 'SELECT id, idsiteinterne, idsiteprovider, site_name, adresseIP, service FROM cyb_site';
     
    $where = array();
    if (isset($_POST['idsiteinterne'])) {
       $where[] = "idsiteinterne LIKE '%".mysql_real_escape_string(trim($_POST['idsiteinterne']))."%'";
    }
    if (isset($_POST['idsiteprovider'])) {
       $where[] = "idsiteprovider LIKE '%".mysql_real_escape_string(trim($_POST['idsiteprovider']))."%'";
    }
    if (isset($_POST['site_name'])) {
       $where[] = "site_name LIKE '%".mysql_real_escape_string(trim($_POST['site_name']))."%'";
    }
    if (isset($_POST['adresseIP'])) {
       $where[]= "adresseIP LIKE '%".mysql_real_escape_string(trim($_POST['adresseIP']))."%'";
    }
    if (isset($_POST['service'])) {
       $where[] = "service LIKE '%".mysql_real_escape_string(trim($_POST['service']))."%'";
    }
     
    if ( ! empty($where)) {
       $sql .= ' WHERE ' . implode(' AND ', $where);
    }
     
    $sql .= ' LIMIT 10';
     
    $exec = mysql_query($sql);
    if ( ! $exec) {
       die('Erreur SQL : '.$sql.'<br /><b>'.mysql_error().'</b>');
    }
     
    $data = array();
    while($row = mysql_fetch_assoc($exec)) {
       $data[] = $row;
    }
    ?>
     
    <h4>Resultat de recherche</h4>
    <table>
       <thead>
          <tr>
             <th class="td_seach_titre">N&deg;</th>
             <th class="td_seach_titre">ID Provider</th>
             <th class="td_seach_titre">ID Interne</th>
             <th class="td_seach_titre">Etat du site</th>
             <th class="td_seach_titre">Nom du site</th>
             <th class="td_seach_titre">Adresse IP</th>
             <th class="td_seach_titre">Service</th>
          </tr>
       </thead>
       <tbody class="article-result">
       <?php if (empty($data)): ?>
          <tr>
             <td colspan="7" style="text-align:center;">Pas de r&eacute;sultats pour cette recherche</td>
          </tr>
       <?php else: ?>
          <?php foreach($data as $row): ?>
          <tr>
             <td class="id"><?php echo $row['id']; ?></td>
             <td class="td_seach"><a href="accueil.php?view=24&u=<?php echo $row['id']; ?>"><?php echo $row['idsiteinterne']; ?></a></td>
             <td class="td_seach"><?php echo $row['idsiteprovider']; ?></td>
             <td class="td_seach"><?php echo $row['idetatsite']; ?></td>
             <td class="td_seach"><?php echo $row['site_name']; ?></td>
             <td class="td_seach"><?php echo $row['adresseIP']; ?></td>
             <td class="td_seach"><?php echo $row['service']; ?></td>
          </tr>
          <?php endforeach; ?>
       <?php endif; ?>
       </tbody>
    </table>
    ?>
    Comme tu le verras je me suis arrêté juste avant <div id="boxManage">Dans tous les cas, étudies mon code, tu verras comment utiliser mysql_query()

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Par défaut
    Merci beaucoup.
    Avec votre aide et proposition j'ai eu a reprendre tout mon code pour bien suivre chaque ligne. Cette fois je n'ai aucune erreur qui s'affiche, mais quand j'essaie de lancer une recherche aucun résultat apparaît même quand un des champs est rempli. Alors je vous donne l'ensemble de mes codes pour vous permettre la meilleure compréhension. Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    <?php
     
    mysql_connect("localhost","root") or die("erreur de connexion au serveur $host");
    mysql_select_db("test_2");
     
    //recherche des résultats dans la base de données
    if(isset($_POST['recherche']))
    {
     
    	$where = array();
     
     
    	if (!empty($_POST['idsiteinterne']))
    		$where[] = "idsiteinterne LIKE '%".htmlentities(trim($_POST['idsiteinterne']))."%'";
     
    	if (!empty($_POST['idsiteprovider']))  
    		$where[] = "idsiteprovider LIKE '%".htmlentities(trim($_POST['idsiteprovider']))."%'";
     
    	if (!empty($_POST['idetatsite'])) 
    		$where[] = "idetatsite='".htmlentities(trim($_POST['idetatsite']))."'";
     
    	if (!empty($_POST['site_name'])) 
    		$where[] = "site_name LIKE '%".htmlentities(trim($_POST['site_name']))."%'";
     
    	if (!empty($_POST['adresseIP'])) 
    		$where[]= "adresseIP LIKE '%".htmlentities(trim($_POST['adresseIP']))."%'"; 
     
    	if (!empty($_POST['service'])) 
    		$where[] = "service LIKE '%".htmlentities(trim($_POST['service']))."%'";
     
    	if(sizeof($where) > 0) 
    	{
    		//  "on peut rechercher soit par le nom, par le prénom, par adresse ainsi de suite..." 
    		$sqlWhere = ' WHERE '.implode(' AND ', $where); 
     
    		$req = "SELECT id, idsiteinterne, idsiteprovider, site_name, adresseIP, service, idetatsite FROM cyb_site ".$sqlWhere. " LIMIT 10;";
     
    		echo '<div class="article-result">';
     
    		echo'<h4>Resultat de recherche</h4>';
     
    		$result = mysql_query($req) or die('Erreur SQL !'.$req.'<br /><b>'.mysql_error().'</b>');
     
    		if ( mysql_num_rows( $result ) == 0 )
    			{	echo '<h3 style="text-align:center; margin:10px 0;">Pas de r&eacute;sultats pour cette recherche</h3>'; }
    		else
    			{	
     
    				echo "<table>";
    					echo '<tr>';
    						echo '<th class="td_seach_titre">N&deg;</th>';
    						echo '<th class="td_seach_titre">ID Provider</th>';
    						echo '<th class="td_seach_titre">ID Interne</th>';
    						echo '<th class="td_seach_titre">Nom du site</th>';
    						echo '<th class="td_seach_titre">Adresse IP</th>';
    						echo '<th class="td_seach_titre">Service</th>';
    						echo '<th class="td_seach_titre">Etat du site</th>';
    					echo '</tr>';
     
    					while($row = mysql_fetch_array($result))
    					{
     
    						echo "<tr>";
    							echo '<td class="id">'.$row['id'].'</td>';
    							echo '<td class="td_seach">'.$row['idsiteinterne'].'</td>';
    							echo '<td class="td_seach">'.$row['idsiteprovider'].'</td>';
    							echo '<td class="td_seach">'.$row['site_name'].'</td>';
    							echo '<td class="td_seach">'.$row['adresseIP'].'</td>';
    							echo '<td class="td_seach">'.$row['service'].'</td>';
    							echo '<td class="td_seach">'.$row['idetatsite'].'</td>';
    						echo "</tr>";
    					}
     
    				echo "</table>";
     
    			}
     
    		echo "</div>";
     
    	}else{ echo 'Vous devez remplir au moins un des champs de recherche !'; }
    }
     
    ?>
     
    <div id="boxManage">
     
    	<h4>Rechercher un site</h4>
     
    	<p>Trouvez un site par son nom, sa date de cr&eacute;ation, son ID, son statut. </p>
     
    	<form method="POST" action="">
     
    	        <table width="480" border="0" class="right">
     
                		<tr>
                  			<td class="recherche_text"><label for="id_interne">ID interne</label></td>
                  			<td > <input type="text" name="idsiteinterne" class="recherche" id="id_interne" value="<?php if (isset($_POST['idsiteinterne']))  echo htmlentities(trim($_POST['idsiteinterne'])); ?>"></td>
                		</tr>
     
                		<tr>
                  			<td class="recherche_text"><label for="id_provider" >ID Provider</label></td>
                  			<td>
                      			<input type="text" name="idsiteprovider" class="recherche" id="id_provider" value="<?php if (isset($_POST['idsiteprovider']))  echo htmlentities(trim($_POST['idsiteprovider'])); ?>">
    				</td>
    			</tr>
     
    			<tr>
    				<td class="recherche_text"><label for="nom_du_site">Nom du site</label></td>
    				<td >
    		                	<input type="text" name="site_name" class="recherche" id="nom_du_site" value="<?php if (isset($_POST['site_name']))  echo htmlentities(trim($_POST['site_name'])); ?>">
    				</td>
                		</tr>
     
     
    			<tr>
    				<td class="recherche_text"> <label for="adresse_ip">Adresse IP</label></td>
    				<td >
    					<input type="text" name="adresseIP" class="recherche" id="adresse_ip" value="<?php if (isset($_POST['adresseIP']))  echo htmlentities(trim($_POST['adresseIP'])); ?>">
    				</td>
    			</tr>
     
    			<tr>
    				<td class="recherche_text">Statut</td>
    		                <td class="seach_name" >
    					<SELECT  name="idetatsite"  class="recherche">
    						<OPTION>active</OPTION>
    						<OPTION>desactive</OPTION>
    						<OPTION>suspendu</OPTION>
    					</SELECT>
    				</td>
    			</tr>
     
    			<tr>
                            	<td colspan=2>
    					<input type="submit" name="recherche" class="recherche_submit" value="Rechercher" />
    				</td>
    			</tr>
    		</table>
     
    	</form>
     
    </div>

  8. #8
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Ligne 91 de ton code, l'attribut action est non renseigné.

    Pour échapper des caractères pour mysql c'est mysql_real_escape() et non htmlentites(),

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 84
    Par défaut
    Action non renseigné ne pose pas de problème vu que le traitement se fait sur la même page...
    Et je ne pense pas que ce soit le changement des htmlentities() en mysql_real_escape() qui sont en causes

  10. #10
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Non, pour soumettre des données d'un formulaire, il faut obligatoirement renseigner l'attribut action de la balise <form>. A moins que tu le fasses en javascript.
    Sinon pas de données.

  11. #11
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Par défaut
    Ligne 91 de ton code, l'attribut action est non renseigné.

    Pour échapper des caractères pour mysql c'est mysql_real_escape() et non htmlentites(),
    C'est modifié pour htmlentities par mysql_real_escape()
    Par rapport à la ligne 91 je crois que ce n'est pas ça le problème d'autant plus que il parvient à rechercher mais le problème est qu'il ne parvient pas à retrouver

  12. #12
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 84
    Par défaut
    @rawsrc :

    Depuis que je pratique PHP et que je ne fais pas de renvoi vers une autre page l'attribut action a toujours été vide sans posé de problème, l'attribut indispensable est method pour savoir si les paramètre du formulaire sont passés par URL (GET) ou sous forme de données par en-tête HTTP (POST)

    'fin bref, comme je disais je ne pense pas que ça soit ça qui résoudra le problème de glodybiss4.

    Le problème est que la requête ne retourne aucun résultat...

  13. #13
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par stringman62 Voir le message
    @rawsrc :

    Depuis que je pratique PHP et que je ne fais pas de renvoi vers une autre page l'attribut action a toujours été vide sans posé de problème, l'attribut indispensable est method pour savoir si les paramètre du formulaire sont passés par URL (GET) ou sous forme de données par en-tête HTTP (POST)
    au temps pour moi, habitude personnelle de ne jamais renvoyer des données sur le script qui les a générées

    Citation Envoyé par glodybiss4 Voir le message
    C'est modifié pour htmlentities par mysql_real_escape()
    Par rapport à la ligne 91 je crois que ce n'est pas ça le problème d'autant plus que il parvient à rechercher mais le problème est qu'il ne parvient pas à retrouver
    Tu veux dire que tu n'as aucune données en provenance de mysql_query()

  14. #14
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Quand tu as inséré tes données, tu les as échappées avec htmlentities() ou mysql_real_escape_string()

  15. #15
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Par défaut
    Stringman62
    Depuis que je pratique PHP et que je ne fais pas de renvoi vers une autre page l'attribut action a toujours été vide sans posé de problème, l'attribut indispensable est method pour savoir si les paramètre du formulaire sont passés par URL (GET) ou sous forme de données par en-tête HTTP (POST)
    Tu es là aussi ?!

    Tu parles de données en provenance de mysql_query()

    Mais c'est bien toi qui m'a beaucoup aidé je n'ai pas changé le code je l'ai gardé comme tu l'as modifié.

  16. #16
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Non, non ce que je veux dire c'est avant d'interroger ta table, tu as bien dû insérer des données. C'est à ce moment que je souhaiterai savoir comment tu les as échappées. Et ne me dit pas que ta table est vide et que tu ne comprends pas pourquoi tu n'as pas de données en sortie, parce que la je te pends moi-même

  17. #17
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    J'ai repris ton dernier code, essayes avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    <?php
     
    mysql_connect("localhost","root") or die("erreur de connexion au serveur $host");
    mysql_select_db("test_2");
     
    //recherche des résultats dans la base de données
    $idSiteInterne  = '';
    $idSiteProvider = '';
    $siteName       = '';
    $adresseIp      = '';
    $service        = '';
     
    if (isset($_POST['recherche'])) {
       $where = array();
     
       if (isset($_POST['idsiteinterne']) && strlen($idSiteInterne = trim($_POST['idsiteinterne']))) {
          $where[] = "idsiteinterne LIKE '%".mysql_real_escape_string($idSiteInterne)."%'";
       }
     
       if (isset($_POST['idsiteprovider']) && strlen($idSiteProvider = trim($_POST['idsiteprovider']))) {
          $where[] = "idsiteprovider LIKE '%".mysql_real_escape_string($idSiteProvider)."%'";
       }
     
       if (isset($_POST['site_name']) && strlen($siteName = trim($_POST['site_name']))) {
          $where[] = "site_name LIKE '%".mysql_real_escape_string($siteName)."%'";
       }
     
       if (isset($_POST['adresseIP']) && strlen($adresseIp = trim($_POST['adresseIP']))) {
          $where[]= "adresseIP LIKE '%".mysql_real_escape_string($adresseIp)."%'";
       }
     
       if (isset($_POST['service']) && strlen($service = trim($_POST['service']))) {
          $where[] = "service LIKE '%".mysql_real_escape_string($service)."%'";
       }
     
       if (empty($where)):
          echo 'Vous devez remplir au moins un des champs de recherche !';
     
       else:
          $sql = "SELECT id, idsiteinterne, idsiteprovider, site_name, adresseIP, service, idetatsite
                  FROM cyb_site
                  WHERE ". implode(' AND ', $where) . "
                  LIMIT 10";
     
          $result = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br /><b>'.mysql_error().'</b>'); ?>
          <div class="article-result">
             <h4>Resultat de recherche</h4>
     
             <?php if (mysql_num_rows($result) === 0): ?>
             <h3 style="text-align:center; margin:10px 0;">Pas de r&eacute;sultats pour cette recherche</h3>
     
             <?php else: ?>
             <table>
                <thead>
                   <tr>
                      <th class="td_seach_titre">N&deg;</th>
                      <th class="td_seach_titre">ID Provider</th>
                      <th class="td_seach_titre">ID Interne</th>
                      <th class="td_seach_titre">Nom du site</th>
                      <th class="td_seach_titre">Adresse IP</th>
                      <th class="td_seach_titre">Service</th>
                      <th class="td_seach_titre">Etat du site</th>
                   </tr>
                </thead>
                <tbody>
                   <?php while($row = mysql_fetch_assoc($result)): ?>
                   <tr>
                      <td class="id"><?php echo $row['id']; ?></td>
                      <td class="td_seach"><?php echo $row['idsiteinterne']; ?></td>
                      <td class="td_seach"><?php echo $row['idsiteprovider']; ?></td>
                      <td class="td_seach"><?php echo $row['site_name']; ?></td>
                      <td class="td_seach"><?php echo $row['adresseIP']; ?></td>
                      <td class="td_seach"><?php echo $row['service']; ?></td>
                      <td class="td_seach"><?php echo $row['idetatsite']; ?></td>
                   </tr>
                   <?php endwhile; ?>
                </tbody>
             </table>
             <?php endif; ?>
          </div>
       <?php endif; ?>
    <?php 
    } 
    ?>
    <div id="boxManage">
       <h4>Rechercher un site</h4>
       <p>Trouvez un site par son nom, sa date de cr&eacute;ation, son ID, son statut. </p>
       <form method="POST" action="">
          <table width="480" border="0" class="right">
             <tr>
                <td class="recherche_text"><label for="id_interne">ID interne</label></td>
                <td><input type="text" name="idsiteinterne" class="recherche" id="id_interne" value="<?php echo htmlentities($idSiteInterne); ?>"></td>
             </tr>
             <tr>
                <td class="recherche_text"><label for="id_provider" >ID Provider</label></td>
                <td><input type="text" name="idsiteprovider" class="recherche" id="id_provider" value="<?php echo htmlentities($idSiteProvider); ?>"></td>
             </tr>
             <tr>
                <td class="recherche_text"><label for="nom_du_site">Nom du site</label></td>
                <td ><input type="text" name="site_name" class="recherche" id="nom_du_site" value="<?php echo htmlentities($siteName); ?>"></td>
             </tr>
             <tr>
                <td class="recherche_text"> <label for="adresse_ip">Adresse IP</label></td>
                <td ><input type="text" name="adresseIP" class="recherche" id="adresse_ip" value="<?php echo htmlentities($adresseIp); ?>"></td>
             </tr>
             <tr>
                <td class="recherche_text">Statut</td>
                <td class="seach_name" >
                   <select  name="idetatsite"  class="recherche">
                      <option value="active">active</option>
                      <option value="desactive">desactive</option>
                      <option value="suspendu">suspendu</option>
                   </select>
                </td>
             </tr>
             <tr>
                <td colspan=2><input type="submit" name="recherche" class="recherche_submit" value="Rechercher" /></td>
             </tr>
          </table>
       </form>
    </div>

  18. #18
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Par défaut
    Merci merci merci merci merci Rawsrc.
    ça y est ça fonctionne.

    Je remercie également Stringman62 qui m'a beaucoup vraiment beaucoup aider.

  19. #19
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par glodybiss4 Voir le message
    Merci merci merci merci merci Rawsrc.
    ça y est ça fonctionne.
    De rien , plus qu'un mot à rajouter OUF

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 22/06/2010, 16h08
  2. Quel SGBD avec PHP : MySQL ou Postgres
    Par charliejo dans le forum Requêtes
    Réponses: 6
    Dernier message: 25/01/2006, 12h13
  3. Recherche Login Script PHP & MySQL
    Par whbh dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 01/12/2005, 16h45
  4. multi update avec php/ mysql
    Par arnoweb dans le forum Administration
    Réponses: 1
    Dernier message: 17/11/2005, 22h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo