Se connecter / S'enregistrer
Votre question

RESOLU (PHP/MySQL) Probleme syntaxe...

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
1 Mars 2006 14:08:46

Bonjour, je vais vous montrer mon code ( pris sur internet et modifié pour qu'il soit adapté a mes besoins). Ma page s' appelle resultat.php, le resultat s' affiche sur la meme page.
Ma base de donnée: essai
login: root
mdp: (aucun)
table concernée: unites_tbl

Citation :

<select name="nom"> <form method="post" action="resultat.php">

<?php
$db =("essai");
$serveur =("localhost");
$user =("root");
$pass =("");


mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');
$sql = 'SELECT * FROM unites_tbl';
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( !$nb[0] ) {
echo '<option>Aucun nom</option>';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
echo '<option value="'.$list['nom'].'">'.$list['nom'].'</option>';
}
}
mysql_close();
?>
</select>
<input type="submit" value="OK">

<?php
mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');
$sql = "SELECT * FROM unites_tbl WHERE nom = '".$_POST['nom']."';";
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb>0 ) {
echo 'Aucun noms d\' unité connu';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
}
}
mysql_close();
?>


Sa cré un menu déroulant ou ( normalement ) s' affiche le nom de l' unité contenu dans cette table: unites_tbl :

id nom PV Attaque BonusATQ BonusDEF
1 grenadier 200 20 50 10
2 cavalier 245 15 15 80
3 indigene 420 40 1 10
4 indien 40 100 50 100

Mais le probleme, c'est que le code ne trouve pas ma colonne "nom" et m' affiche : Aucun nom dans le menu déroulant. Je ne trouve pas l' erreur, qqun peut m' aider?

PS: dsl si le script est vraiment pourri car je debute la dedans, et je vois pas du tout ou sa plante

Autres pages sur : resolu php mysql probleme syntaxe

1 Mars 2006 14:36:27

Up!

Personne ne voit ? :-(
1 Mars 2006 15:06:20

Salut,

Pour commencer regarde ton test : if ( !$nb[0] ) {
Effectivement si tu as des resultats tu affiche aucun nom :/  hors c le contraire que tu fais :) 
Ton change le par if ( $nb == 0 ) {

Ensuite essaye de mieux structurer ton code, pour un debutant c deja pas mal, mais c'est pour eviter de te melanger.

Citation :

<?
$db =("essai");
$serveur =("localhost");
$user =("root");
$pass =("");

//connexion à la BD
mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');?>

<form method="post" action="resultat.php">
<select name="nom">
$sql = 'SELECT * FROM unites_tbl';
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb == 0 ) {
echo '<option>Aucun nom</option>';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
echo '<option value="'.$list['nom'].'">'.$list['nom'].'</option>';
}
}
mysql_close();
?>
</select>
<="submit" value="OK">
Contenus similaires
1 Mars 2006 15:13:11

Je te remercie, je mettrais des notes sur mon script ^^

bon j' ai sa:

Citation :


<select name="nom"> <form method="post" action="resultat.php">

<?php
//parametrage
$db =("essai");
$serveur =("localhost");
$user =("root");
$pass =("");
$table =("unites_tbl");

//connexion BdD
mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');


$sql = " SELECT * FROM $table ";
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb == 0 ) {
echo '<option>Aucun nom</option>';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
echo '<option value="'.$list['nom'].'" </option>';
}
}

//deco
mysql_close();
?>
</select>
<input type="submit" value="OK">

<?php

//connexion
mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');

$sql = "SELECT * FROM unites_tbl WHERE nom = '".$_POST['nom']."';";
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb>0 ) {
echo 'Aucun noms d\' unité connu';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
}
}

//deco
mysql_close();
?>

mais maintenant dans me menu déroulant, ya rien qui s' affiche ( meme plus Aucun nom )... Help please


1 Mars 2006 15:42:11

Tss relis un peu ton code :) 

regarde la ligne :

echo '<option value="'.$list['nom'].'" </option>';


essaye

echo '<option value=\"' .$list['nom'].' \">' .$list['nom'].' </option>';
1 Mars 2006 16:07:27

Yahooooooooo sa marche merci

Ya juste un bug, je selectionne mon item dans le menu déroulant, et quand je met ok, ba rien de s' affiche...

j' avais jamais utilisé les menu de ce genre avant, la je m' y connias pas mais je cris que sa vient de :

<select name="nom"> <form method="post" action="resultat.php">

blablabla

<i n p u t t y p e ="submit" value="OK"> ( dsl mais sa s' affiche pas sur le fofo autrement )
</select>

encore un poil d' aide svp...vraiment dsl

1 Mars 2006 16:13:20

essai ça :

[code]
<form method="post" action="resultat.php">
<select name="nom">

blablabla

</select>
<="submit" value="OK">
[code]
1 Mars 2006 16:18:58

ok merci sa fonctionne ^^

merci a tous !!!
1 Mars 2006 16:27:44

Ba en fait non sa marche pas, j' ai bien la liste, le boutton Ok fonctionne bien, mais quand j' appelle la page resultat1.php, ( j' ai coupé le code en 2 ) cette page m' affiche tjr: Aucun noms d' unité connu

c'est le msg d' erreur si ya rien, hors le nom de l' unité existe, mais sa m' affiche pas ses stats...

encore vraiment dsl de l' aide que je vous demande

PS: ma table unites_tbl:

id nom PV Attaque BonusATQ BonusDEF
1 grenadier 200 20 50 10
2 cavalier 245 15 15 80
3 indigene 420 40 1 10
4 indien 40 100 50 100


1 Mars 2006 18:32:34

Relis ton code ;)  Tu dis que si le résultat est supérieur à z&éro, il affiche une erreur!
if ( $nb>0 ) {

Remplace par
if ( $nb == 0 ) {
1 Mars 2006 18:35:36

merci, mais c'est deja remplacé, et s' a ne marche pas, de plus si dans ma deuxieme partie de code je met ce que tu m' a dit, sa me met deja Aucun nom... avant meme d' appuyer sur Ok...
1 Mars 2006 20:35:06

Ah...
Pourrais-tu mettre à jour les codes stp, et poster ce que tu as mis pour chaque fichier, qu'on voit ce qui ne va pas? Merci ;) 
1 Mars 2006 20:36:19

je te fais sa juste apres manger, avec capture d' ecran de mes tables
1 Mars 2006 20:57:53

Oki merci ;) 
1 Mars 2006 21:10:03

Voila alors sur la page résultat.php ( script principal )

Citation :

<form method="post" action="resultat1.php">
<select name="nom">


<?php

//paramètres
$db =("essai");
$serveur =("localhost");
$user =("root");
$pass =("");
$table =("unites_tbl");


//connection BdD
mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');

$sql = " SELECT * FROM $table ";
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb == 0 ) {
echo '<option>Aucun nom</option>';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
echo '<option value=\"' .$list['nom'].' \">' .$list['nom'].' </option>';

}
}

//fermeture base
mysql_close();
?>
<input type="submit" value="OK">
</select>


Page resultat1.php appelé par resultat.php:

Citation :

<?php

$db =("essai");
$serveur =("localhost");
$user =("root");
$pass =("");
$table =("unites_tbl");

mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');
$sql = "SELECT * FROM unites_tbl WHERE nom = '".$_POST['nom']."';";
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb == 0 ) {
echo 'Aucun noms d\' unité connu';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
}
}
mysql_close();
?>



Voila, ma table unites_tbl contenue dans la base de donnée essai:

http://img436.imageshack.us/img436/5069/table34te.jpg" alt="" class="imgLz frmImg " />

Voila voilou le dossier complet
2 Mars 2006 18:59:20

Up

voila toutes les infos, re-help please
2 Mars 2006 19:12:58

Déjà pourquoi ton "select" possède ton bouton ?

Il a pas à être imbriqué dedans...

Et la fin de ton <form> tu l'as mis ?
2 Mars 2006 19:17:28

j' ai essayé dans les 2 sens sa revient au même, le probleme ne vient pas de la ( le boutton Ok est tjr bon, mais j' ai l' impression que c'est ma requete qui foire. )
2 Mars 2006 19:26:41

C'est aps aprce que ca amrche que c'est bien ;) 

Désolé mais ton bouton a pas à être dans ton select...

Sinon pourquoi tu as un ";" avant le dernier dans :

  1. $sql = "SELECT * FROM unites_tbl WHERE nom = '".$_POST['nom']."';";


Sinon Avant toute chose tu fais un
  1. $nom=$_POST['nom'];
  2. echo $nom;


et tu vois la valeur qu'il te renvoit ;) 

En fonction de ca tu peux voir d'où vient le problème...
2 Mars 2006 19:32:50

voila, j' ai remis les balise dans l' ordre, et j' ai rajiouté ton bout de code, sur la page de résultat il s ' affiche:

Citation :
Aucun nom d' unité connu\\\"indigene


ou indigène est le nom de l' unité que l' on a selectionné dans la liste.
2 Mars 2006 19:36:00

Tu l'as mis où ton echo $nom ?

Mets le dès le début de ton code PHP ;-)
2 Mars 2006 19:39:12

Voila mis au debut du code:

Citation :
\\\"indigeneAucun nom d' unité connu


c'est pareil sauf qu'il est avant ^^
2 Mars 2006 19:40:34

Mais d'où il te choppe les :
  1. \\\"


C'est pour ca qu'il trouve pas...
2 Mars 2006 19:42:20

Ba je sais pas, yen a nul part des antislash, meme pas dans ma table
2 Mars 2006 19:45:35

Forcément :nono:

Remplace ca :

  1. echo '<option value=\"' .$list['nom'].' \">' .$list['nom'].' </option>';


Par ca :

  1. echo '<option value="' .$list['nom'].' ">' .$list['nom'].' </option>';


dans ta page d'affichage des resultat.php je crois...
2 Mars 2006 19:50:15

ok j' ai remplacé, plus d' erreur ^^

mais la c'est moi qui me suis planté, sa m' affiche pas la ligne de la table correspondante mais seulement le nom, c'est ou l' erreur ?
2 Mars 2006 19:52:00

C'est tout à fait normal...

Tu ne récupères que l'attribut 'nom' de ton résultat via :

  1. $list['nom']
2 Mars 2006 20:04:11

Ok, j' ai essayer d' uncorporer les autres, mais a chaque fois il me met:

Citation :
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ']' in C:\wamp\www\essai\resultat.php on line 24


je sais pas comment ecrire avec $list , le reste oui
2 Mars 2006 20:47:12

$list['nom'], $list['PV'], $list['Attaque'], $list['BonusATQ'], $list['BonusDEF']

Ca devrait fonctionner ;-)
2 Mars 2006 20:51:25

YAHOOOOOOOOOOOO sa fonctionne!!!!!!!!

j' ai plus qu' a organisé sa dans un petit tableau !!!

Yahooo merci a tous ceux qui ont répondu !!!!!!! :-D
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS