problème liaison table

Eléphant du PHP | 388 Messages

21 mars 2010, 10:02

je viens de trouver j'ai fait cela
<?php
// initialisation
session_start() ;

// tester la présence de numutilisateurs

include 'php/connect.php';


if ( isset( $_SESSION['NUMUTILISATEURS']) ) {

// On affiche le numutilisateurs
echo 'email : ',$_SESSION['MAILUTILISATEURS'],'<br />     
     NUMUTILISATEURS: ',$_SESSION['NUMUTILISATEURS'],'<br />';
     
 






$sql = "SELECT NUMUTILISATEURS, titreannonce FROM annonces WHERE NUMANNONCE = '$NUMANNONCE' AND NUMUTILISATEURS = '$NUMUTILISATEURS'";
$req= mysql_query($sql) or die ('erreur sql §<br />'.$sql.'<br />'.mysql_error());

$sql2 = "SELECT * FROM annonces WHERE NUMUTILISATEURS = '$NUMUTILISATEURS'";
$req2= mysql_query($sql2) or die ('erreur sql §<br />'.$sql2.'<br />'.mysql_error());


while($data=mysql_fetch_array($req2))
 echo $data ['titreannonce']; 

}

?> 


Mais si il y ' mieu peut tu me le dire stp merci
 

a priori ceci ne sert pas
$sql = "SELECT NUMUTILISATEURS, titreannonce FROM annonces WHERE NUMANNONCE = '$NUMANNONCE' AND NUMUTILISATEURS = '$NUMUTILISATEURS'";
$req= mysql_query($sql) or die ('erreur sql §<br />'.$sql.'<br />'.mysql_error());

Mammouth du PHP | 985 Messages

21 mars 2010, 10:12

Pourquoi tu t'entêtes toujours a faire deux requêtes?
Il y en a une de trop à chaque fois:
// premiere requête
$sql = "SELECT NUMUTILISATEURS, titreannonce FROM annonces WHERE NUMANNONCE = '$NUMANNONCE' AND NUMUTILISATEURS = '$NUMUTILISATEURS'";
$req= mysql_query($sql) or die ('erreur sql §<br />'.$sql.'<br />'.mysql_error());

// deuxieme requête
$sql2 = "SELECT * FROM annonces WHERE NUMUTILISATEURS = '$NUMUTILISATEURS'";
$req2= mysql_query($sql2) or die ('erreur sql §<br />'.$sql2.'<br />'.mysql_error());
De plus tu en traites qu'une seule avec cette boucle:
while($data=mysql_fetch_array($req2))
 echo $data ['titreannonce'];

}
Une seule suffit :wink:

De plus a moins que je sois vraiment fatigué, mais dans tes requêtes tu utilises deux variables.
Ok le principe est bon, mais comment PHP peut-il savoir a quoi correspond la variable si tu ne lui dis pas avant :?:
Les variables dont je parle sont: $NUMUTILISATEURS et $NUMANNONCE.

Au pire fais des recherches sur le net , sur les variables en php...
Genre Phpdébutant...
Pour comprendre ce que c'est une variable, comment cela fonctionne et pourquoi on s'en sert...
Modifié en dernier par Dr@ke le 21 mars 2010, 10:18, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

21 mars 2010, 10:17

Pourquoi tu t'entêtes toujours a faire deux requêtes?
Désolé a force de faire des tests et de chercher a bien comprend ben tu mélange le tout, mais aprés j'ai bien remarquer qu'une seul variable était utilisé dans ma boucle c'est pour cela que j'ai edit le post. :)

cependant j'ai retravaillé cela et sa nous donne
<?php
// initialisation
session_start() ;

// tester la présence de numutilisateurs

include 'php/connect.php';


if ( isset( $_SESSION['NUMUTILISATEURS']) ) {

// On affiche le numutilisateurs
echo 'email : ',$_SESSION['MAILUTILISATEURS'],'<br />     
     NUMUTILISATEURS: ',$_SESSION['NUMUTILISATEURS'],'<br />';





$sql = "SELECT * FROM annonces WHERE NUMUTILISATEURS = '$NUMUTILISATEURS'";
$req= mysql_query($sql) or die ('erreur sql §<br />'.$sql.'<br />'.mysql_error());


while($data=mysql_fetch_array($req))
 echo $data ['titreannonce']; 

}

?>  

en tout cas merci pour ta patience :oops:

Mammouth du PHP | 985 Messages

21 mars 2010, 10:21

Ok c mieux :wink:

Sinon $NUMUTILISATEURS est une variable, tant que l'on ne dit pas a php ce quelle contient, elle est vide, et même pour être plus précis inconnue.

Ceci, c'est la base de la base, c'est pour cela que j'insiste dessus, tant que tu ne te documenteras pas dessus le temps qu'il faut, il nous sera difficile de t'aider...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

21 mars 2010, 10:27

oui je c'est bien que c'est une variable mais a priori celle ci recupere l'ID de la session start
= '$NUMUTILISATEURS'";
Car sinon si je ne la place pas toute les annonces sont visible par l'utilisateur il n'a pas que c'est annonces
Mais je me documente un maximun :( mais que je comprenne bien le principe et la sa commence a venir :wink:

Mammouth du PHP | 985 Messages

21 mars 2010, 10:34

Les variables sessions commencent par $_SESSION, c'est justement pratique pour les reconnaitre par exemple.

Donc $NUMUTILISATEURS est une variable normale sans aucune valeur pour le moment.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

21 mars 2010, 10:39

Les variables sessions commencent par $_SESSION, c'est justement pratique pour les reconnaitre par exemple.

Donc $NUMUTILISATEURS est une variable normale sans aucune valeur pour le moment.
donc ma commande n'est pas bon a la place de la variable faut placer $_SESSION['NUMUTILISATEURS'] ?

A se que je comprend

Mammouth du PHP | 985 Messages

21 mars 2010, 10:50

Voilà,

Mais si tu veux faire encore mieux pour bien comprendre le principe des variables, c'est laisser ta variable $NUMUTILISATEURS dans la requête et donc garder ta requête actuelle.

Mais il faut dans ce cas assigner le contenu de $_SESSION['NUMUTILISATEURS'] à la variable $NUMUTILISATEURS juste avant la requête.

De cette façon, $NUMUTILISATEURS ne sera plus inconnu et contiendra bien l'ID de l'utilisateur...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

21 mars 2010, 11:21

donc le code total sera cela ( je viens de tester c'est good )
<?php
// initialisation
session_start() ;

// Recuperation pour la variable 
$NUMUTILISATEURS = $_SESSION['NUMUTILISATEURS'];

// tester la présence de numutilisateurs

include 'php/connect.php';


if ( isset( $_SESSION['NUMUTILISATEURS']) ) {

// On affiche le numutilisateurs
echo 'email : ',$_SESSION['MAILUTILISATEURS'],'<br />     
     NUMUTILISATEURS: ',$_SESSION['NUMUTILISATEURS'],'<br />';



$sql = "SELECT * FROM annonces WHERE NUMUTILISATEURS = '$NUMUTILISATEURS'";
$req= mysql_query($sql) or die ('erreur sql §<br />'.$sql.'<br />'.mysql_error());


while($data=mysql_fetch_array($req))
 echo $data ['titreannonce']; 

}

?> 



 
Ai je bien compris ?

Mammouth du PHP | 985 Messages

21 mars 2010, 11:33

Très bien sauf qu'il faut la mettre juste en dessous de isset() qui sert justement a tester sa présence.
Ensuite pense a mettre ton include() connect.php juste avant ta requête...

Comme ceci en gros:
<?php
// initialisation des sessions
session_start() ;

// tester la présence de la session numutilisateurs
if (isset($_SESSION['NUMUTILISATEURS'])) {

// Récupération de la variable session après avoir testé sa présence
// (assignation de sa valeur à une variable)
$NUMUTILISATEURS = $_SESSION['NUMUTILISATEURS'];

// On affiche les variables sessions avec echo
echo 'email : ',$_SESSION['MAILUTILISATEURS'],'<br />    
     NUMUTILISATEURS: ',$_SESSION['NUMUTILISATEURS'],'<br />';

// connection SQL donc toujours juste avant la requête par sécurité
include 'php/connect.php';

// Requête SQL
$sql = "SELECT * FROM annonces WHERE NUMUTILISATEURS = '$NUMUTILISATEURS'";
$req= mysql_query($sql) or die('erreur sql §<br />'.$sql.'<br />'.mysql_error());

// Traitement du résultat de la requête
while($data=mysql_fetch_array($req))
 echo $data ['titreannonce'];

}

?>
Et bien joué :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

21 mars 2010, 11:38

je viens de tester ton code il me renvoie ceci

Code : Tout sélectionner

Warning: Cannot modify header information - headers already sent by (output started at /homez.316/logisdesq/www/mesannonces.php:13) in /homez.316/logisdesq/www/php/connect.php on line 2 Warning: Cannot modify header information - headers already sent by (output started at /homez.316/logisdesq/www/mesannonces.php:13) in /homez.316/logisdesq/www/php/connect.php on line 3 Warning: Cannot modify header information - headers already sent by (output started at /homez.316/logisdesq/www/mesannonces.php:13) in /homez.316/logisdesq/www/php/connect.php on line 4 Warning: Cannot modify header information - headers already sent by (output started at /homez.316/logisdesq/www/mesannonces.php:13) in /homez.316/logisdesq/www/php/connect.php on line 5 Warning: Cannot modify header information - headers already sent by (output started at /homez.316/logisdesq/www/mesannonces.php:13) in /homez.316/logisdesq/www/php/connect.php on line 6 donne meubledonne petit poisson
c'est pas cause de la connexion qui se déclanxherai trop tard ?

Mammouth du PHP | 985 Messages

21 mars 2010, 11:42

Vérifie si pas d'espace ou rien avant session_start() et surtout avant <?php.

Et vérifie les accents dans les commentaires, au pire enlève les.

Et non ca rien avoir avec le fichier include

[EDIT]
Au pire garde ton code, il était très bien.
Sauf il est mieux de déplacer les lignes que je te disais suivant mon exemple...
Modifié en dernier par Dr@ke le 21 mars 2010, 11:48, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

21 mars 2010, 11:47

Non pas d'espace rien qui pourrai gener je cherche pour voir

Mammouth du PHP | 985 Messages

21 mars 2010, 11:50

Remonte ton fichier include au dessus de l'echo pour voir
Juste au dessus pas comme avant là :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

21 mars 2010, 11:51

donc le probléme viens de la requete de connexion a la base
include() connect.php
des que je le place juste avant ma requete sa me met les même erreur