Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/08/2007, 21h07   #1
Invité de passage
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 2
Points : 2
Par défaut [SQL] Vérifier si un enregistrement existe

Bonjour à tous,

Voilà mon problème, je souhaiterais crée un site qui contient du php mais on n'a pas trop étudier ce type de langage en cours.

Je me déclare donc débutant total en la matière.

Donc voilà je voudrais inséré les donnees contenue dans ma table sql dans la cellule d'un tableau, or il peut y avoir des cas ou l'enregistrement au sein de la table soit inexistant et je n'arrive pas à afficher un message d'erreur du type "Aucune données actuellement" une des entré est au format date.

Je possède une table Calendrier avec les champs suivants :

Id_Calendrier (qui porte la propriété auto_increrment format small int)
Ca_Date_Debut (format DATE)
Ca_Date_Fin (format DATE)
Ca_Lieux (format varchar)
Ca_Division (format varchar) soit Nationnal D1, D2 ou D3
Ca_Region (format varchar)


Je souhaite donc afficher dans le tableaux dans une cellules la date et dans l'autre le lieux si l'enregistrement n'existe pas je souhaite afficher : "Aucune données actuellement".
Mamath76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 12h48   #2
Membre actif
 
Avatar de Momodedf
 
Inscription : juillet 2007
Messages : 246
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : juillet 2007
Messages : 246
Points : 176
Points : 176
Tu utilise une variable $lieu par exemple.
Donc tu vérifie si le champ lieu et vide, s'il l'est tu fait $lieu = "Aucune données actuellement" sinon tu fais $lieu = $tmy_array['Ca_Lieux'] et ensuite ya plus qu'à l'afficher.


Citation:
$retour = mysql_query('SELECT * FROM my_base');
while ($my_array = mysql_fetch_array($retour)) {
if ($my_array['Ca_Lieux'] = "") { $lieux = "Aucune données actuellement" }
else { $lieux = $my_array['Ca_Lieux'] }

// affichage
}
Momodedf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 15h49   #3
Invité de passage
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 2
Points : 2
Bonjour Momodedf

Merci de ta réponse, elle me semble intérressante car jamais essayer mais hélas il semblerait qu'il y ait un probleme avec une accolade et je ne vois pas ou.
Voici le code que j'ai un peu modifier car il me paraît plus lisible comme ca et tu verra comment je procède pour l' affichage si c'est la bonne méthode.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<?php
$retour = mysql_query("SELECT Ca_Date_Debut FROM calendrier WHERE `Ca_Division` = 'Nationnal' AND `Ca_Region` = 'Sud Ouest'") or die(mysql_error());
while ($my_array = mysql_fetch_array($retour)) 
{
if ($my_array['Ca_Lieux'] = "") 
{ 
$lieux = "Aucune données actuellement" 
}
else 
{ 
$lieux = $my_array['Ca_Lieux'] 
}
echo $lieux // affichage
}
?>
Sinon j'ai cette méthode qui affiche bien quand l'enregistrement existe mais aucun message quand il existe pas

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?php
$reponse = mysql_query("SELECT Ca_Date_Debut FROM calendrier WHERE `Ca_Division` = 'Nationnal' AND `Ca_Region` = 'Sud Ouest'") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
if (empty($donnees['Ca_Date_Debut']))
{
echo 'Aucune données actuellement';
}
else
{
echo $donnees['Ca_Date_Debut']; 
}
}
?php>
Mamath76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 16h05   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Dans le premier code il te manque les points virgules en bout de ligne et le test d'égalité c'est == et pas =.

Par contre pour le deuxième code c'est bizarre que tu n'ai rien dans le cas où la chaine est vide, tu es sûr qu'elle est vide justement et que c'est pas un espace par exemple ?


Pour l'orthographe on écrit "aucune donnée", et il y a un seul N à National.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 18h59   #5
Invité de passage
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 2
Points : 2
Amara merci de ta réponse,

Bon l'ajout du point virgule en fin de ligne à résolu le problème d'affichage mais cela n'affiche toujours pas le message d'erreurs.

Voici donc le code que j'ai corriger pour l'égalité et ou j'ai ajouter les ';'

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
$retour = mysql_query("SELECT Ca_Date_Debut FROM calendrier WHERE `Ca_Division` = 'National' AND `Ca_Region` = 'Sud Ouest'") or die(mysql_error());
while ($my_array = mysql_fetch_array($retour)) 
{
if ($my_array['Ca_Lieux'] == "") 
{ 
$lieux = "Aucune donnée actuellement" ;
}
else 
{ 
$lieux = $my_array['Ca_Lieux'] ;
}
 
echo $lieux; // affichage
 
}
?>
Sinon voici le deuxième bout de code qui te semblait bizarre

Citation:
Par contre pour le deuxième code c'est bizarre que tu n'ai rien dans le cas où la chaine est vide, tu es sûr qu'elle est vide justement et que c'est pas un espace par exemple ?
Alors je me suis peu etre mal exprimé donc pour bien faire compremdre mon idée, dans ma base cela donne un tableau comme ceci
------------------------------------------------------------------------
Id_Calendrier | Ca_Date_Debut |......Ca_Lieux......|.Ca_Division.|.Ca_Region
------------------------------------------------------------------------
........2........|...2007-08-25....|...berck sur mer...|......D1......|....France
........3........|...2007-09-15....|.villeneuve d'ascq.|.....D2......|.....France
........4........|...2007-10-21....|.villeneuve d'ascq.|.....D3.......|....France
........9........|...2008-06-08....|.......Brest........|Coupe de France|France
.......10.......|....2007-08-29...|.......rouen..........|..National...|.......Nord
.......12.......|....2007-08-29...|........Paris..........|..National...|Ile de France
-------------------------------------------------------------------------

Dsl pour la présentation du tableau

Pour completement illustrer en Nationnal les régions sont : Bretagne, Centre, Ile de France, Nord, Sud Ouest et Sud Est.
Moi dans mon code html je met dans la case du tableaux le bout de code php afin d'afficher l'information que je veux en modifiant ma requete SQL. Ici pour les régions Nord et Ile de France les informations s'affiche mais pour les autres régions il n'y a rien car les "lignes du tableau de ma base de données" sont inexistante c'est donc dans ce cas là que je souhaite afficher le message "Aucune donnée actuellement".

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?php
$reponse = mysql_query("SELECT Ca_Date_Debut FROM calendrier WHERE `Ca_Division` = 'National' AND `Ca_Region` = 'Sud Ouest'") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
if (empty($donnees['Ca_Date_Debut']))
{
echo 'Aucune donnée actuellement';
}
else
{
echo $donnees['Ca_Date_Debut']; 
}
}
?>
Merci d'avoir signaler ces quelques fautes d'ortographe car j'avoue que je suis pas champion et en plus j'ai en aucun cas vérifier

Merci
Mamath76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 09h48   #6
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Ok je comprends, pour tester il faut que tu utilises mysql_num_rows pour récupérer le nombre d'enregistrements répondant à la requête.

Code :
1
2
3
4
5
6
7
8
9
while ($my_array = mysql_fetch_array($retour)) 
$retour = mysql_query("SELECT Ca_Date_Debut FROM calendrier WHERE `Ca_Division` = 'National' AND `Ca_Region` = 'Sud Ouest'") or die(mysql_error());
if(mysql_num_rows($retour) == 0)
   echo "Aucune donnée actuellement";
else
{
  while ($my_array = mysql_fetch_array($retour)) 
     $echo $my_array['Ca_Lieux'];
}
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 15h16   #7
Invité de passage
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 2
Points : 2
Ok Merci de ta réponse Amara mais hélas ton idée semble ne pas fonctionner car ma page web me renvoyer ce message d'erreur

Citation:
Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\site_resultat_power_chair_football\Accueil.php on line 131
Enfin tu n'était vraiment pas loin du but car quelqu'un m'a conseiller ce code qui fait exactement ce que je veux :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$reponse = mysql_query("SELECT Ca_Lieux FROM calendrier WHERE `Ca_Division` = 'Nationnal' AND `Ca_Region` = 'Ile de France'");
if(!@mysql_num_rows($reponse))
{
echo 'Aucune donnée actuellement.';
}
else
{
while($donnees = mysql_fetch_array($reponse, MYSQL_ASSOC))
{
echo $donnees['Ca_Lieux'];
}
}
mysql_free_result($reponse);
Et je trouve que ce code ressemble beaucoup a ce que tu m'as proposé
Merci
Mamath76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 15h34   #8
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Il traînait un $ avant le echo dans mon code dsl.



Par contre dans le code que tu as mis je te conseille très vivement de virer le @ avant mysql_num_rows...
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 14h22   #9
Invité de passage
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 2
Points : 2
Oui merci désoler pour le $ devant j'avait pas du tout vu il va falloir que je sois plus attentif, merci pour le conseil d'enlever le @ en effet ça ma parut bizarre mais je me suis dit si il est la c'est qu'il sert à quelque chose mais meme enlever cela fonctionne, bon mon problème est résolut je vais pouvoir poursuivre

Merci à toi pour toutes l'aide apporter, le temps consacré et les conseilles.
Mamath76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h58.


 
 
 
 
Partenaires

Hébergement Web