pb variable php/mysql - PHP - Programmation
Marsh Posté le 25-12-2005 à 21:52:44
(mais quelle horreur ce code...)
Faut dire que je ne vois nulle part une quelconque initialisation d'id_destinataire, ni sa récupération lorsqu'elle passe dans l'url...
Marsh Posté le 25-12-2005 à 21:55:26
premiere page:
<a href="message.php?id_destinataire=
<?php
if( isset($_GET['id']) )
{
$id = intval ($_GET['id']);
$req = "SELECT id_user , nom , id_user ".
"FROM utilisateurs WHERE id_user = ".$id ;
$ret = mysql_query ($req) or die (mysql_error ());
$col = mysql_fetch_row ($ret);
if ( !$col[0] )
{
echo "Id inconnu";
}
else
{
echo $col[2];
}
}
else
{
echo "Mauvais id ";
}
?> " >message</a>
deuxieme page , la page message avec le script cite plus haut
Marsh Posté le 25-12-2005 à 22:02:47
Oui, et ?
Tu vois un
Code :
|
quelque part avant ta requête d'insertion ? Non ? Bravo, tu as trouvé l'origine de ton problème
Ceci dit, vu que le forumulaire se soumet sur la même page, pourquoi tu case pas ton id_destinataire en tant que champs du form (en hidden) ?
Marsh Posté le 25-12-2005 à 22:44:48
oui il manque un $id_destinataire="???"
c'est sur ca que je cale, je ne sais pas quoi mettre
j'ai essayer avec $id_destinataire=if( isset($_GET['id']) )
{
$id_destinataire = intval ($_GET['id']);
mais il me retourne une erreur sur la ligne 70
quelqu'un a une idee?
Marsh Posté le 26-12-2005 à 03:09:22
rut a écrit : $id_destinataire=if( isset($_GET['id']) ) |
Revoir les bases serait peut-être pas un luxe, en particulier ceci et cela.
Marsh Posté le 29-12-2005 à 21:09:52
je cale , personne n'as une idee ou une solution pour moi?
ma page : message.php?id_destinataire=16 par exemple
sur ma db id_destinataire ne prend pas de valeur car il n'y a pas de "id_destinatire=??"sur le script, et je ne sais pas quoi mettre
merci
Marsh Posté le 30-12-2005 à 01:48:59
Tout est expliqué dans les liens que je t'ai donnés.
Sur : message.php?id_destinataire=16
Si register_globals est à off dans ton php.ini tu retrouves 16 dans $_GET['id_destinataire'], sinon $id_destinataire est une variable directement accessible contenant 16. Y a que deux possibilités, c'est pas bien compliqué...
Marsh Posté le 30-12-2005 à 11:41:20
Un conseil, utilise toujours $_GET[], ton script sera plus compatible.
Marsh Posté le 30-12-2005 à 16:44:39
merci
lorsque je met : $id_destinataire = $_GET['id_destinataire'];
il me di une erreur telque: Notice: Undefined index: id_destintaire in c:\...\message.php on line 18
Marsh Posté le 30-12-2005 à 17:21:18
id_destintaire
Marsh Posté le 30-12-2005 à 17:33:27
ReplyMarsh Posté le 30-12-2005 à 17:34:36
oui , effectivement erreur de ma part mais c'est bien Notice: Undefined index: id_destinataire in c:\...\message.php on line 18 :s
Marsh Posté le 30-12-2005 à 17:36:57
et l'URL appelante est bien de la forme
http://tonsite/tapage.php?id_destinataire=toto
?
Marsh Posté le 30-12-2005 à 17:42:21
tu peux faire un print_r($_SERVER) et nous mettre le résultat ici ?
Marsh Posté le 30-12-2005 à 17:59:04
Ca avancerait à savoir ce qu'il passe en paramètre
en haut de ta page de destination tu mets :
print_r($_SERVER);
et tu nous mets le resultat ici
Marsh Posté le 30-12-2005 à 18:01:39
Array ( [COMSPEC] => C:\WINDOWS\system32\cmd.exe [DOCUMENT_ROOT] => cprogram files/easyphp1-8/www [HTTP________________] => ----- ------- [HTTP_ACCEPT] => */* [HTTP_ACCEPT_LANGUAGE] => fr-be [HTTP_CONNECTION] => Keep-Alive [HTTP_COOKIE] => phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A1%3A%222%22%3B%7D; PHPSESSID=3c8f9058b1dc12027640b7a243c23db5; phpbb2mysql_sid=d05f4140f0351cf4cde942aa0f8e0155 [HTTP_HOST] => 127.0.0.1 [HTTP_REFERER] => http://127.0.0.1//V.1/view.php?id=16 [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) [PATH] => C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\PROGRA~1\EASYPH~1\Apache;C:\PROGRA~1\EASYPH~1\PHP [REMOTE_ADDR] => 127.0.0.1 [REMOTE_PORT] => 1695 [SCRIPT_FILENAME] => cweblocal//v.1/message.php [SERVER_ADDR] => 127.0.0.1 [SERVER_ADMIN] => admin@localhost [SERVER_NAME] => 127.0.0.1 [SERVER_PORT] => 80 [SERVER_SIGNATURE] =>
Apache/1.3.33 Server at 127.0.0.1 Port 80
[SERVER_SOFTWARE] => Apache/1.3.33 (Win32) PHP/4.3.10 [SystemRoot] => C:\WINDOWS [WINDIR] => C:\WINDOWS [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => id_destinataire=16 [REQUEST_URI] => /V.1/message.php?id_destinataire=16 [SCRIPT_NAME] => /V.1/message.php [PATH_TRANSLATED] => cweblocal/v.1/message.php [PHP_SELF] => /V.1/message.php )
Marsh Posté le 30-12-2005 à 18:03:48
Hummm, pourtant la variable est bien passée ...
[REQUEST_METHOD] => GET
[QUERY_STRING] => id_destinataire=16
Je ne comprends pas que $_GET['id_destinataire'] ne fonctionne pas
et à la place de print_r($_SERVER) fais voir un print_r($_GET)
Marsh Posté le 30-12-2005 à 18:07:10
Bah c'est tout bon
et un echo $_GET['id_destinataire'] ne mache pas ??
Pas possible
Edit : vive les smileys
Marsh Posté le 30-12-2005 à 18:07:17
ReplyMarsh Posté le 30-12-2005 à 18:09:53
Ca te donne quoi un :
echo phpversion();
?
Marsh Posté le 30-12-2005 à 18:10:47
echo $_GET['id_destinataire'] donne 16
alors ca pourrai venir de la page message qui cree un probleme?:-s
Marsh Posté le 30-12-2005 à 18:13:09
rut a écrit : echo $_GET['id_destinataire'] donne 16 |
Si echo $_GET['id_destinataire'] passe alors $foo = $_GET['id_destinataire']; passera sur la même page, c'est pas plus compliqué que ça.
Marsh Posté le 30-12-2005 à 18:22:31
Du coup je ne comprends plus rien ... il est où le problème ?
Marsh Posté le 30-12-2005 à 18:27:10
la valeur du "id_destinataire" dans le champs id_destinataire de la base de donnee ne prend pas la valeur , (16 par exmple)
Marsh Posté le 30-12-2005 à 18:27:38
kalex a écrit : Y a un bug dans le programmeur. |
Marsh Posté le 30-12-2005 à 18:28:15
rut a écrit : la valeur du "id_destinataire" dans le champs id_destinataire de la base de donnee ne prend pas la valeur , (16 par exmple) |
Marsh Posté le 30-12-2005 à 20:31:08
ahAHAH ça me fait bien rire tout ça.
Sérieusement, tu peux nous mettre la ligne où ya ton erreur? (par exemple, quand il y a écrit "erreur à la ligne 70", donne-nous ta ligne 70) Je sens que j'vais rire lol
Marsh Posté le 30-12-2005 à 20:37:38
Notice: Undefined index: id_destinataire in c:\weblocal\v.1\message.php on line 31
ligne31: $id_destinataire = $_GET['id_destinataire'];
Marsh Posté le 30-12-2005 à 22:09:00
rut a écrit : Notice: Undefined index: id_destinataire in c:\weblocal\v.1\message.php on line 31 |
et c'est sur cette même page (message.php) que tu as fais les tests plus haut ? (les print_r et le echo $_GET ...) ?
Marsh Posté le 30-12-2005 à 22:11:59
oui tout sur la page message.php
Marsh Posté le 30-12-2005 à 22:28:03
je vien de m'apercevoir d'un detail pour la premiere fois , c'est peut etre ca le hic dans l'affaire , avant d'envoyer le message par message.php?id... , j'ai donc les liens en haut, le cadre formulaire a remplir et le bouton envoyer , je vien de remarquer la presence de ceci: Notice: Undefined index: action in c:\weblocal\v.1\message.php on line 19
la ligne 19 = switch($_POST['action'])
est ce que c'est ca qui fait echouer le reste?
pour rappel le script de la page message est o debut du thread
Marsh Posté le 30-12-2005 à 22:28:20
bon alors sur ta ligne 30 écris ça :
print_r($_GET);
Donc juste avant $id_destinataire = $_GET['id_destinataire'];
Marsh Posté le 30-12-2005 à 22:32:21
print_r($_GET); avant $id_destinataire... donne : Array ( )
Marsh Posté le 25-12-2005 à 21:37:07
salut les amis programmeurs
voila , en fait dans le cadre de mon projet , j'aimerais faire une fonction message, pour permettre aux membres de ce parler entre eux, j'ai un probleme , la variable pour l'"id_destinataire" n'est pas conserver
voici mon script
<?php
switch($_POST['action'])
{
// INSERTION DANS LA BASE
case "inserer":
// déclaration de quelques variables
***
// connection avec MySQL
@mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données" ); // Le @ indique à php de ne pas afficher de message d'erreur
@mysql_select_db($bdd) or die("Impossible de se connecter à la base de données" );
// affichage sélection
<p> <br><br><br><br><b> Message correctement envoyer"
</a> </p>;
// stockage dans la bdd
$message = $_POST['message'];
$sql = "INSERT INTO message (message , id_destinataire ) VALUES('" .$message. "' , '" .$id_destinataire. "' ) ";
$res = mysql_query($sql);
// déconnection avec MySQL
mysql_close();
break;
// AFFICHAGE FORMULAIRE HTML
default:
?>
<b>Message</b>
<br>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="action" value="inserer" />
<p><textarea cols=60 rows=11 input type="text" name="message" /></textarea> </p>
<p><input type="submit" name="Submit" value="Envoyer" /></p>
</form>
<?
break;
}
?>
</body>
</html>
voila
donc j'ai la page mondomaine.be/message.php?id_destinataire=6 par exemple , quand je fait tout pour envoyer , tout est ok, sauf que dans la bdd dabs le champs 'id_destinataire' la valeur 0 ou aucune valeur est acquise
si quelqun a une solution , ce serai super sympa
joyeux noel a tous en meme temps
Message édité par rut le 25-12-2005 à 21:38:25