Précédent   Forum du club des développeurs et IT Pro > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 19h12   #1
tanaka59
Membre du Club
 
Inscription : janvier 2011
Messages : 320
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 320
Points : 69
Points : 69
Par défaut if considéré mal reconnu

Hello

J'ai un problème avec le code suivant :


Code php :
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
$db = mysql_connect('localhost', 'root', ''); 
mysql_select_db('avion',$db); // on se connecte dans phpmyadmin à la base avion qui contient les infos
 
$sql = "SELECT * FROM CLIENTS WHERE pseudo='".mysql_real_escape_string($pseudo)."' AND mdp='".mysql_real_escape_string($mdp)."'"; // ici on cherche que le pseudo et le mot de passe sont bien dans la base pour se connecter
 
$req = mysql_query($sql) or die ('ERREUR '.mysql_error());
 
$data = mysql_fetch_array($req); 
 
echo "<p>Bonjour ".$data['gentile']." ".$data['prenom']." ".strtoupper($data['nom']); // gentile affiche si une personne est madame ou monsieur , on affiche également le prenom et le nom en majuscule
 
echo "Vous habitez ".$data['num_voie']." ".$data['type_voie']." ".$data['nom_voie']; // ici on affiche l'adresse le numéro de porte dans la rue + le nom et le type de voie postale , exemple : 15 Boulevard de Dijon
 
// ici avec num_bloc je suppose qu'une personne habite dans un bloc donné , par exemple : bloc d'appartement 17 . Il faut donc que je vérifie si $data['num_bloc'] n'est pas une chaine vide , si c'est le cas je ne souhaite pas afficher se champs , je renvoie une chaine vide 
 
if (strlen($data['num_bloc'])=0) 
{ 
$num_bloc=" ";
}
else
{
$num_bloc="Bloc d'appartement n°".$data['num_bloc'];
}
 
// ici avec num_porte meme principe , par exemple : porte 24 . Il faut donc que je vérifie si $data['num_porte'] n'est pas une chaine vide , si c'est le cas je ne souhaite pas afficher se champs , je renvoie une chaine vide 
 
if (strlen($data['num_bloc'])=0)
{ 
$num_porte=" ";
}
else
{
$num_porte="Porte n°".$data['num_porte'];
}
 
// au final je souhaite avoir une phrase du style : Vous habiter 15 Boulevard de Dijon , Bloc d'appartement 17  , porte 24 
 
// problème 1 : php considère mon if comme une ligne de code ou j'affecte quelque chose , je ne vois pas d'ou se que j'ai oublié ? C'est pas == au lieu de = ?
 
// problème 2 : strlen($machaine) est vide , si elle vide j'affiche rien , si elle est remplie j'affiche $machainebis
 
// merci de me tuyauter ;)
tanaka59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 19h17   #2
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 861
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 861
Points : 21 924
Points : 21 924
Ca aurait été bien de nous décrire le problème mais bon
Code :
if (strlen($data['num_bloc'])===0)
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 19h25   #3
tanaka59
Membre du Club
 
Inscription : janvier 2011
Messages : 320
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 320
Points : 69
Points : 69
Merci

Par contre je viens de tomber sur cette ligne d'erreur :

Citation:
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\wamp\www\site web\monespaceclient.php on line 158
pour le premier if .

Apparemment une erreur de variable , la je sèche

Citation:
Ca aurait été bien de nous décrire le problème mais bon
Selon ce qui est trouver dans le if , j'affiche une ou plusieurs partie de l'adresse . Problème php ne reconnait pas le ligne du if et ce qu'il doit y faire.
tanaka59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 19h32   #4
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 861
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 861
Points : 21 924
Points : 21 924
Le premier et le deuxième if ce ne seraient pas les mêmes ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 20h10   #5
Exia93
Membre Expert
 
Homme
Étudiant
Inscription : avril 2012
Messages : 635
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 635
Points : 1 118
Points : 1 118
Bonsoir,

plusieurs choses,

les fonctions mysql_ sont obsolètes, il est préférable de passer au API mysqli_ ou PDO.

ensuite,

Citation:
mysql_select_db('avion',$db); // on se connecte dans phpmyadmin à la base avion qui contient les infos
tu ne te connecte pas à PHPMyAdmin mais à MySQL qui sont deux choses totalement différentes,

PHPMyAdmin est une interface web qui se connecte à MySQL pour pouvoir gérer tes bases de données (ajouter une base de donnée, ajouter une table, ...),

alors que MySQL est le serveur de base de données.

Citation:
$data = mysql_fetch_array($req);
ici tu utilise la fonction mysql_fetch_array() seulement imagine que t'a requête ne revoie pas de résultat, ton script plante car $req n'est pas une ressource exploitable par la fonction mysql_fetch_array().

il faut dans ce cas utiliser les structure de contrôle if(), ou while() :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
//si ta requête ne renverra qu'un seul résultat OBLIGATOIREMENT
//Comme par exemple pour récupérer les informations d'un utilisateur qui vient de se connecter
if( $data = mysql_fetch_array($req) ){
    //Traitement du résultat de la requête
}else{
    echo 'erreur aucune données n\'existe';
}
 
//Si ta requête risque de remonter plusieurs résultats
//Comme par exemple récupérer toutes les pages appartenant à la catégorie toto
while( $data = mysql_fetch_array($req) ){
    //Traitement des résultats
}
ensuite,

Citation:
if (strlen($data['num_bloc'])=0)
{
$num_bloc=" ";
}
else
{
$num_bloc="Bloc d'appartement n°".$data['num_bloc'];
}

if (strlen($data['num_bloc'])=0)
{
$num_porte=" ";
}
else
{
$num_porte="Porte n°".$data['num_porte'];
}
ici deux fois le même test (taille de la chaîne de caractère $data['num_bloc']),

tu pourrait regrouper alors tes deux traitements :
Code :
1
2
3
4
5
6
7
8
//Utilisation de la fonction empty() qui test si un variable n'est pas vide
if ( !empty($data['num_bloc']) { 
    $num_bloc=" ";
    $num_porte=" ";
}else{
    $num_bloc="Bloc d'appartement n°".$data['num_bloc'];
    $num_porte="Porte n°".$data['num_porte'];
}
La fonction empty().

Il te suffit alors d'utiliser les variables $num_bloc et $num_porte.
Exia93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2013, 19h13   #6
tanaka59
Membre du Club
 
Inscription : janvier 2011
Messages : 320
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 320
Points : 69
Points : 69
Hello

J'ai bien pris en compte vos codes

Merci
tanaka59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h53.


 
 
 
 
Partenaires

Hébergement Web