Probleme de Fonction search php
Fermé
pieric62
-
10 oct. 2008 à 04:12
dindoun Messages postés 1027 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 17 février 2017 - 10 oct. 2008 à 11:59
dindoun Messages postés 1027 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 17 février 2017 - 10 oct. 2008 à 11:59
A voir également:
- Probleme de Fonction search php
- Alert php ✓ - Forum PHP
- Header php - Astuces et Solutions
- Fonction si et - Guide
- Undefined index php - Astuces et Solutions
- Retour a la ligne php ✓ - Forum PHP
4 réponses
dindoun
Messages postés
1027
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
17 février 2017
135
10 oct. 2008 à 11:59
10 oct. 2008 à 11:59
oui maix la premère erreur je ne l'ai jamais faite alors je ne l'avais pas vue
Bonjour
pieric62, ton code est correct quoi qu'en dise dindoun. Seule sa remarque sur $_POST est valable.
D'abord les balises. Il est absurde de fermer une balise php ?> pour rouvrir deux lignes plus loin <?php. Le seul effet, c'est d'envoyer quelques lignes vides au client (qui ne provoquent même pas de saut de ligne à l'affichage) et de rendre ton script difficile à lire. Donc, supprime tous les ?> et les <?php qui se suivent sans rien d'utile entre les deux.
ensuite : while ( $data = mysql_fetch_array($rq) );
ton While est suivi d'une instruction vide (; seul) donc tu 'épuises' toutes les réponse à la requête sans faire aucun traitement. Le bloc ( de { à } ) qui suit est en dehors de la boucle, et $data contient FALSE quand il s'exécute. ça devrait marcher nettement mieux sans le ;
Enfin, la place logique de tout ce qui suit le if ($_POST) est avant le traitement du formulaire, pas après. Si tu veux renvoyer un formulaire avec de messages du genre "veuillez indiquer votre nom" en cas de formulaire incomplet, il faut bien que tu aies traité le formulaire précédent avant de créer le nouveau. Car tu es bien conscient que le formulaire que tu traites dans ce script n'est pas celui que tu viens d'envoyer, mais celui que le client avait rempli avant d'appeler ton script ?
pieric62, ton code est correct quoi qu'en dise dindoun. Seule sa remarque sur $_POST est valable.
D'abord les balises. Il est absurde de fermer une balise php ?> pour rouvrir deux lignes plus loin <?php. Le seul effet, c'est d'envoyer quelques lignes vides au client (qui ne provoquent même pas de saut de ligne à l'affichage) et de rendre ton script difficile à lire. Donc, supprime tous les ?> et les <?php qui se suivent sans rien d'utile entre les deux.
ensuite : while ( $data = mysql_fetch_array($rq) );
ton While est suivi d'une instruction vide (; seul) donc tu 'épuises' toutes les réponse à la requête sans faire aucun traitement. Le bloc ( de { à } ) qui suit est en dehors de la boucle, et $data contient FALSE quand il s'exécute. ça devrait marcher nettement mieux sans le ;
Enfin, la place logique de tout ce qui suit le if ($_POST) est avant le traitement du formulaire, pas après. Si tu veux renvoyer un formulaire avec de messages du genre "veuillez indiquer votre nom" en cas de formulaire incomplet, il faut bien que tu aies traité le formulaire précédent avant de créer le nouveau. Car tu es bien conscient que le formulaire que tu traites dans ce script n'est pas celui que tu viens d'envoyer, mais celui que le client avait rempli avant d'appeler ton script ?
dindoun
Messages postés
1027
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
17 février 2017
135
10 oct. 2008 à 07:01
10 oct. 2008 à 07:01
salut,
if ( $_POST) je mets : if (isset ($_POST['login']))
$rq = mysql_query("SELECT login FROM accounts WHERE login LIKE '%$search%' ");
je mets
$rq = mysql_query("SELECT login FROM `accounts` WHERE login LIKE '%".$search."%' ");
et puis souvent y a des trucs en plus derrière avec _utf8
<?php echo $data['login'] ; ?>
je mets
<?php echo $data[5] ; ?> // 5 : colonne de login
if ( $_POST) je mets : if (isset ($_POST['login']))
$rq = mysql_query("SELECT login FROM accounts WHERE login LIKE '%$search%' ");
je mets
$rq = mysql_query("SELECT login FROM `accounts` WHERE login LIKE '%".$search."%' ");
et puis souvent y a des trucs en plus derrière avec _utf8
<?php echo $data['login'] ; ?>
je mets
<?php echo $data[5] ; ?> // 5 : colonne de login
dindoun
Messages postés
1027
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
17 février 2017
135
10 oct. 2008 à 08:28
10 oct. 2008 à 08:28
bien vu le ;