recupération d'une heure dans base de données

Eléphant du PHP | 90 Messages

09 juin 2005, 17:10

voici mon script :

$date_actuelle=date ("j/m/Y");
$heure_actuelle=date("H:i");
$ip = getenv("REMOTE_ADDR");


mysql_connect('XXXX', 'XXX', 'XXX');		
mysql_select_db("formulaire");
$var="$ip"; 	//on mets l'adresse IP dans une variable
$veri= "faux"; 	//on mets une variable a FAUX		
$rq = "SELECT DISTINCT ip_repondant FROM reponses "; 	//ensuite on parcourt le champs ip_repondant de la table REPONSES						
$result = mysql_query($rq); 		// exécution de la requête et l'affecter a la variable $result 										
while ($liste=mysql_fetch_array($result)) 		//on met les resultats dans un tableau et tant qu'il est pas vide, on extrait les valeur	
{						extract($liste);   		
	if ($ip_repondant==$var) 		//on compare tous les IP pour voir si un si l'utilisateur qui a rempli le tableau contient déjà son adresse IP						{
	$veri=vrai;			//si elle est deja présente tu met veri a vrai. 
	
                } 
	} 				

	if ($veri== "vrai") 	//aprés tu regardes si ton veri est a vrai 
		{
								$heure_fictive= "SELECT heure_actuelle FROM reponses WHERE ip_repondant=$ip";
		$heure_re = mysql_query ($heure_fictive);			echo "$heure_re";					
		echo " Désolé, <br><br> vous avez déjà répondu au questionnaire<br>le tant à $heure_re."; 		// on ecrit qu'il a déjà répondu 						
		exit();
							}	
						
										
	else 			//exécution de remplissage des champs SI l'adresse IP de l'utilisateur ne se trouve pas dans le champ Ip_repondant de la base reponses			
	{	
							$query="INSERT INTO reponses VALUES ('', '$ip', '$date_actuelle', '$heure_actuelle', '$total_questionnaire', '$champ1','$champ2', '$champ3', '$champ4', '$champ5', '$champ_libre')";	    // insertion valeur dans table "reponses"		
							$resultat=mysql_db_query('formulaire', $query);	//exécution de la requête				
		}					echo "<br>";			
							echo "<p><b>Questionnaire rempli le ";                     // date de réponse au formulaire sous forme J/M/aaaa à hh:mm
							echo "$date_actuelle à $heure_actuelle";
							echo "<br></b>";
	
							
				?>

Je n'arrive pas en fait quand le repondant a deja repondu (on le voit grace a l'IP) a affiché l'heure a lakel il a deja repondu

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

09 juin 2005, 17:23

c'est un peu vague tout ça

ça bloque ici ?
$heure_fictive= "SELECT heure_actuelle FROM reponses WHERE ip_repondant=$ip";
        $heure_re = mysql_query ($heure_fictive);            echo "$heure_re";                    
        echo " Désolé, <br><br> vous avez déjà répondu au questionnaire<br>le tant à $heure_re.";         // on ecrit qu'il a déjà répondu 
qu'est-ce qui se passe xactement ta variable est vide ?
si oui :
- affiche ta requête et exécutes la directement sur l base (via phpmyadmin par ex)
- affiche les erreurs MySQL

Eléphant du PHP | 90 Messages

09 juin 2005, 17:26

je veux simplement créer un requete SQL qui puisse aller chercher dans la table 'reponses' l'heure a laquelle l'utilisateur a deja repondu puis l'afficher.. mais bien prendre en compte que l'ip-repondant se trouve bien dans ma base 'reponses'.

Dans mon cas, je remarque que la variable est vide

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

09 juin 2005, 17:31

tu peux regrouper la sélection de l'heure et de l'ip dans une même requête

SI tu trouves une heure pour l'ip correspondante ALORS
tu affiches l'heure et interdiction de répondre
SINON
tu enregistres l'heure
FSI

Code : Tout sélectionner

SELECT heure FROM reponses WHERE ip = '$ip';
en fait c'est ce que tu fais dans ta deuxième requête, don à mon avis la première est inutile

tu as la bonne méthode donc si ta variable est vide utilise les méthodes que je t'ai donné pour tester et voir où ça bloque

edit3 :
je vois que tu récupères le résultat de ta requête dans $heure_re et que tu l'affiches directement, il te faut passer par qqchose d'intermédiaire comme
mysql_fetch_row ou mysql_fetch_array

ViPHP
pjl
ViPHP | 2119 Messages

09 juin 2005, 17:37

Je ne comprends pas du tout ta logique.

Tu récupère toutes les IP de ta table.
Tu parcours toutes les IP et quand tu as trouvé la bonne, tu refais une requete pour avoir l'heure qui correspond à l'IP.

Pourquoi ne pas faire cette requete de suite ?

Eléphant du PHP | 90 Messages

09 juin 2005, 17:44

pour moi c'etait celle là la meilleure methode je pense comment faire autrement sinon ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

09 juin 2005, 17:47

ben pjl l'a dit et moi aussi juste avant

récupérer directement l'heure pour une certaine IP (ta deuxième requête)
si tu récupères une heure c'est que la personne a répondu sinon non

ViPHP
pjl
ViPHP | 2119 Messages

09 juin 2005, 17:53

Tu veux téléphoner à un copain pour lui demander l'heure par ex.

Tu prends son numéro dans ton carnet d'adresse puis :
1. tu fais tous les numéros de l'annuaire jusqu'à ce que tu tombes sur ton copain, tu coches le tel puis tu le rapelles ensuite pour lui demander l'heure ?
2. tu lui tel directement pour lui demander l'heure ?

Là, ton code tel qu'il est fait correspond à l'option 1.
Modifié en dernier par pjl le 09 juin 2005, 17:57, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

09 juin 2005, 17:54

pjl le roi de l'exemple... j'adore ! :lol:

Eléphant du PHP | 90 Messages

10 juin 2005, 09:10

j'aarive pa a faire ma requete pour faite l'option 2 ca fait trop de chose d'un cou

Mammouth du PHP | 19672 Messages

10 juin 2005, 09:17

On va essayer de partir du bon pied et une étape à la fois : commence par nous montrer la structure de la table où tu veux récupérer l'heure.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 90 Messages

10 juin 2005, 09:48

alors ma base MySQL ressemble a ca :
 Id - Ip_repondant - date_reponse - heure_reponse - total_questionnaire - champ1 - champ2 - champ3 - champ4 - champ5 - champ_libre 

Mammouth du PHP | 19672 Messages

10 juin 2005, 10:02

Ok, on va remonter d'un étape alors parce là, on est mal barrés. Quand je parle de structure de table, j'entends par là quels champs et également le type de chaque champ.

Pour avoir quelque chose de visuel, ouvre phpMyAdmin, va dans ta base et sélectionne la table: ensuite, cliques sur "Exproter" en décochant dans le formulaire qui va apparaître la case "données" et tu coches la case transmettre pour avoir une version SQL au format texte de la création de la table, tous les détails vont se trouver là.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

10 juin 2005, 10:02

mais tu as déjà la requête pou aire l'option 2, c'est celle-ci :
$heure_fictive= "SELECT heure_actuelle FROM reponses WHERE ip_repondant=$ip"; 
tu as juste à ne plus faire ta première requête et tester le résultat de celle-ci : rien ou heure
et agir en conséquence

Eléphant du PHP | 90 Messages

10 juin 2005, 10:09

# Version du serveur: 4.0.18
# Version de PHP: 4.3.4
# 
# Base de données: `formulaire`
# 

# --------------------------------------------------------

#
# Structure de la table `reponses`
#


CREATE TABLE `reponses` (
  `Id` int(11) NOT NULL auto_increment,
  `Ip_repondant` text NOT NULL,
  `date_reponse` text NOT NULL,
  `heure_reponse` text NOT NULL,
  `total_questionnaire` int(11) NOT NULL default '0',
  `champ1` int(11) NOT NULL default '0',
  `champ2` int(11) NOT NULL default '0',
  `champ3` int(11) NOT NULL default '0',
  `champ4` int(11) NOT NULL default '0',
  `champ5` int(11) NOT NULL default '0',
  `champ_libre` text NOT NULL,
  PRIMARY KEY  (`Id`)
) TYPE=MyISAM COMMENT='reponses au formulaire' AUTO_INCREMENT=107 ;
ca va mieux kom ca ?